我有一个构建系统,其中许多组件完全相同,所以我一直在更改它以在大多数构建任务的常用文件上使用“导入”。然后,构建系统还需要构建它所依赖的任何模块。所以我粗略地...在Ant中嵌套导入
common.xml
project1.xml
- import common.xml
project2.xml
- include project1.xml
- import common.xml
在common.xml中有一个名为'build'的目标。我希望project2能够包含project1并使用扩展点来放置对构建目标的依赖。但由于某种原因,它不承认project1有构建目标。如果我将其更改为依赖于project1.xml中定义的目标,那就没问题。但我需要能够指定common.xml中的目标。
有没有办法做到这一点?
没有ant-contrib。该项目曾经使用过,但我试图摆脱它,所以我们没有可怕的程序构建系统代码。该项目有许多依赖关系的情况,看起来像钻石和适当的依赖关系图(蚂蚁自动生成的依赖关系图)将大有帮助。
因此,我创建一些简单的文件来说明我的问题。
<project name="top" default="build">
<include file="mid.xml" as="mid" />
<target name="build">
<antcall target="mid.build" />
</target>
</project>
<project name="mid" default="build">
<!-- <target name="build"> -->
<!-- <echo message="build mid" /> -->
<!-- </target> -->
<import file="common.xml" />
</project>
<project name="common">
<target name="build">
<echo message="build common" />
</target>
</project>
失败。 top.xml找不到mid.build。当我运行ant -p列出目标时,它显示build和common.build。所以我尝试添加到mid.xml构建文件中,并且正确地构建它。现在唯一的问题是,如果我取消上面的mid注释来定义自己的构建步骤,它会被导入覆盖并被忽略。所以它最终变成[build,common.build]而不是[build,mid.build]。