Как я могу получить maven-release-plugin, чтобы пропустить мои тесты? - PullRequest
173 голосов
/ 31 декабря 2011

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

Я пробовал

-Dmaven.test.skip=true 

и

-DskipTests 

и

-DpreparationGoals=clean

... пока ничего не работает.

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

Ответы [ 6 ]

396 голосов
/ 31 декабря 2011

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

40 голосов
/ 08 февраля 2013

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

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

21 голосов
/ 24 сентября 2012

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

-Darguments="-DskipITs"
3 голосов
/ 28 июня 2016

Чтобы пропустить весь модульный тест, он использует аргумент

-Dmaven.test.skip = true

, поэтому, если вы хотите пропустить модульный тест, это будетрешить

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

или вы можете определить skipTests в плагине maven-surefire в

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 голосов
/ 07 июня 2018

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

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

пример: mvn -X -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true" -P release-mode release:prepare

-Второй вариант - выполнить эти аргументы в 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>TEST-@{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.

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

0 голосов
/ 01 декабря 2017

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

Таким образом, достаточно просто выполнить одну цель плагина без выполнения тестов:

mvn release:perform

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

mvn clean package release:perform
...