maven将主项目纳入test-jar

时间:2017-06-05 19:51:11

标签: java maven jar maven-plugin

我已经使用maven-jar-plugin

创建了一个测试jar
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <executions>
        <execution>
            <goals>
                <goal>test-jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

但是测试jar需要主类才能工作,所以如何将它们包含在测试jar中(创建类似于uber-test-jar的东西)?

2 个答案:

答案 0 :(得分:1)

通常我会导入两次依赖项:

  1. 常规;
  2. 测试jar,范围= test。
  3. 这样您就不会遇到缺少课程的问题。但是,如果您不需要应用程序中的主要源(第一个依赖项)并且它们仅用于测试,您还可以将其范围切换为测试。

    <scope>test</scope>
    

答案 1 :(得分:1)

你不能通过maven-jar-plugin将其他类添加到test-jar中,但你可以用另一种方式做一个包含主项目类和测试类的jar:使用maven-assembly-plugin!

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.5.3</version>
    <configuration>
        <descriptor>src/assembly/dep.xml</descriptor>
    </configuration>
    <executions>
        <execution>
            <id>create-archive</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

这将使用汇编描述符中描述的信息创建一个工件,描述符默认路径为src / assembly / .xml 在描述符中,您要添加以下内容:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-  plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    <id>example</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>${project.build.testOutputDirectory}</directory>
            <outputDirectory>/</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>${project.build.outputDirectory}</directory>
            <outputDirectory>/</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>
  • id - &gt;后缀到jar
  • 格式 - &gt;输出文件的格式(我们正在创建一个jar)
  • fileSets - &gt;所有要添加的目录
  • fileSet - &gt;要添加的单个目录,使用outputDirectory,包括exclude ecc。

此示例将使用-example作为后缀(例如:plugin-1.0-example.jar)创建一个带有主文件和测试文件的jar