使用分类器

时间:2015-06-16 19:29:23

标签: java maven

Maven docs明确建议将分类器作为多JDK支持的解决方案:

  

分类器允许区分从同一POM构建但内容不同的工件。它是一些可选的任意字符串 - 如果存在 - 将附加到版本号之后的工件名称。作为此元素的动机,请考虑一个项目,该项目提供针对JRE 1.5的工件,但同时也是一个仍支持JRE 1.4的工件。第一个工件可以配备分类器jdk15,第二个工件可以配备jdk14,以便客户可以选择使用哪个。

我从未见过这样一个有效的例子。文档是错误的,还是以某种方式实际上使Maven使用不同的JDK(显然是不同的源目录,因为它们将具有不同的语法(例如菱形或lambdas))多次构建相同的工件,并且最重要的是,部署它们一起?

似乎这种事情也是JEP 238潜在支持的基本要求。

1 个答案:

答案 0 :(得分:1)

文档没有错。它只是给出了如何应用分类器的示例,在这种情况下,通过定位几个JRE。

关于如何做到这一点,可能有几种方法可以做到这一点。有关相关问题,请参阅How to configure Maven to build two versions of an artifact, each one for a different target JRE。您还可以使用Maven配置文件触发不同的执行。在这种情况下,每个配置文件使用不同的分类器触发maven-jar-plugin的不同配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>jar</goal>
        </goals>
        <configuration>
          <classifier>jdk14</classifier>  
        </configuration>
      </execution>
    </executions>
</plugin>