java Ant复制任务忽略文件

lsmd5eda  于 2023-06-04  发布在  Java
关注(0)|答案(2)|浏览(157)

我有一个Ant复制任务(在Jenkins构建调用的Maven脚本中定义),它看起来是正确的,但复制不正确。任务定义为

<copy todir="./Virgo/config" overwrite="true" verbose="true">
    <fileset dir="${config.folder}">
        <include name="*.properties, *.xml" />
    </fileset>
</copy>

当我运行任务时,我可以看到指定了正确的目录,但是复制任务没有选择任何文件。源目录和目标目录都存在,我没有得到任何错误。我看到的是

14:52:40  [INFO] Executing tasks
14:52:40  [DEBUG] getProperty(ns=null, name=ant.reuse.loader, user=false)
14:52:40  [antlib:org.apache.tools.ant] Could not load definitions from resource org/apache/tools/ant/antlib.xml. It could not be found.
14:52:40       [echo] Copying files from ../com.x.y.z.container.build/config...
14:52:40  fileset: Setup scanner in dir C:\Jenkins\workspace\container-build\com.x.y.z.container.build\config with patternSet{ includes: [*.properties, *.xml] excludes: [] }
14:52:40  [INFO] Executed tasks

我尝试过将文件添加到源目录,使源文件比目标目录中的文件更新,甚至删除目标目录中的文件。让我感到困扰的是,fileset似乎不匹配任何文件,即使路径是正确的。有人见过这种行为吗?

f4t66c6m

f4t66c6m1#

在Ant手册的PatternSet部分中:http://ant.apache.org/manual/Types/patternset.html

  • 请注意,虽然includes和excludes属性接受多个由逗号或空格分隔的元素,但嵌套的<include><exclude>元素希望它们的name属性保持单一模式。*

您可以将脚本更改为

<copy todir="./Virgo/config" overwrite="true" verbose="true">
    <fileset dir="${config.folder}">
        <include name="*.properties" />
        <include name="*.xml" />
    </fileset>
</copy>
x6h2sr28

x6h2sr282#

对于那些困惑于为什么copy不工作的人来说,这可能是因为Copy task只会在源比目标新的情况下复制文件。
指定overwrite="true"以确保进行复制。

相关问题