Ответ 1
-Darguments="-DskipTests"
- это то, что вы хотите, или явно настроить разветвленные исполнения в pom.
Как я могу запустить плагин maven-release-плагин без запуска тестов?
Я пробовал
-Dmaven.test.skip=true
и
-DskipTests
и
-DpreparationGoals=clean
... пока не работает.
Да, я знаю, что я не должен выпускать, если тесты не пройдут, но у меня нет контроля над тем, чтобы мои коллеги писали надежные тесты.
-Darguments="-DskipTests"
- это то, что вы хотите, или явно настроить разветвленные исполнения в pom.
-Darguments="..."
передает аргументы процессу forked maven, но важно понимать, что здесь используются два разных ключа. -DskipTests
заставляет maven не запускать никаких тестов, но тесты все еще компилируются (это важно, если у вас есть зависимости от типа тестового баннера). -Dmaven.test.skip=true
заставляет maven даже не компилировать тесты, а это означает, что любые тестовые банки не будут сгенерированы.
Итак, вы должны использовать -Darguments
, но чтобы пропустить тесты, использующие только skipTests
, чтобы остановить их компиляцию, используйте maven.test.skip
.
Если вы просто хотите пропустить тесты интеграции, это сделает следующее:
-Darguments="-DskipITs"
Чтобы пропустить весь unit test, он использует аргумент
-Dmaven.test.skip = истина
поэтому, если вы хотите пропустить Unit test, это решит
mvn install -Dmaven.test.skip=true
mvn package -Dmaven.test.skip=true
или, альтернативно, вы можете определить skipTests в maven-surefire-plugin в
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>
у вас слишком разные варианты, чтобы избежать и пропустить тесты с плагином релиза
пример: mvn -X -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true" -P release-mode release:prepare
-The второй - выполнить эти аргументы в вашем pom.xml в сборке следующим образом:
<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>[email protected]{project.version}</tagNameFormat>
</configuration>
</plugin>
Обратите внимание, что второй метод переопределяет первый.
Я рекомендовал вам подготовить релиз сначала по одному действию, а затем вы можете отредактировать файл release.properties в рабочем каталоге и посмотреть свойства exec.additionalArguments
если ваши аргументы есть. Это будет выглядеть так: exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode
.
После вы можете выполнить релиз.
Ни один плагин maven не запускает компиляцию или выполнение теста. Это фазы жизненного цикла maven, которые запускают выполнение (-ы) одного или нескольких подключаемых модулей, когда они имеют ограниченные цели для определенной фазы.
Итак, просто выполнение одной цели плагина было бы достаточно без выполнения тестов:
mvn release:perform
или сочетаться с сборкой и упаковкой проекта:
mvn clean package release:perform