Maven:是否可以在另一个项目的编译范围中包含一个测试jar

时间:2014-09-02 13:41:00

标签: java maven junit

假设我有两个项目A和B,一个项目只有测试用例。项目B依赖于A,并将使用A中的类作为src/main/java下的源编译。 maven能够实现这一目标吗?怎么样?

我知道这很奇怪,但这就是我环境中的情况。

提前致谢。

3 个答案:

答案 0 :(得分:1)

关注Guide to using attached tests

确保在项目A

中创建这些测试罐
<project>
  <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>
</project>

然后在项目B中使用它们

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

答案 1 :(得分:0)

这听起来像一个奇怪的用例。我花了一些时间来检查它是否真的是正确的项目结构。

如果您确定它是否是正确的项目结构,那么它只是maven中的依赖项。如果项目A中的类仅用于在项目B中进行测试,那么您可能还希望将依赖项范围设置为test

答案 2 :(得分:0)

像这样创建一个测试jar:

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

使用测试工件:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>groupId</groupId>
      <artifactId>artifactId</artifactId>
      <type>test-jar</type>
      <version>version</version>
    </dependency>
  </dependencies>
  ...
</project>