Maven:在生命周期中跳过test-compile?

fei*_*fei 21 testing compilation build skip maven

test-jar使用此设置设置了使用普通jar 构建的项目:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>test-jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

这个问题是每当我升级pom中的项目版本时,我需要使用测试进行构建,否则maven将无法在test-compile短语中找到具有正确版本的测试jar .很多时候我只想跳过测试,但是由于测试罐丢失,这个test-compile短语会失败.

我尝试使用-Dmaven.test.skip=true,但似乎没有跳过这test-compile句话.有没有办法跳过这个?

gav*_*koa 43

$ mvn clean install -Dmaven.test.skip=true \
      -Dmaven.site.skip=true -Dmaven.javadoc.skip=true
Run Code Online (Sandbox Code Playgroud)

  • 通常最好有一个简短的解释,而不是让代码只回答. (9认同)
  • 详细说明Sridhar所说的话:`skipTests`仅跳过测试的执行,而`maven.test.skip`则跳过编译和执行。 (7认同)
  • 我最近才意识到的一件事:`-Dmaven.test.skip = true`和`-DskipTests = true`并不是一回事. (5认同)
  • 不需要这个参数-Dmaven.javadoc.skip = true - 它适用于我有几个参数来跳过站点暂存和测试 (3认同)
  • @FWDekker很棒的解释! (2认同)

Rag*_*ram 38

如果要跳过测试源的编译,可以尝试适当地配置maven编译器插件.不建议这样做.

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <executions>
                <execution>
                    <id>default-testCompile</id>
                    <phase>test-compile</phase>
                    <goals>
                        <goal>testCompile</goal>
                    </goals>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </execution>
            </executions>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

  • @fei.如http://maven.apache.org/general.html#skip-test中所述,`maven.test.skip = true`跳过测试编译和执行.如果没有发生这种情况,您可以使用日志更新您的问题. (13认同)
  • 我实际上正在寻找一个命令行参数,如果可能的话. (2认同)
  • @Ungeheuer,您试图覆盖已为 maven-compiler-plugin 定义的执行的定义。我这样做的方法是“&lt;execution&gt;&lt;id&gt;default-testCompile&lt;/id&gt;&lt;phase/&gt;&lt;/execution&gt;”,它将它与任何阶段解除绑定,因此它甚至不会显示为已跳过。我在一些项目中使用它来覆盖默认构建配置文件的父 POM 中定义的各种与检查相关的插件。 (2认同)

小智 16

有点晚了,但是简单而准确地总结一下 -

添加@Sridhar@FWDekker所说的内容,

mvn clean install -DskipTests=true将跳过测试执行

mvn clean install -Dmaven.test.skip将跳过测试的编译和执行。


小智 5

只需添加 -Dmaven.test.skip 。它甚至不会编译测试