java - 在 ant 脚本中模块化类路径(例如通过 refid)

标签 java ant build

由于我的 ant 文件非常复杂,我想模块化我的类路径元素。

目前,我使用 refid通过以下方式:

<path id="compile.classpath">
  <pathelement path="foo"/>
  <!-- ... -->
</path>

<path id="test.classpath">
  <path refid="compile.classpath"/>
  <pathelement path="bar"/>
  <!-- ... -->
</path>

<!-- ... -->

    <javac>
        <classpath refid="compile.classpath"/>
    </javac>

    <junit>
        <!-- ... -->
        <classpath>
             <path refid="test.classpath"/>
             <path path="bazz"/>
        </classpath>
    </junit>

<!-- ... -->

这是明智的做法吗?或者有更好的吗?

是否可以将路径 ID ( compile.classpath ) 用于类路径 refid(在 <javac> 中)? (目前有效,但refid确实要求元素是同一类型。由于pathclasspath都是类路径结构,它们是同一类型吗?)

最佳答案

我在之前的工作中成功地使用了这种方法,这确实是我保持一切正常的唯一方法。

我最终更进一步,将我所有的第三方库定义放在一个单独的 ext-libs.xml 文件中,因为其中几个是多 jar 库,并确保我拥有所有包含在我最后的 war 文件中的其中一些变得非常麻烦。这样,在我的主要 build.xml(和其他)中,我可以引用 lib.jaxb 而不必担心我更新了版本号在文件名中无处不在。

您已经找到了扩展编译类路径以创建测试类路径的技巧,所以您走在了正确的轨道上。

简而言之,继续。

关于java - 在 ant 脚本中模块化类路径(例如通过 refid),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9100167/

相关文章:

java - 如果失败,如何使 ANT Task <java> 显示详细错误?

java - 将类路径添加到 build.xml 的最佳方法

python - 如何在 Xcode 5 中构建 blender ?

.net - TeamCity 不会复制所有引用的库

scala - 每个 Scala 项目都针对特定的 sbt 版本吗?

java - 由于 setSelection(),EditText 中的文本删除停止

java - 非常简单的正则表达式问题

java - Java EE 应用程序的可扩展性。你会如何处理它?

java - 如何处理表格的行和列

java - Ant 子任务利用不同的 Java 版本