Как условно включить опции манифеста при создании JAR в ANT - PullRequest
2 голосов
/ 20 января 2011

Я использую ANT для управления несколькими проектами. У меня есть скрипт build-common.xml, который включает отдельные проекты. Некоторые проекты - это библиотеки, другие - программы. Для программ я хотел бы включить

<manifest>
    <attribute name="Main-Class" value="${main.class}"/>
</manifest>

в теге <jar>. Для библиотек я хотел бы иметь пустой тег jar следующим образом.

<target name="jar" depends="compile" description="generate a jar">
    <mkdir dir="${build}/jar" />
    <property name="jarfile" value="${jar}/${ant.project.name}.jar" />
    <jar jarfile="${jarfile}" basedir="${classes}">
    </jar>
</target>

Есть ли способ включить атрибут манифеста Main-Class, только если определено свойство main.class?

Спасибо!

1 Ответ

6 голосов
/ 20 января 2011

Использовать условные цели :

<target name="jar-mkdir" depends="compile" description="generate a jar">
  <mkdir dir="${build}/jar" />
  <property name="jarfile" value="${jar}/${ant.project.name}.jar" />
</target>

<target name="jar-main" depends="compile" description="generate a jar" if="main.class">
  <jar jarfile="${jarfile}" basedir="${classes}">
    <manifest>
      <attribute name="Main-Class" value="${main.class}"/>
    </manifest>
  </jar>
</target>

<target name="jar-nomain" depends="compile" description="generate a jar" unless="main.class">
  <jar jarfile="${jarfile}" basedir="${classes}">
  </jar>
</target>


<target name="jar" depends="compile, jar-mkdir, jar-main, jar-nomain" description="generate a jar">
</target>

Это будет запускаться jar-main (и добавлять манифест) только при наличии main.class.Когда его нет, jar-nomain будет работать.

...