2012-04-18 14 views
6

カスタムマニフェストファイルも使用するAntでjarを作成しています。 build.xmlファイルはすべてを正しく構築します。しかし、jarファイルのマニフェストファイルをチェックすると、プロパティは存在しません。これは、Antによって構築されたデフォルトのMANIFEST.MFファイルに置き換えられているようです。私のビルドファイルは以下の通りです:Antがカスタムマニフェストファイルを上書きする

<?xml version="1.0" ?> 

<property name="src" location="src" /> 
<property name="build" location="build" /> 
<property name="dist" location="dist" /> 

<target name="clean"> 
    <delete dir="${build}" /> 
    <delete dir="${dist}" /> 
</target> 

<target name="main" depends="compile, dist, build"> 
    <echo> 
     Building the .jar file. 
    </echo> 
</target> 

<target name="build"> 
    <mkdir dir="${build}" /> 
    <mkdir dir="${build}/META-INF" /> 
</target> 

<target name="compile" depends="build"> 
    <javac srcdir="${src}" destdir="${build}"/> 
</target> 

<target name="dist" depends="compile"> 
    <mkdir dir="${dist}/lib" /> 
    <manifest file="${build}/META-INF/MANIFEST.MF"> 
     <attribute name="Class-Path" value="MyGame.jar" /> 
     <attribute name="Main-Class" value="game.Game"/>  
    </manifest> 

    <jar jarfile="${dist}/lib/MyGame.jar" basedir="${build}" /> 

</target> 

私は、ファイルの代わりに、デフォルトのAnt MANIFEST.MFのカスタムマニフェストを指定するために変更するために何がありますか?

+0

で作成したファイルを参照したいjarファイルを定義するとき、私は「マニフェスト」属性が欠けていた –

答えて

8

jar antタスクには、使用する実際のファイルを指定できるマニフェスト属性があると思います。この場合、あなたはマニフェストタスク

タグでより多くの属性を置く

http://ant.apache.org/manual/Tasks/jar.html

<target name="dist" depends="compile"> 

    <mkdir dir="${dist}/lib" /> 

    <manifest file="${build}/META-INF/MANIFEST.MF"> 
     <attribute name="Class-Path" value="MyGame.jar" /> 
     <attribute name="Main-Class" value="game.Game"/> 
    </manifest> 

    <jar manifest="${build}/META-INF/MANIFEST.MF" jarfile="${dist}/lib/MyGame.jar" basedir="${build}" /> 

</target> 
+1

を助けるべきです。ありがとう! – Jason

+2

重要なポイントは、他のファイルと同様にMANIFEST.MFファイルをjarできないことです。これはantによって無視されます。代わりに 'manifest'属性またはネストされた要素を直接使用する必要があります。 –

関連する問題