Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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
Java Maven发布插件跳过执行但不准备的测试_Java_Maven - Fatal编程技术网

Java Maven发布插件跳过执行但不准备的测试

Java Maven发布插件跳过执行但不准备的测试,java,maven,Java,Maven,使用maven release插件时,mvn release:prepare和mvn release:perform都将运行测试 是否有任何方法可以配置这些内容,使其仅在mvn发行版:prepare期间运行 我知道你可以通过: -Darguments="-DskipTests" 但这将跳过两个目标期间的测试,这是我不想要的。我也不希望它们只在mvn发布期间运行:执行而不准备,因为执行期间的失败已经标记了存储库。您应该能够通过将元素添加到发布插件配置中来实现这一点。这将仅用于发布:执行Mojo

使用maven release插件时,
mvn release:prepare
mvn release:perform
都将运行测试

是否有任何方法可以配置这些内容,使其仅在mvn发行版:prepare期间运行

我知道你可以通过:

-Darguments="-DskipTests"

但这将跳过两个目标期间的测试,这是我不想要的。我也不希望它们只在mvn发布期间运行:执行而不准备,因为执行期间的失败已经标记了存储库。

您应该能够通过将
元素添加到发布插件配置中来实现这一点。这将仅用于发布:执行Mojo

像这样的事情应该可以做到:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <configuration>
                <releaseProfiles>skipTestsForReleasePerform</releaseProfiles>
            </configuration>
        </plugin>
    </plugins>
</build>
(...)
<profiles>
    <profile>
        <id>skipTestsForReleasePerform</id>
        <properties>
            <maven.test.skip>true</maven.test.skip>
        </properties>
    </profile>
</profiles>

maven发布插件
skipTestsForReleasePerform
(...)
skipTestsForReleasePerform
真的

这看起来很有意义,我正在试用配置文件。Jenkins不允许您单独参数化发布目标,这使我的问题更加复杂。发布的目标和参数只有一个框。我最终解决了这个问题,让作业只运行release:prepare as normal,然后运行一个post-build操作release:perform without tests only on real release(Jenkins设置了一个环境变量)。Hacky和不完全是Maven的方式,但它最终做得足够好。通过使用我的回答,你不应该被迫更改Maven命令中的任何内容,所有内容都在POM中指定,我们只是“强制”发布插件添加-Pxxx和releaseProfile元素。效果非常好!