Как я могу заставить maven-release-плагин пропускать мои тесты?

Как я могу запустить плагин maven-release-плагин без запуска тестов?

Я пробовал

-Dmaven.test.skip=true 

и

-DskipTests 

и

-DpreparationGoals=clean

... пока не работает.

Да, я знаю, что я не должен выпускать, если тесты не пройдут, но у меня нет контроля над тем, чтобы мои коллеги писали надежные тесты.

Ответ 1

-Darguments="-DskipTests" - это то, что вы хотите, или явно настроить разветвленные исполнения в pom.

Ответ 2

-Darguments="..." передает аргументы процессу forked maven, но важно понимать, что здесь используются два разных ключа. -DskipTests заставляет maven не запускать никаких тестов, но тесты все еще компилируются (это важно, если у вас есть зависимости от типа тестового баннера). -Dmaven.test.skip=true заставляет maven даже не компилировать тесты, а это означает, что любые тестовые банки не будут сгенерированы.

Итак, вы должны использовать -Darguments, но чтобы пропустить тесты, использующие только skipTests, чтобы остановить их компиляцию, используйте maven.test.skip.

Ответ 3

Если вы просто хотите пропустить тесты интеграции, это сделает следующее:

-Darguments="-DskipITs"

Ответ 4

Чтобы пропустить весь 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>

Ответ 5

у вас слишком разные варианты, чтобы избежать и пропустить тесты с плагином релиза

  • Первый заключается в том, чтобы передать в качестве аргумента cli цель или этапы выпуска, указав -Darguments:

пример: 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.

После вы можете выполнить релиз.

Ответ 6

Ни один плагин maven не запускает компиляцию или выполнение теста. Это фазы жизненного цикла maven, которые запускают выполнение (-ы) одного или нескольких подключаемых модулей, когда они имеют ограниченные цели для определенной фазы.

Итак, просто выполнение одной цели плагина было бы достаточно без выполнения тестов:

mvn release:perform

или сочетаться с сборкой и упаковкой проекта:

mvn clean package release:perform