我正在覆盖从共享build.xml编译的调用,以便在我的自定义构建中首先调用compile-generated。
我使用depends =“compile-generated,shared.compile”添加我的覆盖编译目标,如文档中所示和解释的那样。但是,我的编译生成的目标现在被称为覆盖目标的第一个依赖项,而不是(因为我需要它)最后一个依赖项。
有没有人知道如何修复它以便首先调用“shared.compile”的原始依赖项,并在调用编译目标时最后调用我的重写依赖项?
我的build.xml:
<?xml version="1.0"?>
<project name="ExternalTools" basedir="." default="jar">
<import file="../../../shared-build.xml" />
<target name="compile" depends="compile-generated, Shared.compile"/>
<target name="compile-generated">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.gen.dir}"
destdir="${classes.dir}"
classpathref="build.classpath"
debug="on"/>
</target>
</project>
共享“build.xml”编译目标:
<target name="compile" depends="prepare-staging-dirs,copy-dependlib-jars" description="Compile into stage directory">
<javac srcdir="${src.dir}"
destdir="${classes.dir}"
classpathref="build.classpath"
includeantruntime="false"
debug="on"/>
<copy todir="${classes.dir}">
<fileset dir="${src.dir}" includes="**/*.properties,**/*.xml,**/*.xsd,**/*.html" />
</copy>
</target>
答案 0 :(得分:0)
依赖关系不是有序的,它们是分层的。如果同一层次结构中的两个依赖项以不需要的顺序运行,则只需依赖另一个依赖项。
在您的情况下,您可以告诉compile-generated
依赖于您共享的compile
依赖项。
在共享build.xml中:
<target name="compile" depends="copy-dependlib-jars,prepare-staging-dirs">
<echo message="Running root.compile" />
</target>
<target name="copy-dependlib-jars">
<echo message="Running copy-dependlib-jars" />
</target>
<target name="prepare-staging-dirs">
<echo message="Running prepare-staging-dirs" />
</target>
自定义build.xml:
<import file="build.xml" />
<target name="compile" depends="compile-generated,root.compile">
<echo message="Running custom compile" />
</target>
<target name="compile-generated" depends="copy-dependlib-jars,prepare-staging-dirs">
<echo message="Running compile-generated" />
</target>
ant compile
copy-dependlib-jars:
[echo] Running copy-dependlib-jars
prepare-staging-dirs:
[echo] Running prepare-staging-dirs
compile-generated:
[echo] Running compile-generated
root.compile:
[echo] Running root.compile
compile:
[echo] Running custom compile