自动添加多个“部分”到清单?

时间:2010-09-23 14:34:59

标签: java ant manifest

我正在使用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,但看起来它在这个实例中不起作用。

这可能吗?

1 个答案:

答案 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>