我有一个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:Jenkinsworkspacecontainer-buildcom.x.y.z.container.buildconfig with patternSet{ includes: [*.properties, *.xml] excludes: [] }
14:52:40 [INFO] Executed tasks
我已经尝试将文件添加到源目录,使源文件比目标目录中的文件更新,甚至删除目标目录下的文件。让我困扰的是,fileset
似乎与任何文件都不匹配,即使路径是正确的。以前有人见过这种行为吗?
从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>
对于那些对copy
不起作用的原因感到困惑的人来说,这可能是因为"复制"任务只会在源文件比目标文件新的情况下复制文件。
指定overwrite="true"
以确保进行复制。