确保测试罐的名称正确

时间:2015-01-14 16:08:41

标签: java maven build

我正在设置我们的系统,根据所使用的jdk为不同版本的java工件进行双重构建。要构建4个jar:工件,工件测试,工件源和工件测试源。这是构建的输出

[INFO] Installing /Users/carlos/workspace/svn/Libraries/artifact-name/trunk/pom.xml to /Users/carlos/.m2/repository/package-path/artifact-name/1.0.8-SNAPSHOT/artifact-name-1.0.8-SNAPSHOT.pom
[INFO] Installing /Users/carlos/workspace/svn/Libraries/path/artifact-name-1.0.8-SNAPSHOT-java6.jar to /Users/carlos/.m2/repository/package-path/artifact-name/1.0.8-SNAPSHOT/artifact-name-1.0.8-SNAPSHOT-java6.jar
[INFO] Installing /Users/carlos/workspace/svn/Libraries/path/artifact-name-1.0.8-SNAPSHOT-sources.jar to /Users/carlos/.m2/repository/package-path/artifact-name/1.0.8-SNAPSHOT/artifact-name-1.0.8-SNAPSHOT-sources.jar
[INFO] Installing /Users/carlos/workspace/svn/Libraries/path/artifact-name-1.0.8-SNAPSHOT-test-sources.jar to /Users/carlos/.m2/repository/package-path/artifact-name/1.0.8-SNAPSHOT/artifact-name-1.0.8-SNAPSHOT-test-sources.jar
[INFO] Installing /Users/carlos/workspace/svn/Libraries/path/artifact-name-1.0.8-SNAPSHOT-tests.jar to /Users/carlos/.m2/repository/package-path/artifact-name/1.0.8-SNAPSHOT/artifact-name-1.0.8-SNAPSHOT-tests.jar

您可以看到主工件是使用java6构建的,并且具有相应的分类器。我假设test分类器正在覆盖java6分类器,但我不确定。有没有办法让它为两个测试和jdk明确命名?像-1.0.8-SNAPSHOT-tests-java6.jar之类的东西。如果可能的话,我不想对final.name进行手动更改,只使用我为主要工件所做的库存功能。

以下是pom的相关部分。

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>${maven.jar.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven.compiler.version}</version>
                <configuration>
                    <source>${jdk.version}</source>
                    <target>${jdk.version}</target>
                    <forceJavacCompilerUse>true</forceJavacCompilerUse>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>${maven.source.version}</version>
            </plugin>
        </plugins>
    </pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.9</version>
            <executions>
                <execution>
                    <id>analyze</id>
                    <goals>
                        <goal>analyze-only</goal>
                    </goals>
                    <configuration>
                        <failOnWarning>true</failOnWarning>
                        <ignoreNonCompile>true</ignoreNonCompile>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.4</version>
            <!--<configuration>-->
            <!--<skip>true</skip>-->
            <!--</configuration>-->
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>jar</goal>
                        <goal>test-jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <classifier>${jdk.version.display}</classifier>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>test-jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
<profiles>
    <profile>
        <id>java6</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <jdk>1.6</jdk>
        </activation>
        <properties>
            <jdk.version>1.6</jdk.version>
            <jdk.version.display>java6</jdk.version.display>
        </properties>
    </profile>
    <profile>
        <id>java7</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <jdk>1.7</jdk>
        </activation>
        <properties>
            <jdk.version>1.7</jdk.version>
            <jdk.version.display>java7</jdk.version.display>
        </properties>
    </profile>
    <profile>
        <id>java8</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <jdk>1.8</jdk>
        </activation>
        <properties>
            <jdk.version>1.8</jdk.version>
            <jdk.version.display>java8</jdk.version.display>
        </properties>
    </profile>
</profiles>

1 个答案:

答案 0 :(得分:0)

-sources-tests-test-sources JAR本身使用分类器。所以例如在sources的情况下,您需要覆盖maven-source-plugin的<classifier>配置选项(另请参阅Maven deploy + source classifiers)。我怀疑在使用-sources个工件的所有工具集中进行了很好的测试。例如,如果您调用分类器java6,Eclipse是否仍会下载java6-sources分类器工件的源代码?那么teststest-sources和(如果您以后需要它)javadoc分类器 - 你会进一步使POM复杂化以产生所有这些吗?也许你可以使它全部工作,但不是简单地沿着这条路走下去,而是简单地使用两个不同的artifactIds会更容易,一个用于java6,一个用于java7,并且将分类器排除在等式之外