Mostrando las entradas con la etiqueta jar. Mostrar todas las entradas
Mostrando las entradas con la etiqueta jar. Mostrar todas las entradas

miércoles, 15 de mayo de 2013

[JAVA] Empaquetar aplicaciones y sus librerias en un solo jar con NetBeans

Por lo general cuando queremos empaquetar aplicaciones con NetBeans, cuando hacemos un Clean and Build se genera un jar con sus respectivas librerias fuera del jar. 

Si queremos que estas librerias se empaqueten también y generar un solo jar, solo se debe agregar el siguiente código al final del archivo build.xml antes del tag de cierre "</project>":

 <target name="package-for-store" depends="jar">  
     <!-- Cambien el valor de esta propiedad para dar el nombre al JAR,  
        sin la extensión .jar. No debe tener espacios.  
        <property name="store.jar.name" value="NombreDelJar"/>  
     -->  
     <property name="store.jar.name" value="NombreDelJar"/>  
     <!-- No editar nada después de esta línea -->  
     <property name="store.dir" value="store"/>  
     <property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>  
     <echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>  
     <delete dir="${store.dir}"/>  
     <mkdir dir="${store.dir}"/>  
     <jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">  
       <zipgroupfileset dir="dist" includes="*.jar"/>  
       <zipgroupfileset dir="dist/lib" includes="*.jar"/>  
       <manifest>  
         <attribute name="Main-Class" value="${main.class}"/>  
       </manifest>  
     </jar>  
     <zip destfile="${store.jar}">  
       <zipfileset src="${store.dir}/temp_final.jar"  
       excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>  
     </zip>  
     <delete file="${store.dir}/temp_final.jar"/>  
   </target>  

Después de esto, le damos Clean and Build, al proyecto y seguidamente, en el tab de Files, en NetBeans, le damos clic derecho al build.xml, y le damos clic a Run Target -> Other Targets -> package_for_store.

Una vez termine de empaquetar tendremos el jar deseado, en la carpeta "store" dentro de la carpeta del proyecto.