ANT:按优先级顺序复制具有相同文件的多个文件集的内容

标签 ant build-process build

我正在尝试构建一个 Web 应用程序,它从多个位置获取它的类文件。这些位置可以包含相同的类文件。我需要能够指定一个优先级,以便在复制类时某些位置优先于其他位置。

我们有单独的 ant 脚本来构建 WAR 文件。这个构建是为了在我开发时在任何更改的类中进行热交换。所以这个构建必须很快。

例如,我的两个上课地点是:

  • /bin
  • /构建/类

我想将这两个目录中的类复制到: /web/WEB-INF/类

但是,如果这两个位置都包含相同的类文件,例如:

  • /bin/com/ben/Test.class
  • /build/classes/com/ben/Test.class

我希望/bin 中的文件始终优先。

所以在这个例子中:

  • 文件:/bin/com/ben/Test.class,将被复制。
  • 文件:/build/classes/com/ben/Test.class 将被忽略。

我当前的脚本如下所示:

<sync todir="${deploy}/WEB-INF/classes" verbose="true">
    <fileset dir="bin"/>
    <fileset dir="build/classes"/>
</sync>

这可行,但每次运行脚本时,悬挂文件都会被删除。我也不确定这里是否有任何优先级得到保证。

如有任何帮助,我们将不胜感激。

最佳答案

通过删除悬挂文件,您是指已经在“${deploy}/WEB-INF/classes”目录中的文件吗?

同步将清除目标目录中的现有文件,如果您不想发生这种情况,我建议您改用复制。

至于有一个优先级高的文件夹,你可以复制多次并覆盖现有文件。

  <copy todir="${deploy}/WEB-INF/classes" verbose="true">
    <fileset dir="build/classes"/>
  </copy>

  <copy todir="${deploy}/WEB-INF/classes" verbose="true"  overwrite="true">
    <fileset dir="bin"/>
  </copy>

现在,test.class 将从 build/classes 中复制,然后被 bin 中的 test.class 覆盖。

关于ANT:按优先级顺序复制具有相同文件的多个文件集的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/671867/

相关文章:

Python:从 wheel 或 sdist 运行测试

java - 使用 WINEPREFIX 的 ANT exec 任务

java - 如何在Eclipse中的antbuildfile中添加 Sonar

java - 用于同步本地与远程版本的 ANT 脚本

android - 跨库的 minSdkVersion 不一致(Android Studio 0.5.1 + Gradle 0.9)

ant - Ant 如何将从文件中读取的值转换为属性值?

delphi - 即使某个项目编译失败,如何尝试构建项目组中的所有项目

ant - 具有多个构建(配置文件)的模块的ivy存储库结构?

python - 如何判断waf选择的工具?

linux - 无法在 Linux Mint 15 中找到库 liboleaut32