Organizando bibliotecas .jar + projeto NetBeans em único arquivo .jar

Publicado por Pedro Ferrarezi em 12/06/2012

[ Hits: 10.871 ]

 


Organizando bibliotecas .jar + projeto NetBeans em único arquivo .jar



Recentemente tive um problema com a velha e boa pasta /lib, que o NetBeans cria na pasta do projeto sempre que adicionamos ao nosso projeto alguma biblioteca em forma de arquivo .jar, como é o caso dos drivers JDBC.

A princípio parece uma boa prática de organização, deixar separadas as bibliotecas da aplicação principal, pois as bibliotecas na maioria das vezes são feitas por terceiros. E o projeto é uma aplicação do programador que as está usando, sendo ainda esta aplicação muitas vezes proprietária, e as bibliotecas na maioria das vezes, distribuídas sob código GPL, Free etc.

Porém surgem problemas nesta prática de separar as bibliotecas da aplicação principal. Por exemplo, em caso de atualizações mal sucedidas, usuários 'mexelões', problemas de política de organizações que desejam que sua aplicação seja um único arquivo ".jar", entre outros casos que causam perda de tempo com suporte e manutenção.

Até mesmo alguns, como solução precária, abrem o ".jar" do projeto com um compactador/descompactador de arquivos ".zip" e 'jogam' as bibliotecas dentro dele 'na mão'. Mas além de não ser muito inteligente, esta 'solução' gasta tempo, pois toda vez que o projeto for recompilado, será necessário fazer isso novamente.

Por isso resolvi pesquisar e acabei encontrando soluções para evitar isso, e estou deixando a que mais me apraz: modificar o arquivo "build.xml" do projeto do NetBeans.

Segue abaixo o procedimento, que é simples e rápido:

Com seu projeto aberto e a(s) biblioteca(s) ".jar" adicionadas à ele, e tudo 'funcionando' devidamente, vá na aba 'arquivos' do "project inspector". Ou edite o arquivo "build.xml", que fica no diretório do seu projeto e coloque o código abaixo imediatamente antes da tag '</project>', que é a última tag do arquivo "build.xml":

<!-- Tags que criam um único JAR que tem todas as bibliotecas nele, no diretório 'store' -->  
    <target name="-post-jar">  
        <property name="store.jar.name" value="nome-da-minha-app"/> <!-- <-coloque o nome do seu .jar nessa tag -->    
        <property name="store.dir" value="store"/>  
        <property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>    
        <echo message="Packaging ${store.jar.name} 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>

Após isso, salve e feche o arquivo, e mande limpar e compilar o projeto.

Será criado o diretório "store" dentro do diretório do seu projeto com o arquivo ".jar", conforme o nome que você colocou na terceira linha do código acima.

Este arquivo tem todas as bibliotecas ".jar" adicionadas ao projeto incorporadas a ele, é a aplicação Java pronta para distribuir.

Espero ter ajudado, abraço a todos.

Outras dicas deste autor

Ubuntu 11.10 - Como usar o Notepad++ via Wine

Debian/Ubuntu - Conectando banco MySQL via rede com Java

Ubuntu 12.04 com Gnome 3 - Tunando a Aparência com Temas e Ferramentas

Sublime Text Editor 2 - Instalando e integrando no Ubuntu 12.04

Se o LAMP (Linux, Apache, MySQL e PHP) não funcionar no Debian

Leitura recomendada

Netbeans 6 vs OpenSuSE 10.3

Formatação numérica em sistema operacional Ubuntu não brasileiro

Eclipse Helios: Resolvendo problemas com o proxy

Promoção da Livraria Tempo Real e site Java Free

Como usar Looking Glass sem alterar seu sistema Linux

  

Comentários
[1] Comentário enviado por rony_souza em 12/06/2012 - 14:46h

Muito fera essa dica!

vlw abrass.



Contribuir com comentário