sexta-feira, 5 de março de 2010

Criando Jar no Netbeans sem a pasta lib

Olá, povo

Às vezes é ruim utilizar o build do NetBeans para gerar arquivos Jar, uma vez que ele não cria apenas um arquivo, e sim o jar da sua aplicação e uma pasta chamada "lib", contendo os outros .jar que sua aplicação necessita pra rodar. Em alguns casos, principalmente na hora de colocar o sistema em produção, é desejável que o jar gerado contenha em si tudo o que precisa pra funcionar, sem depender de arquivos externos.

Para criar um arquivo Jar único, basta seguir estes passos:

1) Mude para a visão de visualização de arquivos;
2) Localize (e abra ;) o arquivo build.xml;
3) Insira o seguinte trecho de código no final do arquivo, antes da tag </project>


<target name="package-for-store" depends="jar">
<property name="store.jar.name" value="NOME_DO_SEU_PROJETO"/>


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


4) Troque, na segunda linha, a string "NOME_DO_SEU_PROJETO" para o nome do seu projeto (que está na segunda linha do "build.xml"; Salve o arquivo;
5) Selecione a opção "Clean and rebuild" (Limpar e construir). Certifique-se que o Netbeans criou a pasta "dist", contendo o jar da sua aplicação e a pasta "lib";
6) Clique com o botão direito sobre o arquivo "build.xml", selecione a opção "Run target" (executar destino), "Other targets" (Outros destinos) e a seguir "package-for-store".

Se tudo der certo (rezar é bom nessas horas), o NetBeans irá gerar uma pasta chamada "store", contendo um único arquivo Jar bonitinho, fofo, meigo e pronto pra ser distribuído por aí :D

É isso, té o/


Fonte