как сделать так, чтобы плагин выпуска maven пропускал тесты?

Я запускаю mvn release:prepare -Darguments="-Dmaven.test.skip=true -DskipTests" в основной кассе docker-client Spotify. Но я не могу заставить плагин выпуска maven пропустить тесты. Почему в этом случае maven не учитывает флаги CLI?

Мне также любопытно, что заставляет плагин выпуска запускать плагин surefire. В pom.xml не указан плагин surefire.

mvn --version

Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T12:29:23-05:00)
Maven home: /usr/local/Cellar/maven/3.2.5/libexec
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.10.2", arch: "x86_64", family: "mac"

person David Xia    schedule 09.03.2015    source источник
comment
какую версию maven-release вы используете? убедитесь, что вы работаете с 2.5.1   -  person Eddú Meléndez    schedule 11.03.2015
comment
@EddúMeléndez Спасибо, что спросили. Я на 3.2.5. Я обновил свой вопрос, указав информацию о версии выше.   -  person David Xia    schedule 11.03.2015
comment
А версия maven-release-plugin?   -  person Eddú Meléndez    schedule 11.03.2015
comment
@EddúMeléndez 2.5 здесь github.com/spotify/docker-client/ блоб/мастер/pom.xml#L180   -  person David Xia    schedule 12.03.2015
comment
Не могли бы вы принять один из правильных ответов? Всегда сбивает с толку то, что неправильный ответ находится сверху.   -  person Christian Schneider    schedule 30.06.2021


Ответы (5)


Есть две вещи. Во-первых, если вы хотите запустить релиз, вам нужно запустить mvn release:perform, который действительно запускает шаг для финального релиза, а не mvn release:prepare. Если вы хотите пропустить тесты в mvn release:prepare, вы должны использовать mvn -Dmaven.test.skip=true плюс заданные вами аргументы.

Кроме того, maven-surefire-plugin определен в жизненный цикл по умолчанию

person khmarbaise    schedule 09.03.2015
comment
Я запустил mvn release:prepare -Dmaven.test.skip=true -Darguments="-Dmaven.test.skip=true -DskipTests", и он все еще запускал тесты. - person David Xia; 09.03.2015
comment
@khmarbaise: согласно jira.codehaus.org/browse/MRELEASE-700, это это mvn release:prepare arguments='-Dmaven.test.skip=true' - person Ralph; 11.03.2015
comment
У меня тоже не пропускает тесты - person Simon Jenkins; 19.10.2017
comment
Одна из вещей, которую делает release:prepare, — это обновление информации о версии POM (и фиксация этой версии). Поэтому я бы не рекомендовал пропускать шаг release:prepare. - person PatS; 04.04.2019

Это сработало для меня. Я хотел и подготовить, и исполнить релиз.

mvn clean -DskipTests -Darguments=-DskipTests release:prepare release:perform
person David Xia    schedule 24.12.2016
comment
Работает как шарм! - person Vlad Mihalcea; 06.03.2019
comment
-Darguments=-DskipTests достаточно. Нет необходимости в первом -DskipTests. - person Younes; 13.11.2019
comment
У команды ОП уже есть -DskipTests под -Darguments, так почему у него это не сработало? На самом деле, я замечаю то же самое с проектом. - person haridsv; 06.05.2020
comment
Это вообще не отвечает на первоначальный вопрос, я очень удивлен, что он все еще получил так много голосов. Возможную основную причину см. в моем ответе: stackoverflow.com/a/61640653/95750 - person haridsv; 06.05.2020

Я использовал следующее в своем pom.xml

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
            <configuration>
                <tagNameFormat>v@{project.version}</tagNameFormat>
                <arguments>-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true</arguments>
            </configuration>
        </plugin>
person nrkkalyan    schedule 23.07.2018

Это работает с Maven 3.6 (и, возможно, с некоторыми более ранними версиями).

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.5.3</version>
    <configuration>
        <arguments>-DskipTests</arguments>
    </configuration>
</plugin>
person OrangeDog    schedule 07.03.2019

Это одно из первых попаданий в Google по этой проблеме, и пока нет наиболее вероятного объяснения и решения, поэтому вот моя попытка.

Я столкнулся с той же проблемой, что и OP при запуске release:prepare с -DskipTests, переданным через -Darguments, не распознанным. Покопавшись, я заметил, что дедушка и бабушка POM (родитель родителя) имеет следующую конфигурацию:

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>2.5.2</version>
          <configuration>
            <arguments>-B</arguments>
          </configuration>
        </plugin>

На самом деле у него больше настроек, но я показываю только то, что наиболее актуально для этой проблемы, а именно файл <arguments>-B</arguments>. Это жестко задает arguments параметр конфигурации в -B вместо того, чтобы позволить ему читать arguments свойство. Чтобы обойти это, я добавил ниже в pom проекта, и он начал работать:

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <arguments>$(arguments)</arguments>
          </configuration>
        </plugin>
person haridsv    schedule 06.05.2020