Estou usando o Maven 2.2.1 e, para construir meu projeto, usei este comando
mvn clean install -Dmaven.test.skip=true
No entanto, a construção falhou dizendo que não conseguiu encontrar um dos artefatos. No entanto, quando eu usei:
mvn clean install -DskipTests
tudo funcionou bem.
Até agora, estive pensando que esses 2 comandos são equivalentes. No entanto, esse link parece sugerir que -Dmaven.test.skip=true
também pula a compilação dos casos de teste.
No entanto, isso ainda não me explicou por que um comando está funcionando e outro não. Ficarei grato se alguém por favor me explicar isso.
-Dmaven.test.skip=true -DskipTests
? Um ou outro pode às vezes ser omitida, dependendo das circunstâncias, mas quem quer pensar sobre isso ..Respostas:
Como você observou,
-Dmaven.test.skip=true
pula a compilação dos testes. Mais ao ponto, ele pula a construção dos artefatos de teste. Uma prática comum para grandes projetos é ter utilitários de teste e classes base compartilhadas entre os módulos no mesmo projeto.Isso é feito com um módulo que exige um
test-jar
módulo construído anteriormente:Se
-Dmaven.test.skip=true
(ou simplesmente-Dmaven.test.skip
) for especificado, ostest-jar
s não serão construídos, e qualquer módulo que dependa deles falhará em sua construção.Por outro lado, quando você usa
-DskipTests
, o Maven não executa os testes, mas os compila e constrói o jar de teste, disponibilizando-o para os módulos subseqüentes.fonte
Eu tive alguma interdependência com os testes para criar o pacote.
O comando a seguir consegue substituir a necessidade do artefato de teste para concluir o objetivo:
fonte
Há uma diferença entre cada parâmetro.
A -DskipTests pula a fase de testes em execução, ou seja, no final deste processo, você terá seus testes compilados.
-Dmaven.test.skip = true ignora a fase de compilação e execução de testes.
Como o parâmetro -Dmaven.test.skip = true pula a compilação, você não tem o artefato de testes.
Para obter mais informações, basta ler a documentação da surfire: http://maven.apache.org/plugins-archives/maven-surefire-plugin-2.12.4/examples/skipping-test.html
fonte
Posso dar um exemplo que resulta com o mesmo problema, mas isso pode não dar uma resposta para sua pergunta. (Além disso, neste exemplo, estou usando meu conhecimento do Maven 3, que pode não se aplicar ao Maven 2.)
Em um projeto Maven multi-módulo (contém módulos
A
eB
, ondeB
dependeA
), você pode também adicionar uma dependência teste onA
partirB
.Essa dependência pode ter a seguinte aparência:
(para obter mais informações, consulte https://maven.apache.org/guides/mini/guide-attached-tests.html )
Observe que o projeto
A
produz artefato secundário com um classificador emtests
que as classes e os recursos de teste estão localizados.Se você construir seu projeto
-Dmaven.test.skip=true
, receberá um erro de resolução de dependência, desde que o artefato de teste não tenha sido encontrado em seu repositório local ou repositórios externos. O motivo é que as classes de teste não foram compiladas nem otests
artefato foi produzido.No entanto, se você executar sua construção com
-DskipTests
seutests
artefato, será produzido (embora os testes não sejam executados) e a dependência será resolvida.fonte
Para ignorar o caso de teste durante a instalação limpa maven, usei -DskipTests paramater no comando a seguir
na janela do terminal
fonte
O parâmetro -DskipTests pode não funcionar, dependendo da sua versão do plugin surefire.
Fonte: Detalhes do parâmetro Surefire
fonte
Durante a compilação do maven, você pode pular a execução do teste adicionando o seguinte plugin no pom.xml
fonte
mvn test