2012-04-18 25 views
6

Estoy creando un jar con Ant que también usa un archivo de manifiesto personalizado. El archivo build.xml crea todo correctamente. Sin embargo, cuando reviso el archivo de manifiesto en el contenedor, mis propiedades no están allí. Parece que está siendo reemplazado por el archivo predeterminado MANIFEST.MF creado por Ant. Mi fichero de construcción es el siguiente:Ant overwritting archivo de manifiesto personalizado

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

¿Qué tengo que cambiar para especificar el manifiesto personalizado en lugar del archivo predeterminado Ant MANIFIEST.MF?

+0

Poner más atributos en la etiqueta debería ayudar –

Respuesta

8

Creo que la tarea jar ant tiene un atributo de manifiesto donde puede especificar el archivo real para usar. En este caso que le hacen referencia al archivo que ha creado con la tarea de manifiesto

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

me estaba perdiendo el atributo "manifestar" la hora de definir el frasco. ¡Gracias! – Jason

+2

El punto clave es que no se puede ejecutar un archivo MANIFEST.MF como los otros archivos, sino que será ignorado por la hormiga. En cambio, usted TIENE que usar el atributo 'manifestar' o el elemento anidado directamente. –

Cuestiones relacionadas