20 de fev de 2014

10 comandos valiosos no Maven que você precisa conhecer


Ao estudar um pouco mais o Maven identifiquei alguns comandos valiosos que podem ser úteis para avaliação do status atual do projeto. Vale a pena executar cada um deles para ver o que acontece!

1)Exibe as atualizações existentes para as dependências do projeto.

mvn versions:display-dependency-updates

Resultado semelhante a:
[INFO] The following dependencies in Dependencies have newer versions:
[INFO] commons-io:commons-io ..................................... 2.1 -> 2.4
[INFO] commons-logging:commons-logging ....................... 1.1.1 -> 1.1.3

2) Exibe as atualizações existentes para os plugins configurados no projeto.

mvn versions:display-plugin-updates
...
[INFO] All plugins with a version specified are using the latest versions.
[INFO]
[WARNING] The following plugins do not have their version specified:
[WARNING] maven-clean-plugin .......................... (from super-pom) 2.5
[WARNING] maven-compiler-plugin ....................... (from super-pom) 3.1
[WARNING] maven-deploy-plugin ......................... (from super-pom) 2.7
[WARNING] maven-install-plugin ........................ (from super-pom) 2.4
[WARNING] maven-jar-plugin ............................ (from super-pom) 2.4
[WARNING] maven-resources-plugin ...................... (from super-pom) 2.6
[WARNING] maven-site-plugin ........................... (from super-pom) 3.3
[WARNING] maven-surefire-plugin ...................... (from super-pom) 2.15
[INFO]
[WARNING] Project does not define minimum Maven version, default is: 2.0
[INFO] Plugins require minimum Maven version of: 2.2.1
[INFO] Note: the super-pom from Maven 3.0.4 defines some of the plugin
[INFO] versions and may be influencing the plugins required minimum Maven
[INFO] version.
[INFO]
[ERROR] Project does not define required minimum version of Maven.
[ERROR] Update the pom.xml to contain
[ERROR]
[ERROR] 2.2.1
[ERROR]

[INFO]
[INFO] Require Maven 2.0.2 to use the following plugin updates:
[INFO] maven-site-plugin ........................................ 2.0-beta-7
[INFO]
[INFO] Require Maven 2.0.6 to use the following plugin updates:
[INFO] maven-clean-plugin .............................................. 2.5
[INFO] maven-deploy-plugin ............................................. 2.7
[INFO] maven-install-plugin ............................................ 2.4
[INFO] maven-jar-plugin ................................................ 2.4
[INFO] maven-resources-plugin .......................................... 2.6
[INFO] maven-site-plugin ............................................. 2.0.1
[INFO] maven-surefire-plugin ......................................... 2.4.3
[INFO]
[INFO] Require Maven 2.0.9 to use the following plugin updates:
[INFO] maven-compiler-plugin ........................................... 3.1
[INFO] maven-surefire-plugin .......................................... 2.15
[INFO]
[INFO] Require Maven 2.1.0 to use the following plugin updates:
[INFO] maven-site-plugin ............................................. 2.1.1
[INFO]
[INFO] Require Maven 2.2.0 to use the following plugin updates:
[INFO] maven-site-plugin ............................................... 3.0
[INFO]
[INFO] Require Maven 2.2.1 to use the following plugin updates:
[INFO] maven-site-plugin ............................................... 3.3

3) Exibe a árvore detalhada de dependencias

mvn dependency:tree -Ddetail
...
[INFO] br.com.maven3.tutorial:hot.commands:jar:0.0.1-SNAPSHOT
[INFO] +- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] \- commons-io:commons-io:jar:2.1:compile

4)Exibe a lista de dependencias do projeto

mvn dependency:list
...
[INFO] commons-io:commons-io:jar:2.1:compile
[INFO] commons-logging:commons-logging:jar:1.1.1:compile

5) Exibe a versão completa do pom.

mvn help:effective-pom

6) Exibe a configuração do maven

mvn help:effective-settings

7)Exibe as variáveis de ambiente e de sistema

mvn help:system

8)Exibe o classpath das dependencias do projeto

mvn dependency:build-classpath

9)Exibe quais dependências são desnecessárias

mvn dependency:analyze
...
[WARNING] Unused declared dependencies found:
[WARNING] commons-logging:commons-logging:jar:1.1.1:compile
[WARNING] commons-io:commons-io:jar:2.1:compile

10)Exibe as dependências que estão duplicadas no projeto.

dependency:analyze-duplicate
...
[INFO] List of duplicate dependencies defined in in your pom.xml
:
o commons-io:commons-io:jar



Considerações Finais

Embora tais comandos possam informar que plugins ou dependências estejam desatualizados vale sempre a pena pensar duas vezes antes de aplicar atualizações que possam gerar efeitos colaterais. 

Atualizações devem ser seguidas de muitos testes. Testes devem abranger todas as áreas envolvidas do projeto. O tempo necessário para aplicar tais atualizações e/ou possíveis correções devem ser contemplados.
Pesquisa personalizada

0 comentários:

Postar um comentário

Leia as regras:
Todos os comentários são lidos e moderados previamente.
Apenas os que respeitam as regras abaixo serão publicados:
- o comentário deve estar relacionado ao assunto do post
- não serão aceitos palavrões e ofensas ao redator do blog ou a terceiros
- não inclua links desnecessários no conteúdo do comentário
- se quiser deixar sua url, comente com a opção OpenId
Obs.: os comentários dos leitores não refletem a opnião do blog.