Sou iniciante no Maven e estou aprendendo a usá-lo em um projeto que estou desenvolvendo, mas percebi que sempre que vou realizar um teste do programa demora cerca de 10 minutos só para construir o jar e executar, ele extrai todas as minhas dependências (que não são poucas) e demora uma eternidade pra executar…
Existe alguma forma de contornar isso? Se não houver eu não consigo entender a vantagem dele em ambiente de produção visto que ele cobra um preço alto pela facilidade de gerenciar bibliotecas (tempo, e muito), estou achando ele muito útil pois ele rastreia até bibliotecas que eu nem imaginava que meu projeto iria usar, mas assim não é viável.
Não se usa maven em ambiente de produção, até onde sei.
O que se utiliza é o artefato gerado por ele, seja um jar executável, um war ou ear que será aplicado em um servidor e, sim, a maior vantagem é o gerenciamento das dependências e a construção deste artefato.
O @igorventurelli foi bem feliz na pergunta dele: os teus projetos são modulares? Quantos projetos são? como você montou o pom.xml?
Além disso, considere a capacidade de processamento da máquina, configuração da jvm para consumo de memória e outros detalhes que podem interferir no tempo de execução, como “onde e quando” o maven torna-se lento.
Eu estou desenvolvendo um back-end para desktop de um programa financeiro que já existe web, ou seja, o banco já existe e eu não vou implantar esse código que eu criei em um servidor.
Meu projeto não é modulado, é somente 1 projeto. Uma coisa simples CRUD mesmo, mas por ter que gerar relatórios em vários formatos, e também por usar bibliotecas externas, o maven quebrou um galhão nas dependencias. Meu POM.xml está abaixo:
Eu percebi que ele gera os artefatos e que tem um repositório local, mas toda vez que eu tento executar um teste ele extrai todas as dependencias tudo de novo,e torna o teste extremamente lento, será que existe alguma configuração no POM que faça com que ele use uma versão já extraida dos artefatos e sómente monte o Jar para realizar o teste?
Então, o maven só faz isso (baixar dependências e montar o artefato) quando você realizar um install ou package nele.
Caso faça apenas um teste, ele deve executar com o que já tem.
Talvez seja o caso de você definir um profile no pom.xml. Dê uma pesquisada sobre isso, provavelmente te ajude.
P.S.: Vi as dependências declaradas no pom.xml e posso te garantir que ele tem pouquíssimas dependências, comparadas a um sistema com que trabalho, que tem cerca de 200 dependências definidas no pom.xml.
Cara, seu pom.xml está bem completo.
Na declaração do maven-dependency-plugin, você coloca uma tag <execution> para extrair as dependências na fase de empacotamento da sua app. Acho que pode ser isso o que esteja atrapalhando.
Apenas para fins de testes, deixe o pom só para declarar as dependências (tag <dependencies>) e compile o projeto.
Diga se melhorou a performance.
Ele realmente deixou e de extrair as dependências, isso basicamente acabou com o problema da demora absurda que ele tinha. Agora ele cria somente o pacote de execução e eu copio esse pacote pra onde já tenho as dependências extraidas e kabum! funciona!!! um pouco trabalhoso, mas muito melhor que esperar 10 minutos de extração pra fazer um teste simples, obrigado @igorventurelli isso foi de grande ajuda.