0

我有以下项目结构:

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

我想通过构建父 pom.xml 来构建一个超级 jar(在 junit-wrapper 内)

我希望通过使用 maven-assembly-plugin 可以做到这一点,但不知道如何在 pom.xml 中配置它。为了确保实现这一点,我的 pom.xml 或 assembly.xml(使用插件)条目应该是什么?

请建议。

谢谢。

4

2 回答 2

2

要创建一个包含测试类的 jar,最好的解决方案是像这样使用 maven-jar-plugin:

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

在其他模块中,您可以通过以下依赖项使用 test-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>
于 2012-10-05T06:40:42.377 回答
0

当您将此配置包含在以下 pom 文件中时,您将获得您的“uber-jar” junit-wrapper

<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 模块的代码将不会被打包到您的程序集中。

于 2012-10-04T17:15:20.700 回答