2011-01-20 52 views
2

我正在使用ANT來管理多個項目。我有一個build-common.xml腳本,包含各個項目。有些項目是圖書館,其他項目是程序。對於程序,我想包括如何在ANT中創建JAR時有條件地包含清單選項

<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被定義?

謝謝!

回答

6

使用條件的目標

<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將運行。

+0

太棒了!這很有意義。我知道一些組件,但我不知道如何把它們放在一起。 – schmmd 2011-01-20 18:28:56

相關問題