Uma das coisas mais incovenientes para iniciantes em Maven é ao gerar um .jar da aplicação as dependências não serem incluídas no .jar final ou o .jar não inicializar a execução. Entretanto algumas configurações bem simples podem resolver esse problema e incluir as dependências corretamente. Aproveitamos o projeto do post anterior e adicionamos o trecho que código abaixo.
<!-- CONFIGURAÇÕES DE BUILD RESPONSÁVEIS POR INCLUIR AS DEPENDÊNCIAS NO .JAR FINAL --> <build> <plugins> <!-- DEFINE O PLUGIN MAVEN RESPONSÁVEL POR COMPILAR O PROJETO SUA VERSÃO E O JDK UTILIZADO --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <!-- DEFINE AS CONFIGURAÇÕES DO MAVEN ASSEMBLER --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <!-- DEFINE QUAL É A CLASSE MAIN DA APLICAÇÃO --> <manifest> <addClasspath>true</addClasspath> <mainClass>br.com.semeru.datesynchronizer.RecoveryDateWitchURL</mainClass> </manifest> </archive> <!-- ADICIONO AO NOME DO JAR FINAL UM COMPLEMENTO DIZENDO QUE ELE CONTÉM AS DEPENDÊNCIAS --> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <!-- DETERMINO QUE O JAR GERADO INCLUIRÁ AS DEPENDÊNCIAS E ELAS SERÃO EMPACOTADAS JUNTO COM O PROJETO EM UM ÚNICO JAR --> <id>make-my-jar-with-dependencies</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
Após executarmos a build veremos algo similar a imagem abaixo, são criados dois .jars um com e outro sem as dependências. Esse jar pode ser startado por duplo clique, pelo DOS ou pelo Shell do GNU/Linux.
Além disso se abrirmos o jar com uma ferramenta como o winrar veremos que além das classes no nosso projeto, assinalados em vermelho, temos também outros diretórios, assinalados em azul, contendo as dependências e as classes compiladas das mesmas como podemos observar nos pontos indicados pelas setas.
Se você tem alguma dúvida relacionada ao conteúdo desse post sinta-se a vontade de comentar, criticar e/ou contribuir com o seu comentário. Além disso você pode acessar todo o código fonte desse projeto através do GitHub.
Olá Leandro, muito bom o tutorial, estou precisando disso, preciso gerar um .jar com toda a aplicação + o tomcat pelo maven, como ficaria?
É possível de alguma maneira incluir o banco?
Pra fazer isso o melhor seria usar o Spring Boot que lhe permite criar um .jar da sua aplicação com o Jetty ou o Tomcat embutido que é a opção padrão. Ou um .war que poder ser implantado como qualquer arquivo .war. Se você não conhece o Spring Boot pode dar uma fuçada aqui no blog por que tem diversos posts a respeito.
Qual comando você utilizou para montar ele no maven?(install, package, assembly?)
mvn clean install só olhar a pasta target que o jar estará lá.