Como posso obter o maven-release-plugin para ignorar meus testes?

177

Como posso executar o maven-release-plugin sem executar os testes?

eu tentei

-Dmaven.test.skip=true 

e

-DskipTests 

e

-DpreparationGoals=clean

... ainda nenhum trabalho.

Sim, eu sei que não devo liberar se os testes não passarem, mas não tenho controle sobre como fazer meus colegas de trabalho escreverem testes confiáveis.

Steven
fonte

Respostas:

406

-Darguments="-DskipTests" é o que você deseja, ou configurar explicitamente as execuções bifurcadas no pom.

bmargulies
fonte
1
Funciona para mim, obrigado e +1, mas ... Por que isso é necessário?
Javaonkey79
5
É necessário porque o processo de liberação bifurca um novo processo de preparação e os típicos -DskipTests não são transmitidos como propriedades do sistema.
Edd3
4
gostaria de poder votar em você 2. Passei horas tentando acertar isso ... mas 1. Perdi alguma coisa na documentação ou está faltando alguma documentação na MVN? 2. Eu havia <skipTests>true</skipTests>configurado no POM da minha empresa. Ainda não funcionou. O que funcionou foi a sua solução.
Pulak Agrawal
Você precisa de alguma configuração específica no pom para fazer isso funcionar?
DenCowboy
42

-Darguments="..."transmite argumentos para o processo de bifurcação bifurcada, mas é importante perceber que existem duas opções diferentes sendo usadas aqui. As -DskipTestsforças tentam não executar nenhum teste, mas os testes ainda são compilados (isso é importante se você tiver alguma dependência de um tipo de jar de teste). As -Dmaven.test.skip=trueforças tentaram nem mesmo compilar os testes, o que significa que quaisquer frascos de teste não serão gerados.

Portanto, você deve usar -Darguments, mas para ignorar os testes executando apenas o uso skipTests, para impedi-los de compilar o uso maven.test.skip.

Engenheiro de software
fonte
21

Se você apenas quiser pular os testes de integração, isso será feito:

-Darguments="-DskipITs"
David Gilks
fonte
3

você tem opções muito diferentes para evitar e pular testes com o plug-in de lançamento

  • A primeira é passar como argumento cli para o objetivo ou fases do release, fornecendo -Darguments:

exemplo: mvn -X -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true" -P release-mode release:prepare

-O segundo é executar esses argumentos no seu pom.xml na compilação assim:

<plugin>    
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.scm</groupId>
                        <artifactId>maven-scm-provider-gitexe</artifactId>
                        <version>1.9.4</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <skip>true</skip>
                    <skipTests>true</skipTests>
                    <preparationGoals>clean validate</preparationGoals>
                    <arguments>-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true</arguments>
                    <useReleaseProfile>false</useReleaseProfile>
                    <releaseProfiles>release-mode</releaseProfiles>
                    <tagNameFormat>TEST-@{project.version}</tagNameFormat>
                </configuration>
            </plugin>

Observe que o segundo método substitui o primeiro.

Eu recomendo que você prepare o release primeiro em uma única ação e, em seguida, você pode editar o arquivo release.properties no diretório de trabalho e procurar as exec.additionalArgumentspropriedades se seus argumentos estiverem lá. Será algo como: exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode.

Depois que você pode executar o lançamento.

idriss Eliguene
fonte
2

Para pular todo o teste de unidade, ele usa o argumento

-Dmaven.test.skip = true

então, se você quiser pular o teste de unidade, isso resolverá

mvn install -Dmaven.test.skip=true
mvn package -Dmaven.test.skip=true

ou, alternativamente, você pode definir skipTests no maven-surefire-plugin em

pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.12.4</version>
      <configuration>
         <skipTests>true</skipTests>
      </configuration>
</plugin>
Mfuon Leonard
fonte
2
Esta pergunta é especificamente sobre o plug-in de lançamento do Maven, portanto, esses não são os objetivos do Maven que serão usados.
19416 Jaap
-2

Nenhum plug-in maven literalmente aciona a compilação ou execução de teste. São as fases do ciclo de vida que desencadeiam a execução de um ou mais plug-ins, quando estes limitam os objetivos a uma fase específica.

Portanto, apenas executar uma única meta de plug-in seria suficiente sem executar testes:

mvn release:perform

ou combinar com a construção e o empacotamento do projeto:

mvn clean package release:perform
Yannis Sermetziadis
fonte