Pular para o conteúdo

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

Dica publicada em Java / Miscelânea
Pedro Ferrarezi ferrarezux
Hits: 14.434 Categoria: Java Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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>
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Sublime Text Editor 2 - Instalando e integrando no Ubuntu 12.04

Backup poderoso e automatizado combinando 7-Zip + head + cron

Extendendo a classe ArrayList para criar listas sem repetição

Ubuntu 11.10 - Como usar o Notepad++ via Wine

Montando um servidor de remote desktop com NX Server

Dica 2 em 1: JavaFX no Ubuntu e instalação do plugin JavaFX no Netbeans 6.5 no Ubuntu

Java x Compiz ou Beryl

Melhorando a performance de sua Java Virtual Machine

Ubuntu 13.10 - Erro: após atualização, os menus da IDE Eclipse não são exibidos [Resolvido]

Treinamento gratuito online de Java

#1 Comentário enviado por rony_souza em 12/06/2012 - 14:46h
Muito fera essa dica!

vlw abrass.

Contribuir com comentário

Entre na sua conta para comentar.