2012-10-04 292 views
0

我有以下项目结构Maven的组装插件有效:在这种情况下

  1. 工程“父项目”没有任何的源文件,并具有子项目为“基于JUnit的包装”,“child1-测试“和”child2测试“。
  2. 子项目“junit-wrapper”在src/main/java中只有java源代码,基本上创建它是为了将所有依赖项和二进制文件包装在层次结构“parent-project”下。
  3. 子项目“child1-test”和“child2-test”没有源文件,只包含子项目“child1-env”和“child2-env”。
  4. 子项目“child1-env”和“child2-env”在src/test/java中只有junits。

我想通过建立家长的pom.xml打造超级罐子(基于JUnit的包装内)

我希望这可以通过使用maven具组件插件,但不知道如何配置此在pom.xml中。为了确保达到这个目的,应该使用我的pom.xml或assembly.xml(使用插件)条目?

请建议。

感谢。

+0

你喜欢在其他模块/项目中重用junit-wrapper的分类吗? – khmarbaise

回答

0

你会得到你的“尤伯杯罐子”当你有这个配置成junit-wrapper的POM文件:

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.2.1</version> 
     <executions> 
     <execution> 
      <id>make-assembly</id> 
      <phase>package</phase> 
      <goals> 
      <goal>single</goal> 
      </goals> 
      <configuration> 
      <descriptorRefs> 
       <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
      </configuration> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

的组件描述符(assembly.xml)是没有必要的,因为jar-with-dependencies描述已经可用在maven-assembly-plugin中。请注意,您不应该在package阶段之前执行程序集插件。否则,你的maven模块的代码将不会被打包到你的程序集中。

+0

此外,如果您打算将child1-env和child2-env的测试包含在超级jar中,则必须将它们声明为依赖项,并且必须确保您正在构建测试代码中的Jars那两个包。 –

2

创建一个包含测试类的最佳解决方案是使用maven-JAR-插件这样的罐子:

<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> 

在其他模块,您可以通过以下依赖使用测试-JAR:

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