直到现在我才尝试过,但我想从一开始就阻止它。
我有大约 50 个具有现有构建的项目.xml。现在我想创建一些 ant-script (call_needed_files.xml( 来调用依赖项目的 ant-script - 对于某些项目,我需要构建一些其他项目,因为它们需要这个 jar。
例如,我有这个配置:
Workspace
Project 1
call_needed_files.xml
build.xml
Project 2
call_needed_files.xml
build.xml
Project 3
call_needed_files.xml
build.xml
每个构建.xml都有一个目标"构建"和其他具有相同名称的目标。
<!-- project1/call_needed_files.xml -->
<project name="build project 1">
<!-- build.xml of the dependent projects -->
<ant antfile="../project2/call_needed_files.xml">
<ant antfile="../project3/call_needed_files.xml">
<!-- build.xml of the own project -->
<ant antfile="build.xml">
</project>
<!-- project2/call_needed_files.xml -->
<project name="build project 2">
<!-- build.xml of the dependent projects -->
<ant antfile="../project3/call_needed_files.xml">
<!-- build.xml of the own project -->
<ant antfile="build.xml">
</project>
<!-- project3/call_needed_files.xml -->
<project name="build project 3">
<!-- build.xml of the own project -->
<ant antfile="build.xml">
</project>
那么我如何防止项目 3 的构建调用两次?或者这是蚂蚁的"标准功能"?
是否有可能对所有这些项目使用"target depends='othertarget'"功能,这样我就不需要按正确的顺序调用项目?
是否有可能使用"目标依赖='其他目标'" 所有这些项目的功能,这样我就不需要调用 项目顺序正确?
你猜对了!在"依赖"下定义的目标仅执行一次。
https://ant.apache.org/manual/targets.html
从上面的网址:
在 A、B、C 执行之后,执行返回到 D 的依赖列表,该列表不会调用 B 和A,因为它们已经在 C 和 B 的依赖解析过程中分别作为 D 的依赖关系被调用
因此,您可以在"依赖"中添加这些目标,这些目标只需要执行一次。