Jak mogę sprawić, by wtyczka maven-release-plugin pominęła moje testy?


177

Jak mogę uruchomić wtyczkę maven-release-plugin bez wyzwalania testów?

próbowałem

-Dmaven.test.skip=true 

i

-DskipTests 

i

-DpreparationGoals=clean

... ale nic nie działa.

Tak, wiem, że nie powinienem publikować, jeśli testy nie przejdą, ale nie mam kontroli nad zmuszaniem moich współpracowników do pisania wiarygodnych testów.

Odpowiedzi:


406

-Darguments="-DskipTests" jest tym, czego chcesz, lub jawnie konfigurujesz rozwidlone wykonania w pom.


1
U mnie to działa, dzięki i +1, ale ... Czy to konieczne?
javamonkey79

5
Jest to konieczne, ponieważ proces wydania forkuje nowy proces Maven, a tpical -DskipTests nie są przekazywane jako właściwości systemu.
Eddie,

4
Chciałbym móc na ciebie głosować 2. Spędziłem godziny, próbując to naprawić ... ale 1. Czy brakuje mi czegoś w dokumentacji, czy w dokumentacji mvn czegoś brakuje? 2. <skipTests>true</skipTests>Skonfigurowałem w swojej firmie POM. Nadal nie działa. To, co zadziałało, było twoim rozwiązaniem.
Pulak Agrawal

Czy potrzebujesz określonej konfiguracji w pomie, aby to działało?
DenCowboy,

42

-Darguments="..."przekazuje argumenty do rozwidlonego procesu maven, ale ważne jest, aby zdać sobie sprawę, że używane są tutaj dwa różne przełączniki. Te -DskipTestssiły Maven, aby nie uruchamiać żadnych testów, ale badania wciąż są opracowywane (to ważne, jeśli masz jakiekolwiek zależności od rodzaju test-jar). Te -Dmaven.test.skip=truesiły Maven nawet nie skompilować testy, co oznacza, że nie zostaną wygenerowane jakieś test-słoiki.

Tak więc, musisz używać -Darguments, ale pomijać testy działające tylko przy użyciu skipTests, aby zatrzymać ich kompilację maven.test.skip.


21

Jeśli chcesz po prostu pominąć testy integracyjne, zrobisz to:

-Darguments="-DskipITs"

3

masz zbyt różne możliwości, aby uniknąć i pominąć testy z wtyczką do wydania

  • Pierwszym jest przekazanie argumentu cli do celu lub faz wydania poprzez podanie -Darguments:

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

-Drugi polega na wykonaniu argumentów w pliku pom.xml w kompilacji w następujący sposób:

<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>

Zwróć uwagę, że druga metoda zastępuje pierwszą.

Radziłem, abyś najpierw przygotował wydanie dla jednej akcji, a następnie możesz edytować plik release.properties na działającym obszarze i sprawdzić exec.additionalArgumentswłaściwości, jeśli istnieją argumenty. Będzie to wyglądać tak: exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode.

Po wykonaniu wydania.


2

Aby pominąć cały test jednostkowy, używa argumentu

-Dmaven.test.skip = true

więc jeśli chcesz pominąć test jednostkowy, to rozwiąże

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

lub alternatywnie możesz zdefiniować skipTests w maven-surefire-plugin w

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>

2
To pytanie dotyczy konkretnie wtyczki do wydania Maven, więc nie są to cele Mavena, które zostaną użyte.
Jaap

-2

Żadna wtyczka Maven dosłownie nie wyzwala kompilacji lub wykonania testu. To właśnie fazy cyklu życia maven wyzwalają wykonanie (e) jednej lub więcej wtyczek, jeśli mają one ograniczone cele do określonej fazy.

Zatem samo wykonanie jednego celu wtyczki wystarczyłoby bez wykonywania testów:

mvn release:perform

lub połącz z budowaniem projektu i pakowaniem

mvn clean package release:perform
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.