如何使maven发布插件跳过测试?

时间:2015-03-09 17:21:55

标签: maven maven-release-plugin

我在Spotify's docker-client的主结帐上运行mvn release:prepare -Darguments="-Dmaven.test.skip=true -DskipTests"。但我无法获得maven的发布插件来跳过测试。为什么在这种情况下,maven不尊重CLI标志?

我也很好奇是什么导致发布插件执行surefire-plugin。 pom.xml中没有指定surefire-plugin。

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"

5 个答案:

答案 0 :(得分:73)

这对我有用。我想要准备和执行发布。

mvn clean -DskipTests -Darguments=-DskipTests release:prepare release:perform

答案 1 :(得分:3)

我在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>

答案 2 :(得分:1)

这适用于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>

答案 3 :(得分:0)

这是google在此问题上的第一批热门歌曲之一,但没有最可能的解释和解决方案,所以这是我的尝试。

我在运行release:prepare时遇到与OP相同的问题,其中-DskipTests通过-Darguments传递给 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.5.2</version> <configuration> <arguments>-B</arguments> </configuration> </plugin> 。深入研究后,我注意到祖父母POM(父母的父母)具有以下配置:

<arguments>-B</arguments>

它实际上具有更多的配置,但是我仅显示与此问题最相关的是arguments。这是将-B 配置参数硬编码为arguments,而不是让它读取 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <configuration> <arguments>$(arguments)</arguments> </configuration> </plugin> 属性。为了解决这个问题,我在项目pom中添加了以下内容,它开始起作用:

    int selection;
    char name2[20], last2[20];
    int number1[10],i,count=0;

    scanf_s("%d", &selection);
    while (selection != 5) {
        switch (selection)
        {
        case 1:

               AddContact();
               break;
        case 2:
                DisplayContact();
                printf("============================== \n");
                break;
    void AddContact()
    {
        int i;
        char name[21], last[21];
        int number[11];

        printf("Enter name: ");
        scanf_s("%s",name);
        printf("Enter  last name: ");
        scanf_s("%s", last);
        printf("Enter mobile number: ");
        scanf_s("%d",number);
        printf("CONTACT ADDED\n");
    }
    void DisplayContact()
    {
        int i;
        char name[21], last[21];
        int number[11];
        for (i = 0; i < size; i++)
        {
            printf("Contact ID    : %d\n",i+1 );
            printf("Name  : %s %s\n", name, last);
            printf("Mobile: %d\n", number);
            printf("\n");
         }

答案 4 :(得分:-4)

有两件事。首先,如果你想运行一个版本,你需要运行mvn release:perform,它真正运行最终版本的步骤,而不是mvn release:prepare。如果您想跳过mvn release:prepare中的测试,则应使用mvn -Dmaven.test.skip=true加上您定义的给定参数。

除了maven-surefire-plugin在default life cylce

中定义