Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让maven发布插件跳过测试?_Maven_Maven Release Plugin - Fatal编程技术网

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

如何让maven发布插件跳过测试?,maven,maven-release-plugin,Maven,Maven Release Plugin,我正在的主签出上运行mvn发行版:prepare-Darguments=“-Dmaven.test.skip=true-DskipTests”。但是我不能让maven的发布插件跳过测试。在这种情况下,为什么maven不尊重CLI标志 我也很好奇是什么导致发布插件执行surefire插件。pom.xml中没有指定surefire插件 mvn --version Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-1

我正在的主签出上运行
mvn发行版:prepare-Darguments=“-Dmaven.test.skip=true-DskipTests”
。但是我不能让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"

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


除了maven surefire插件在

中定义之外,这对我来说很有用。我想同时准备和执行发布

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

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

org.apache.maven.plugins
maven发布插件
2.5.3
v@{project.version}
-Dmaven.javadoc.skip=true-Dmaven.test.skipTests=true-Dmaven.test.skip=true
这适用于Maven 3.6(可能还有一些早期版本)


org.apache.maven.plugins
maven发布插件
2.5.3
-DskipTests

这是谷歌针对这一问题的第一批搜索结果之一,但没有最可能的解释和解决方案,所以下面是我的尝试

我在运行
发行版时遇到了与OP相同的问题:准备
-DskipTests
时,通过
-Darguments
传入的
-DskipTests
未被识别。深入研究后,我注意到祖父母POM(父母的父母)具有以下配置:

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


我运行了mvn发行版:prepare-Dmaven.test.skip=true-Darguments=“-Dmaven.test.skip=true-DskipTests”
,它仍然运行测试。@khmarbaise:,它是
mvn发行版:prepare arguments='-Dmaven.test.skip=true'
它不会为我跳过测试,
release:prepare
做的事情之一就是更新POM版本信息(并提交该版本)。因此,我不建议跳过
release:prepare
步骤。您使用的是哪个版本的maven release?确保您正在使用2.5。1@Edd谢谢你的邀请。我在3.2.5上。我已经用上面的版本信息更新了我的问题。maven发布插件版本?@EddúMeléndez 2.5在这里工作得很好<代码>-Darguments=-DskipTests就足够了。不需要第一个
-DskipTests
.OP的命令已经在
-Darguments
下有了
-DskipTests
,那么为什么它对他不起作用呢?事实上,我在一个项目中也注意到了同样的事情。这根本不能回答最初的问题,我真的很惊讶它仍然获得了这么多的支持票。有关可能的根本原因,请参见我的答案:
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>2.5.2</version>
          <configuration>
            <arguments>-B</arguments>
          </configuration>
        </plugin>

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