Автоматизировать добавление нескольких «разделов» в манифест? - PullRequest
6 голосов
/ 23 сентября 2010

Я использую 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 Ответ

4 голосов
/ 12 октября 2010

Вы можете сделать это с помощью задачи Manifest

<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
Имя второго атрибута: 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>
...