Mi?rcoles, 09 de septiembre de 2015

Empaquetado completo de jar con todo y librerías.

Tiempo atrás llego el requerimiento de tener todo lo que necesita la aplicación en un solo jar sin necesidad de que exista la carpeta lib que aparece cuando haces clean & build en Netbeans, esto para solo traspasar la aplicación y evitar el riesgo de que un usuario borre esa carpeta o alguna de las librerías o APIs, lo cual provocaría el mal funcionamiento de la aplicación como en el caso de usar un jdbc para conexión a servidores.

Para esta solución encontré que existe un documento llamado build.xml el cual se encarga de hacer la compilación de la aplicación y correr funciones del mismo.

Este es localizado en la parte de archivos en la parte izquierda de Netbeans, al cual daremos clic a él, se abrirá nuestra pestaña la cual buscaremos nuestro proyecto y buscaremos el archivo antes mencionado, para esto lo abriremos e incrustaremos el código que aparece abajo.

 

El siguiente código es incrustado antes del término del xml con la etiqueta </proyect> y cambiaremos donde dice Nombre_jar por el que queramos que tenga nuestra app.

<target name="package-for-store" depends="jar"> 

        <property name="store.jar.name" value="Nombre_jar"/> 

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

 

Nos quedara de la siguiente manera.

 

Después de haber colocado el nombre, guardamos los cambios.

Para empaquetar ahora tenemos que hacer los siguientes pasos.

  1. Ejecutar clean % buld.
  2. Hacer clic derecho a build.xml > Run Target > Other targets > package-for-store.

3. Al terminar de realizar nos dirigimos a donde guardamos nuestro proyecto y aparecerá una nueva carpeta con el nombre de store el cual contiene nuestro jar compilado con todas las librerías que utilizamos en el proyecto.

Para dudas o aclaraciones se pueden comunicar conmigo Daniel de Jesús Marin Ruvalcaba al correo [email protected]


Publicado por danielmarinr @ 13:03  | Java SE8
Comentarios (0)  | Enviar
Comentarios