Как я могу получить maven-release-plugin, чтобы пропустить мои тесты?

177

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

я пытался

-Dmaven.test.skip=true 

и

-DskipTests 

и

-DpreparationGoals=clean

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

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

Стивен
источник

Ответы:

406

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

bmargulies
источник
1
Это работает для меня, спасибо и +1, но ... Wny это необходимо?
javamonkey79
5
Это необходимо, потому что процесс выпуска разветвляется на новый процесс maven, и tpical -DskipTests не передаются как системные свойства.
Эдди
4
Хотел бы я проголосовать за тебя 2. Я потратил часы, пытаясь понять это правильно ... но 1. Я что-то упустил в документации или в документации mvn чего-то не хватает? 2. Я <skipTests>true</skipTests>настроил в своей компании POM. Все еще не работал. То, что сработало, было вашим решением.
Пулак Агравал
Вам нужен какой-то конкретный конфиг в pom, чтобы это работало?
DenCowboy
42

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

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

Инженер-программист
источник
21

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

-Darguments="-DskipITs"
Дэвид Гилкс
источник
3

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

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

Exemple: 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.

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

idriss Eliguene
источник
2

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

-Dmaven.test.skip = верно

так что если вы хотите пропустить юнит тест, это решит

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>
Мфуон Леонард
источник
2
Этот вопрос конкретно о плагине релиза Maven, так что это не цели Maven, которые будут использоваться.
Яап
-2

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

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

mvn release:perform

или объединить с проектом сборки и упаковки:

mvn clean package release:perform
Яннис Серметзиадис
источник