使用Ant构建其他依赖项目

问题描述 投票:3回答:2

[让我说我是蚂蚁新手,以此为序。就像这样,我只是在2天前才开始学习它,以完成此任务。

[我要做的是创建一个“主”蚂蚁脚本,该脚本调用其他几个蚂蚁脚本。例如:

Project A
 - contains build.xml, target "makeProjectAjar"
 - output: A.jar

Project B
 - contains build.xml, target "makeProjectBjar"
 - output: B.jar

Project C
 - contains build.xml, target "makeProjectCjar"
 - output: C.jar

Project D
 - contains build.xml, target "finalPackage"
 - Must first build Project A, Project B, Project C
 - Copy A.jar, B.jar, C.jar to Project D
 - Package all of this into D.jar

现在,我具有用于A,B和C的所有独立版本。通过这个,我的意思是我可以从这些文件夹中的任何一个运行“ ant”,它将构建项目并生成一个jar文件。如果以这种方式构建A,B和C,则我有3个jar文件。然后,我可以将它们复制到D中并将其包装到最终的jar中。很好。

但是我想要能够从Project D的build.xml中触发A,B和C构建。我已经尝试过:

<?xml version="1.0" encoding="UTF-8"?>

<project name="CommonJava" default="makeCommonJavaJar" basedir=".">

    <import file="../Common/build.xml"/>
    <import file="../CommonAndroid/build.xml"/>

    <target name="makeCommonJavaJar" description="Create a jar for the CommonJava project"
        depends="clean">
        <mkdir dir="build" />
        <jar jarfile="./build/commonjava.jar" includes="*.class" />
    </target>

    <target name="clean">
        <delete dir="build" />
    </target>

    <target name="build+package" description="Build all prerequisites and package them">
        <antcall target="makeCommonJar"/>
        <antcall target="makeAndroidJar"/>
    </target>
</project>

makeCommonJar是Common / build.xml(项目A)中的目标,而makeAndroidJar是../ CommonAndroid / build.xml(项目B)中的目标。但是,似乎在使用<import>时,它是从调用文件夹的上下文中运行的。意味着项目B引用的资源不可用,因为它是从项目D运行的。这有意义吗?

长话短说...使用Ant,如何在其他项目中调用build.xml文件以便首先构建那些项目?

java ant build target
2个回答
6
投票

这里有一些一般性准则(不是规则,Ant非常宽松):

  • 一个build.xml通常被设计为在特定项目上运行,因此它不会在其他版本中“导入”
  • import任务通常用于共享一些常见的构建技工,而不是像您正在执行的那样构建工作流。例如,通过诸如目标目录之类的某些属性来参数化构建jar的目标。
  • subantant任务是首选,用于触发其他项目的构建

因此,这看起来像项目D的build.xml:

<project name="CommonJava" default="makeCommonJavaJar" basedir=".">

    <target name="build-deps">
        <ant antfile="../Common/build.xml" target="makeCommonJar"/>
        <ant antfile="../CommonAndroid/build.xml" target="makeAndroidJar"/>
    </target>

    <target name="makeCommonJavaJar" depends="build-deps">
        <mkdir dir="build" />
        <jar jarfile="./build/commonjava.jar" includes="*.class" />
    </target>

</project>

请参见http://ant.apache.org/manual/Tasks/ant.html


0
投票

我遇到以下错误:C:... \ D \ build.xml:40:执行此行时发生以下错误:读取项目文件C:\ Users \ gqo1vz \ Desktop \ Projects \ PLMInfrastructure \ build.xml时出错:

© www.soinside.com 2019 - 2024. All rights reserved.