链接Ant构建文件

Gra*_*ham 5 xml ant

我有一个客户端和一个服务器,我正在使用Ant构建.客户端在构建之前依赖于首先构建的服务器.我有所有必需的库,除了客户端中捆绑的服务器ear文件.

我在3个蚂蚁文件build.xml,build-client.xmlbuild-server.xml.(单击任何文件名以查看它们)文件build-client.xmlbuild-server.xml包含在内,build.xml以便它可以从中运行目标.

我遇到的问题是basedir变量从构建文件更改为构建文件.因此,如果我build-client.xmlbuild.xmlbasedir变量中运行目标是相对于build.xml.

如何在Ant脚本中多次更改basedir变量?

另外,看看这些构建文件,您是否看到了更好的方法来做我正在尝试做的事情?现在,我想我必须在同一个位置同时拥有客户端战争和服务器耳朵,然后才能制作最终的捆绑耳朵.我对此的想法可能有缺陷,因为这些脚本似乎不必要地复杂.

Pat*_* M. 5

任务的ant文档<import>您提供有关如何完成此任务的信息.

根据导入的文件解析文件

假设名为imports.xml的主构建文件导入位于文件系统任何位置的构建文件imported.xml,并且imported.xml从imported.properties中读取一组属性:

<!-- importing.xml -->
<project name="importing" basedir="." default="...">
  <import file="${path_to_imported}/imported.xml"/>
</project>

<!-- imported.xml -->
<project name="imported" basedir="." default="...">
  <property file="imported.properties"/>
</project>
Run Code Online (Sandbox Code Playgroud)

但是,此片段将针对imported.xml解析imported.properties basedir,因为basedirAnt会忽略imported.xml.使用imported.properties的正确方法是:

<!-- imported.xml -->
<project name="imported" basedir="." default="...">
  <dirname property="imported.basedir" file="${ant.file.imported}"/>
  <property file="${imported.basedir}/imported.properties"/>
</project>
Run Code Online (Sandbox Code Playgroud)

如上所述,${ant.file.imported}存储构建脚本的路径,该脚本定义了名为imported的项目(简而言之,它存储了imported.xml的路径)并<dirname>获取了其目录.此技术还允许将imported.xml用作独立文件(不在其他项目中导入).

基本上,您不能真正使用${basedir}变量,也不能使用basedir="./../GrahamsProjClient"项目标记中的属性,而是可以构造它:

<!-- build-client.xml -->
<project name="GPClient" default="dist" >

  <dirname property="client.root.dir" file="${ant.file.GPClient}"/>
  <property name="real.basedir" value="${client.root.dir}/../GrahamsProjClient"/>

  <!-- Then from then on, replace ${basedir} with ${real.basedir} -->
  ...
</project>
Run Code Online (Sandbox Code Playgroud)

您可以对build-server.xml执行相同的操作,唯一需要注意的是项目名称在${ant.file.[project name]}文件属性中有特色<dirname />.