2012-04-18 18 views
6

Sto creando un jar con Ant che utilizza anche un file manifest personalizzato. Il file build.xml crea tutto correttamente. Tuttavia, quando controllo il file manifest nel jar, le mie proprietà non sono presenti. Sembra che sia stato sostituito con il file MANIFEST.MF predefinito costruito da Ant. Il mio file di configurazione è di seguito:File di manifest personalizzato che sovrascrivono

<?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> 

Cosa devo cambiare per specificare il manifesto personalizzato invece del default il file Ant MANIFEST.MF?

+0

Mettere più attributi nel tag dovrebbe aiutare –

risposta

8

Credo che l'attività ant jar abbia un attributo manifest in cui è possibile specificare il file effettivo da utilizzare. In questo caso ci si fa riferimento il file creato con il compito manifesta

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

mi mancava l'attributo "manifestare" quando si definisce il vaso. Grazie! – Jason

+2

Il punto chiave è che non si può solo far apparire un file MANIFEST.MF come gli altri file, esso verrà ignorato dalla formica. Invece devi utilizzare direttamente l'attributo 'manifest' o l'elemento nidificato . –

Problemi correlati