Out*_*mer 20 java ant build-automation build-process
我们有一个Apache ANT脚本来构建我们的应用程序,然后将生成的JAR文件签入版本控制(在本例中为VSS).但是,现在我们有一个更改,要求我们为这个项目构建2个JAR文件,然后检查两个到VSS.
将原始JAR文件检入VSS的当前目标通过某些属性发现JAR文件的名称.有没有一种简单的方法来"概括"这个目标,以便我可以重复使用它来检查任何名称的JAR文件?在一般语言中,这显然需要一个函数参数,但据我所知,在ANT中确实没有一个等价的概念.
Vla*_*mir 47
我建议在subant/antcall上使用宏,因为我发现宏的主要优点是你可以完全控制传递给宏的属性(特别是如果你想添加新的属性).
您只需从目标开始重构Ant脚本:
<target name="vss.check">
<vssadd localpath="D:\build\build.00012.zip"
comment="Added by automatic build"/>
</target>
Run Code Online (Sandbox Code Playgroud)
创建一个宏(注意复制/粘贴并用@ {file}替换):
<macrodef name="private-vssadd">
<attribute name="file"/>
<sequential>
<vssadd localpath="@{file}"
comment="Added by automatic build"/>
</sequential>
</macrodef>
Run Code Online (Sandbox Code Playgroud)
并使用您的文件调用宏:
<target name="vss.check">
<private-vssadd file="D:\build\File1.zip"/>
<private-vssadd file="D:\build\File2.zip"/>
</target>
Run Code Online (Sandbox Code Playgroud)
重构,"蚂蚁之路"
Chr*_*ail 21
通常认为版本控制二进制文件是一个坏主意,我不建议这样做.但是如果你绝对必须,你可以使用antcall结合param传递参数并调用目标.
<antcall target="reusable">
<param name="some.variable" value="var1"/>
</antcall>
<target name="reusable">
<!-- Do something with ${some.variable} -->
</target>
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到有关antcall任务的更多信息.
归档时间: |
|
查看次数: |
13433 次 |
最近记录: |