运维开发网

Java 扩展现有的ant路径标记

运维开发网 https://www.qedev.com 2020-03-11 14:10 出处:网络 作者:运维开发网整理
是否可以扩展ant构建文件中的现有路径标记?例如,我想扩展: <path id="project.classpath"> <pathelement path="build/classes" /> </path> 使用新路径= module / lib.这样结果相当于: <path id="project.classpath"> <pathelement path="build/classe
是否可以扩展ant构建文件中的现有路径标记?例如,我想扩展:

<path id="project.classpath">
  <pathelement path="build/classes" />
</path>

使用新路径= module / lib.这样结果相当于:

<path id="project.classpath">
  <pathelement path="build/classes" />
  <pathelement path="module/lib" />
</path>
如果您尝试这样的方法,则无法直接扩展现有路径:

<path id="project.classpath">
  <pathelement path="build/classes" />
</path>

<path id="project.classpath">
  <pathelement path="${ant.refid:project.classpath}" />
  <pathelement path="module1/lib" />
</path>

由于您正在尝试读取并同时设置路径的“圆形”,它将失败.

您可以通过添加额外的步骤来打破圆圈,从而实现您想要的效果.在每次设置路径之前,将当前值存储在<string>资源中:

<path id="cp">
  <pathelement path="build/classes" />
</path>
<echo message="${ant.refid:cp}" />

<string id="cps" value="${toString:cp}" />
<path id="cp">
  <pathelement path="${ant.refid:cps}" />
  <pathelement path="module1/lib" />
</path>
<echo message="${ant.refid:cp}" />

<string id="cps" value="${toString:cp}" />
<path id="cp">
  <pathelement path="${ant.refid:cps}" />
  <pathelement path="module2/lib" />
</path>
<echo message="${ant.refid:cp}" />

运行时产生类似这样的东西:

[echo] /ant/path/build/classes
[echo] /ant/path/build/classes:/ant/path/module1/lib
[echo] /ant/path/build/classes:/ant/path/module1/lib:/ant/path/module2/lib

您每次都将id重新分配给不同的路径.通常这是一个坏主意,因为您无法确定构建中每个点使用的路径:因此请小心使用.

0

精彩评论

暂无评论...
验证码 换一张
取 消