【问题标题】:Ensure test jars are named correctly确保正确命名测试 jar
【发布时间】:2015-01-14 16:08:40
【问题描述】:

我正在设置我们的系统,以便根据使用的 jdk 为不同版本的 java 工件进行双重构建。需要构建 4 个 jar:artifact、artifact-tests、artifact-sources 和 artifact-test-sources。这是构建的输出

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

【问题讨论】:

    标签: java maven build


    【解决方案1】:

    -sources-tests-test-sources JAR 本身就在使用分类器。所以例如对于sources,您需要覆盖maven-source-plugin 的&lt;classifier&gt; 配置选项(另请参阅Maven deploy + source classifiers)。我怀疑这样做是否在所有使用 -sources 工件的工具集上都经过了很好的测试。例如,如果您调用分类器java6-sources,Eclipse 是否仍会下载您的java6 分类器工件的源代码?那么teststest-sources 和(如果你以后需要的话)javadoc 分类器呢?你会进一步复杂化你的 POM 以生成所有这些不同的东西吗?也许你可以让这一切都奏效,但与其走这条路,不如简单地使用两个不同的 artifactId,一个用于java6,一个用于java7,并且不考虑分类器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-23
      • 2013-11-28
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 2012-11-19
      相关资源
      最近更新 更多