Crear un archivo JAR que incluya las librerias desde NetBeans

Estándar

De las formas de poner en producción un proyecto hecho en Java una de mis formas favoritas es generar un solo archivo JAR que contenga todo lo necesario para que el programa funcione, de modo que al momento de poner en producción solo necesite copiar un solo archivo y tal vez su configuración sin preocuparse de olvidar algún archivo JAR o de configuración interna.

Sin embargo, por defecto NetBeans no proporciona dicha opción o esta bastante escondida, por fortuna es posible agregarla gracias al uso de la utilidad ANT.

ANT

A Neat Tool, mejor conocido como ANT es una herramienta para manejar proyectos de desarrollo de Java, si es familiar con la herramienta make de los sistemas UNIX o Linux puede pensar en ANT como una versión modernizada de dicha herramienta y asi como make permite especificar varios objectivos los cuales determinan como compilar el proyecto o como prepararlo para producción, todo esto se especifica desde el archivo build.xml, el cual se crea automáticamente en todos los proyectos de NetBeans y el cual podemos modificar.

Modificando el archivo build.xml

Figura 1 - Proyecto

Figura 1 – Proyecto

Como puede ver en la figura, el archivo build.xml no aparece en la vista de proyecto por lo que debe de abrir la vista de archivos, ahí vera el archivo, dele doble clic para abrirlo.

Figura 2 - Build.xml

Figura 2 – Build.xml

Notara que por defecto todo esta comentado, al final de eso agregue el siguiente código:


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

        <!-- Change the value of this property to be the
name of your JAR, minus the .jar extension. It should not 
have spaces.
             <property name="store.jar.name" value="MyJarName"/>
        -->

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

        <!-- don't edit below this line -->

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

Este target “package-for-store” hace el truco, al ejecutarlo compila el proyecto y lo empaqueta en un archivo jar, el nombre de este archivo lo puede configurar modificando el valor de la propiedad “store.jar.name” que aparece marcada en rojo en el codigo.

Ejecutando el target package-for-store

Una vez que halla hecho los cambios en el archivo build.xml necesita correr el target “package-for-store”, hay dos formas de hacer eso

Primero puede hacer clic derecho sobre el archivo build.xml, seleccionar “Run Target->Other Targets->package-for-store” y Como puede ver en la imagen

Figura 3 - Target

Figura 3 – Target

La otra opcion es con el boton “Rerun with diferent paramateres”, el que aparece como dos flechas hacia la derecha de color verde claro a la izquierda de la consola, como muestra la figura puede seleccionar correr el target “package-for-store”

Figura 4 - Rerun

Figura 4 – Rerun

Hay un detalle muy importante con el ultimo método, solo le mostrara las opciones de ANT *después* de realizar una compilación, mi recomendación es limpiar y reconstruir el proyecto (hay un botón para eso en la barra de herramientas) y luego correr el target, de ese modo tendra la version mas actualizada de su proyecto y le aparcera el target “package-for-store”

Una vez que halla ejecutado el target “package-for-store” notara que una carpeta “Store” se a creado en su proyecto

Figura 5 - Store

Figura 5 – Store

Es en esta carpeta donde localizara el archivo Jar este ya contiene internamente las librerías que su programa necesita de modo que puede distribuirlo con solo copiar este archivo

Espero que la entrada fuera de utilidad y nos vemos en la proxima.

Referencias:
http://www.oracle.com/technetwork/articles/javase/single-jar-141905.html

Anuncios