【问题标题】:maven build jar with test resources file only仅包含测试资源文件的 maven 构建 jar
【发布时间】:2014-10-01 03:23:05
【问题描述】:

我有一个将要构建的项目有 jar。

项目结构如下

> src | - main
>       |- java
>        - resources 
>     | - test
>       | - resources

所以现在我想使用 maven 创建 2 个 jar 文件 1) 主/java 和主/资源 2) main/java 和 test/resources

我的 POM

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.tool.Main</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <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>

【问题讨论】:

    标签: maven jar


    【解决方案1】:

    您从未指定发生的事情不是您所追求的,但是看看您的示例,您似乎在 POM 中定义了同一插件的两个不同版本来尝试破解您的内容想要。

    您可以使用&lt;execution&gt; 标记来定义所需的行为。

    <plugin>
        <!-- jar plugin -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <executions>
            <!-- use these to define different execution tasks during the package phase -->
            <execution>
                <id>default-jar</id>
                <phase>package</phase>
                <goals>
                    <goal>jar</goal>
                </goals>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>${project.mainClass}</mainClass>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                        </manifest>
                    </archive>
                </configuration>
            </execution>
            <execution>
                <id>test-jar</id>
                <phase>package</phase>
                <goals>
                    <goal>test-jar</goal>
                </goals>
                <configuration>
                    <archive>                       
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>                         <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                        </manifest>
                    </archive>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    运行后,你的输出目录中应该有两个jar,一个名为[your artifactID]-[version].jar,一个名为[your artifactID]-[version]-tests.jar

    【讨论】:

      猜你喜欢
      • 2012-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-07
      • 2014-10-15
      • 2014-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多