Compilar com dependências no Java
Atualizado em:
Esta post explicará como compilar uma projeto Java encapsulando as dependências em um único jar.
Quando se constrói um projeto Java, sem um controle de dependências, como o Maven ou o Gradle, é necessário adicionar as bibliotecas manualmente, e assim, quando o projeto é compilado, um diretório 'lib' é criado e deve ser carregado junto com o jar principal.
Com essa simples solução, todas essas bibliotecas do diretório 'lib' são copiadas para o .jar principal, sendo apenas necessário esse para execução.
Para isso, edite o arquivo build.xml e adicione a tag <target> descrita abaixo, dentro da tag <project>, apenas substituindo [NOME_JAR_PROJETO] pelo nome do jar principal do seu projeto.
<target name="-post-jar">
<property name="store.jar.name" value="[NOME_JAR_PROJETO]"/>
<property name="store.dir" value="dist"/>
<property name="temp.dir" value="temp"/>
<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="${temp.dir}"/>
<mkdir dir="${temp.dir}"/>
<jar destfile="${temp.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>
<delete dir="${store.dir}"/>
<zip destfile="${store.jar}">
<zipfileset src="${temp.dir}/temp_final.jar"
excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
</zip>
<delete dir="${temp.dir}"/>
</target>
Seu build.xml deve ficar assim:
<?xml version="1.0" encoding="UTF-8"?>
<project name="meu_projeto" default="default" basedir=".">
<description>Builds, tests, and runs the project meu_projeto.</description>
<import file="nbproject/build-impl.xml"/>
<target name="-post-jar">
<property name="store.jar.name" value="meu_projeto"/>
<property name="store.dir" value="dist"/>
<property name="temp.dir" value="temp"/>
<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="${temp.dir}"/>
<mkdir dir="${temp.dir}"/>
<jar destfile="${temp.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>
<delete dir="${store.dir}"/>
<zip destfile="${store.jar}">
<zipfileset src="${temp.dir}/temp_final.jar"
excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
</zip>
<delete dir="${temp.dir}"/>
</target>
</project>
Fonte: https://www.oracle.com/technetwork/java/javamail/single-jar-141905.html
[]'s
Deixe um comentário