Java 使用分类器构建多JDK Maven

Java 使用分类器构建多JDK Maven,java,maven,Java,Maven,Maven文档明确建议将分类器作为多JDK支持的解决方案: 分类器允许区分从同一POM构建但内容不同的工件。它是一些可选的任意字符串,如果存在的话,会被附加到版本号后面的工件名称上。作为这个元素的一个动机,考虑一个项目,该项目提供了一个针对JRE 1.5的工件,但同时也是一个仍然支持JRE 1.4的工件。第一个工件可以配备分类器jdk15,第二个工件可以配备jdk14,这样客户机可以选择使用哪一个 我从来没有见过这样的例子。文档是否有误,或者是否有可能让Maven使用不同的JDK多次构建同一工件

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

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

我从来没有见过这样的例子。文档是否有误,或者是否有可能让Maven使用不同的JDK多次构建同一工件(显然是不同的源目录,因为它们具有不同的语法(例如diamond或lambdas)),最重要的是,将它们部署在一起


这类事情似乎也是对JEP238潜在支持的基本要求。

文档没有错。它只是给出了一个如何应用分类器的示例,在本例中,它针对几个JRE

关于如何做到这一点,可能有几种方法。有关相关问题,请参阅。您还可以使用Maven概要文件触发不同的执行。在这种情况下,每个概要文件都会使用不同的分类器触发
maven jar插件的不同配置:

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

org.apache.maven.plugins
maven jar插件
2.6
包裹
罐子
jdk14

使用多个配置文件需要执行多个生命周期,不是吗?那么,您将如何一起部署它们呢?由于不同构建系统上的JDK位置不同,我也使用工具链插件,而且我不知道如何为单个插件执行定义工具链。@Gordon AFAIK您需要运行多个概要文件来部署多个工件。我以前从未使用过toolchains插件。。。