2015-01-14 52 views
1

我正在设置我们的系统,以基于所使用的jdk为不同版本的java工件执行双重构建。有4个罐子可以制造:神器,神器测试,神器源和神器测试源。这里是构建的输出确保测试罐命名正确

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

回答

0

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