1

我正在使用插件在另一个模块的测试中附加测试。

  <build>
    <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <version>2.2</version>
       <executions>
         <execution>
           <goals>
             <goal>test-jar</goal>
           </goals>
         </execution>
       </executions>
     </plugin>
    </plugins>
  </build>

在需要jar的模块中:

   <dependency>
      <groupId>com.myco.app</groupId>
      <artifactId>foo</artifactId>
      <version>1.0-SNAPSHOT</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
  </dependencies>

它对我非常有用,但我发现了一个问题:当我执行"clean install -Dmaven.test.skip=true"时,还需要依赖 test-jar 并且进程失败

4

2 回答 2

5

是的,因为-Dmaven.test.skip=true只是使 maven junit 插件(surefire 和 failsafe)不执行 - 它阻止它们运行任何测试。

它不会阻止maven 尝试“收集”所有测试范围的依赖项。maven 仍然收集所有这些。

如果您想要可选的依赖项(无论范围如何),您应该阅读有关maven 配置文件的信息- 您可以定义一个配置文件,其中将定义此依赖项,然后 maven 将尝试仅在您激活配置文件时获取它(从命令行,例如)

于 2013-07-03T17:28:50.477 回答
2

-Dmaven.skip.test或者-DskipTests只是跳过测试执行,它仍然编译测试类,所以它需要测试依赖项

如果要跳过测试类的编译,可以配置 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>
于 2013-07-03T17:28:52.133 回答