我正在使用ant为.jar生成MANIFEST.MF
,我需要根据目录中的文件列表添加多个manifest <section>
块。但是,我需要在构建时自动执行此过程,因为列表将在开发和部署之间发生变化。
例如:
<manifest file="MANIFEST.MF">
<foreach files="./*">
<section name="section">
<attribute name="Attribute-Name" value="$file"/>
</section>
</foreach>
</manifest>
我从Ant-contrib看过foreach
,但看起来它在这个实例中不起作用。
这可能吗?
答案 0 :(得分:4)
您可以使用Manifest task
执行此操作<manifest file="MANIFEST.MF">
<section name="section">
<attribute name="Attribute-Name" value="value"/>
</section>
<section name="section/class1.class">
<attribute name="Second-Attribute-Name" value="otherValue"/>
</section>
</manifest>
它将生成此清单:
清单 - 版本:1.0
创建者:Apache Ant 1.7姓名:部分
属性名称:值名称:section / class1.class
Second-Attribute-Name:otherValue
您可以维护两个不同的自定义任务来处理不同的情况,并在正确的时刻调用正确的任务。
对于“自动”管理:
<target name="manifest-generation">
<foreach param="file" target="manifest">
<path>
<fileset dir=".">
<include name="**/*.class"/>
</fileset>
</path>
</foreach>
</target>
<target name="manifest">
<manifest file="MANIFEST.MF" mode="update">
<section name="${file}">
<attribute name="Attribute-Name" value="value"/>
</section>
</manifest>
</target>