gpt4 book ai didi

java - 为什么我的 Ant 主构建文件不能正常工作?

转载 作者:行者123 更新时间:2023-11-30 09:58:37 25 4
gpt4 key购买 nike

我们有一堆 Ant 脚本,每个子项目一个。最后,我们希望从主构建脚本运行所有这些,并进行一些其他清理工作以打包整个项目。每个单独的 Ant 脚本都被命名为 ant.xml 并且位于其项目的子目录中。每个都使用 Ant import 导入 ant-commons.xml,然后覆盖其中的一些特定目标。

例如,其中一个项目覆盖了 compile 目标,适本地设置了 classpath,并设置了 sourcetarget 到 1.5(ant-commons 使用 1.4)

现在,从理论上讲,这一切听起来都很简单。这是主构建脚本:

<project name="Retain" basedir="." default="main">
<target name="main">
<ant dir="SharedJava" antfile="ant.xml" target="clean"/>
<ant dir="SharedJava" antfile="ant.xml" target="copy_current"/>
<ant dir="GWEasySoap" antfile="ant.xml" target="clean"/>
<ant dir="GWEasySoap" antfile="ant.xml" target="copy_current"/>
<ant dir="RetainLib" antfile="ant.xml" target="clean"/>
<ant dir="RetainLib" antfile="ant.xml" inheritAll="false" target="copy_current"/>
<ant dir="RetainIndex" antfile="ant.xml" target="clean"/>
<ant dir="RetainIndex" antfile="ant.xml" target="copy_current"/>
<ant dir="RetainPersist" antfile="ant.xml" target="clean"/>
<ant dir="RetainPersist" antfile="ant.xml" target="copy_current"/>
</target>
</project>

实际发生了什么:

前几个子项目运行良好。 RetainLib,实际上需要引用 SharedJava 的 jar,然后失败,提示找不到它。当我删除 RetainLib 时,RetainIndex 失败,提示您不应该在 1.4 目标文件中使用泛型。

在尝试之后,我很简单地确定这些是坚持在 ant-commons 中运行编译目标而不是被覆盖的目标。

为什么?我该如何解决这个问题? (我的意思是优雅 - 显然我可以完全删除 ant-commons 的使用,我打赌一切都会奏效。)

最佳答案

我建议在任务上使用 inheritAll="false" 属性。您看到的问题与主文件的 basedir 和其他属性导致子项目的相对路径出现问题有关。

我还会放开 dir=".." 属性以确保子项目 basedirs 获胜。

所以这就是我要做的......

<project name="Retain" basedir="." default="main">
<target name="main">
<ant antfile="SharedJava/ant.xml" target="clean" inheritAll="false"/>
<ant antfile="SharedJava/ant.xml" target="copy_current" inheritAll="false"/>
<ant antfile="GWEasySoap/ant.xml" target="clean" inheritAll="false"/>
<ant antfile="GWEasySoap/ant.xml" target="copy_current" inheritAll="false"/>
...
</target>
</project>

关于java - 为什么我的 Ant 主构建文件不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/748903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com