java - Ant:如何知道十个复制任务中的至少一个复制任务是否真正复制了文件

标签 java ant copy if-statement properties


我有一个有多个复制任务的目标;它基本上将常见的 jar 文件从集中位置复制到应用程序的 lib 文件夹中。
由于这是一项常规复制任务,只有当 jar 比 lib 文件夹中当前的 jar 更新时,才会复制该 jar。
这是 build.xml 中的相关部分:

<target name="libs"/>  
  <copy file=... />  
  <copy file=... />  
  <copy file=... />  
  <antcall target="clean_compiled_classes"/>  
</target>  
<target name="clean_compiled_classes" if="anyOfTheLibsWereCopied">  
  <delete .../>  
</target>

我正在寻找一种方法,根据是否有任何文件实际更改,在 libs 目标中的 ant 调用之前设置 anyOfTheLibsWereCopied 属性。

谢谢,
伊泰

最佳答案

我建议看看 Uptodate任务。我以前从未使用过它,但我想您正在尝试做的事情将按照以下方式实现:

<target name="libs"/>
  <uptodate property="isUpToDate">
    <srcfiles dir="${source.dir}" includes="**/*.jar"/>
    <globmapper from="${source.dir}/*.jar" to="${destination.dir}/*.jar"/>
  </uptodate>
  <!-- tasks below will only be executed if
       there were libs that needed an update -->
  <antcall target="copy_libs"/>  
  <antcall target="clean_compiled_classes"/>  
</target>

<target name="copy_libs" unless="isUpToDate">  
  <copy file=... />  
  <copy file=... />  
  <copy file=... />
</target>

<target name="clean_compiled_classes" unless="isUpToDate">  
  <delete .../>
</target>

您的另一个选择是实现您自己的 ant 任务来执行您想要的操作。但这需要更多的工作。

关于java - Ant:如何知道十个复制任务中的至少一个复制任务是否真正复制了文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4533925/

相关文章:

java - 为什么 JUnit 测试在 Ant Build System 中失败?

ant - Ant 1.8.0 版本中的类路径、路径和路径元素记录在哪里?

java - 使用网格/节点在多个虚拟机上运行并行 Selenium 测试

ios - XCode (4.6.3) 在复制资源阶段调用 TiffUtil

javascript - 使用 Javascript trim 并发送到剪贴板

c# - 复制并粘贴到DataGridView单元格(C#)

Java 断言错误

java - eclipse中如何进行代码格式切换?

java - 让生成的测试正确报告结果

java - 改造不同的调用和响应 json 主体