加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – 链接Ant构建文件

发布时间:2020-12-16 23:17:18 所属栏目:百科 来源:网络整理
导读:我有一个客户端和一个服务器,我正在使用Ant构建.客户端在构建之前依赖于首先构建的服务器.我有所有必需的库,除了客户端中捆绑的服务器ear文件. 我创建了3个ant文件 build.xml , build-client.xml 和 build-server.xml .(单击任何文件名以查看它们)文件 build
我有一个客户端和一个服务器,我正在使用Ant构建.客户端在构建之前依赖于首先构建的服务器.我有所有必需的库,除了客户端中捆绑的服务器ear文件.

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

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

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

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

解决方法

ant documentation for< 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>

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

<!-- imported.xml -->
<project name="imported" basedir="." default="...">
  <dirname property="imported.basedir" file="${ant.file.imported}"/>
  <property file="${imported.basedir}/imported.properties"/>
</project>

如上所述,${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>

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读