Як я можу отримати плагін Maven-release, щоб пропустити тести?


177

Як я можу змусити запустити плагін Maven-release без запуску тестів?

я намагався

-Dmaven.test.skip=true 

і

-DskipTests 

і

-DpreparationGoals=clean

... ще жодної роботи.

Так, я знаю, що не повинен звільнятись, якщо тести не пройдуть, але я не маю контролю над тим, щоб мої колеги писали надійні тести.

Відповіді:


406

-Darguments="-DskipTests" це те, що ви хочете, або явно налаштовуючи роздвоєні виконання в пам’яті.


1
Це працює для мене, дякую і +1, але ... Чому це потрібно?
javamonkey79

5
ІТ необхідний, оскільки процес випуску формує новий процес Maven, а тропічний -DskipTests не передається як властивості системи.
Едді

4
хотілося б, щоб я міг вас проголосувати 2. Я витратив години, намагаючись отримати це право ... але 1. Чи щось я пропустив у документації, або в документації mvn щось не вистачає? 2. Я <skipTests>true</skipTests>налаштував у своїй компанії POM. Ще не вийшло. Те, що спрацювало, було вашим рішенням.
Пулак Аграваль

Вам потрібна якась конкретна конфігурація в пом, щоб зробити цю роботу?
DenCowboy

42

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

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


21

Якщо ви просто хочете пропустити інтеграційні тести, це зробить це:

-Darguments="-DskipITs"

3

у вас занадто різні варіанти, щоб уникнути та пропустити тести із плагіном випуску

  • Перший - це передати аргумент на cli до мети або фаз випуску, надавши -Даргументи:

приклад: mvn -X -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true" -P release-mode release:prepare

-Друге - це виконувати аргументи thhos на своєму 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.

Після того, як ви можете виконати випуск.


2

Щоб пропустити весь тест одиниці, він використовує аргумент

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

тому, якщо ви хочете пропустити тест одиниці, це вирішить

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

або ви також можете визначити skipTests в плагін maven-surefire в

пом.хмл

<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 release, тому це не цілі Maven, які будуть використовуватися.
Яап

-2

Жоден модуль Maven буквально не запускає тестову збірку чи виконання. Саме фази життєвого циклу Maven запускають виконання (-ів) одного або декількох плагінів, коли вони обмежують цілі до конкретної фази.

Отже, просто виконання однієї цілі плагіна було б достатньо без виконання тестів:

mvn release:perform

або поєднати зі створенням проекту та упаковкою:

mvn clean package release:perform
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.