Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java maven assembly插件在这种情况下有效吗_Java_Maven 2_Junit_Maven Assembly Plugin - Fatal编程技术网

Java maven assembly插件在这种情况下有效吗

Java maven assembly插件在这种情况下有效吗,java,maven-2,junit,maven-assembly-plugin,Java,Maven 2,Junit,Maven Assembly Plugin,我有以下项目结构: 项目“父项目”没有任何源文件,其子项目为“junit包装器”、“child1测试”和“child2测试” 子项目“junit包装器”在src/main/java中只有java源代码,它基本上是为了将所有依赖项和二进制文件包装在层次结构“父项目”下而创建的 子项目“child1-test”和“child2-test”没有源文件,只包含子项目“child1-env”和“child2-env” 子项目“child1 env”和“child2 env”在src/test/java中只

我有以下项目结构:

  • 项目“父项目”没有任何源文件,其子项目为“junit包装器”、“child1测试”和“child2测试”
  • 子项目“junit包装器”在src/main/java中只有java源代码,它基本上是为了将所有依赖项和二进制文件包装在层次结构“父项目”下而创建的
  • 子项目“child1-test”和“child2-test”没有源文件,只包含子项目“child1-env”和“child2-env”
  • 子项目“child1 env”和“child2 env”在src/test/java中只有junits
  • 我想通过构建父pom.xml来构建一个超级jar(在junit包装器中)

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

    请建议

    谢谢。

    当您将此配置包含到junit包装器的pom文件中时,您将获得“uber jar”:

    <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>
    
    
    maven汇编插件
    2.2.1
    组装
    包裹
    单一的
    带有依赖项的jar
    

    不需要程序集描述符(assembly.xml),因为maven程序集插件中已经有了带有依赖项的
    jar
    描述符。请注意,您不应在
    阶段之前执行程序集插件。否则,maven模块的代码将不会打包到程序集中

    要创建包含测试类的jar,最好的解决方案是使用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>
    
    
    org.apache.maven.plugins
    maven jar插件
    2.2
    试验罐
    
    在其他模块中,您可以通过以下依赖项使用测试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>
    
    
    ...
    com.myco.app
    福
    1.0-快照
    试验罐
    测试
    ...
    
    Do您想在其他模块/项目中重用junit包装中的类吗?另外,如果您打算将来自child1 env和child2 env的测试包含在超级jar中,您必须将它们声明为依赖项,并且必须确保您是从这两个包中的测试代码构建jar。