为了简单地解释它,这里是一个例子:
在 build.xml 中,导入 local-db.xml。在local-db.xml 中,有一个名为“warmup”的目标,它使用task 调用第三个文件的一个目标——local-gr.xml。
所有公共属性和类路径定义都被导入并在 build.xml 中设置。
在 project.properties 中:
dest-dir=./destination
Run Code Online (Sandbox Code Playgroud)
在 build.xml 中:
<path id="gr-classpath"> ... </path>
<import file="local-db.xml" />
Run Code Online (Sandbox Code Playgroud)
在本地 db.xml 中:
<ant antfile="local-gr.xml" target="deploy" inheritAll="true" inheritRefs="true" />
Run Code Online (Sandbox Code Playgroud)
在 local-gr.xml 中,有两个这样的目标:
<target name="deploy">
<tar ....../>
<foreach list="${list1}" delimiter="," parallel="true" trim="true" param="item" target="deploy-single" />
</target>
<target name="deploy-single">
something using property ${dest-dir} and path "gr-classpath"
</target>
Run Code Online (Sandbox Code Playgroud)
现在问题来了:
属性${dest-dir}和路径“gr-classpath”可以在“deploy”中使用,因为我设置了inheritAll和inheritRefs,但不能在“deploy-single”中直接使用。当目标被 foreach 调用时,“继承”不会?
在 的帮助下,我设法将 ${dest-dir} 传递给“deploy-single”,但我没有找到任何方法将类路径引用“gr-classpath”传递给“deploy-single”。
我为解决它所做的工作是在“deploy-single”中再次声明,但我根本不喜欢它。
为什么会发生这种情况?我该怎么做才能让它更优雅?
默认情况下,ant-contribforeach任务不会传播对其目标的所有属性和引用。但它确实有inheritall和inheritrefs属性,你可以用它来做到这一点。
<foreach list="${list1}" delimiter="," parallel="true" trim="true"
param="item" target="deploy-single"
inheritall="true" inheritrefs="true"
/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
829 次 |
| 最近记录: |