代码之家  ›  专栏  ›  技术社区  ›  Phillip B Oldham

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

  •  6
  • Phillip B Oldham  · 技术社区  · 14 年前

    我正在使用Ant生成 MANIFEST.MF 对于.jar,我需要添加多个清单 <section> 基于目录中文件列表的块。但是,我需要在构建时自动执行该过程,因为列表将在开发和部署之间发生更改。

    例如:

    <manifest file="MANIFEST.MF">
      <foreach files="./*">
        <section name="section">
          <attribute name="Attribute-Name" value="$file"/>
        </section>
      </foreach>
    </manifest>
    

    我看过 foreach 来自Ant-Contrib,但在这种情况下它看起来不工作。

    这有可能吗?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Colin Hebert    14 年前

    你可以用 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

    名称:剖面
    属性名:值

    名称:节/Class1.Class
    第二属性名称: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>