Eu tenho um grande projeto Maven com muitos módulos e muitos pom.xml
arquivos. O projeto mudou e suspeito que os poms contenham algumas dependências desnecessárias. Existe um comando que remove quaisquer dependências não utilizadas de um pom?
Eu tenho um grande projeto Maven com muitos módulos e muitos pom.xml
arquivos. O projeto mudou e suspeito que os poms contenham algumas dependências desnecessárias. Existe um comando que remove quaisquer dependências não utilizadas de um pom?
Respostas:
O Plugin de Dependência do Maven ajudará, especialmente o dependency:analyze
objetivo:
dependency:analyze
analisa as dependências desse projeto e determina quais são: usadas e declaradas; usado e não declarado; não utilizado e declarado.
Outra coisa que pode ajudar a fazer uma limpeza é o relatório de Convergência de Dependências do plug-in de relatórios de informações do projeto Maven .
ignoreNonCompile
opção pode ser configurada como true.
Você pode usar dependency:analyze -DignoreNonCompile
Isto irá imprimir uma lista de usados não declarado e não utilizados declarados dependências (ignorando runtime
/ provided
/ test
/ system
escopos para análise de dependência não utilizado.)
Cuidado ao usar isso, runtime
pois algumas bibliotecas usadas são consideradas não utilizadas!
Como já foi dito, você pode usar a dependência: analise o objetivo para descobrir quais dependências são usadas e declaradas, usadas e não declaradas ou não usadas e declaradas. Você também pode encontrar dependência: analy-dep-mgt útil para procurar incompatibilidades na seção dependencyManagement.
Você pode simplesmente remover dependências diretas indesejadas do seu POM, mas se elas forem introduzidas por jarros de terceiros, poderá usar as <exclusions>
tags em uma dependência para excluir os jarros de terceiros (consulte a seção intitulada Exclusões de dependência para obter detalhes e algumas discussões) . Aqui está um exemplo que exclui o registro comum da dependência do Spring:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.5</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
Você já viu o plug-in de dependência do Maven ? Isso não removerá nada para você, mas possui ferramentas para permitir que você faça a análise por conta própria. Estou pensando particularmente em
mvn dependency:tree
Eu tive um tipo semelhante de problema e decidi escrever um script que remove as dependências para mim. Usando isso, consegui remover metade das dependências com bastante facilidade.
http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependencies.html
mvn dependency:analyze
. Ele apenas tenta remover todas as dependências e verifica se mvn install
funciona.