Maven发布插件执行测试两次

问题描述 投票:0回答:4

执行release:cleanrelease:preparerelease:perform时,测试会执行两次

发布后:准备,阶段运行准备目标,任务清理验证

还有一次发布:执行、阶段运行执行目标、任务部署

是否有任何配置选项可以使测试仅在第一个测试上运行而不是在执行时执行?

maven junit
4个回答
2
投票

这是因为 2 个完整构建作为您发出的命令的一部分运行。

发布:准备部分对代码和存储库执行大量检查,并进行完整构建以确保所有测试通过。

release:perform 部分标记存储库,然后拉取该标记。它执行构建基于该标签以及构建到您选择的人工制品商店(Nexus/Artifactory/任何地方)的版本。

这些步骤的设计方式是为了确保您不会使用未构建的代码上的标签污染您的存储库,并且测试是构建的一个组成部分。一旦 Maven 认为您的代码可以正常运行,它就会创建标签并拉取它,这样它就可以确定正在发布的代码是该标签引用的代码,而不是其他代码。构建该标签以供发布需要完整的构建,包括测试。

您可以跳过其中一个步骤或两个步骤的测试,但如果您这样做,您就错过了测试和发布插件的重点。


1
投票

您可以覆盖

goals
参数并添加
-DskipTests=true

此参数将仅跳过

perform
部分的测试。


1
投票

最终我不得不改变逻辑。

我已经执行了 mvn clean install release:clean release:prepare release:perform -Pmaven-release

并创建一个maven-release。因此,测试仅在安装时执行

BR

尤连奥伊法

<profile>
        <id>maven-release</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <configuration>
                        <autoVersionSubmodules>true</autoVersionSubmodules>                         
                        <arguments>-Dmaven.test.skip</arguments>                        
                    </configuration>
                </plugin>
            </plugins>
        </build>        
    </profile>

0
投票

您可以使用明确指定的参数跳过运行测试(由 Surefire 插件管理)

-DskipTests
:

类似这样的:

mvn release:perform -DskipTests 

对于集成测试(由故障安全插件管理),您可以使用类似的标志:

-DskipITs

如果您甚至不想编译测试,您可以使用

-Dmaven.test.skip=true
(对于单元测试和集成测试)

© www.soinside.com 2019 - 2024. All rights reserved.