【问题标题】:Multi-JDK Maven builds using classifiers使用分类器构建多 JDK Maven
【发布时间】:2015-09-01 19:09:59
【问题描述】:

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

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

我从未见过这样的工作示例。文档是否错误,或者是否有可能实际上使 Maven 使用不同的 JDK 多次构建相同的工件(以及明显不同的源目录,因为它们将具有不同的语法(例如菱形或 lambdas)),最重要的是,部署它们在一起吗?

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

【问题讨论】:

    标签: java maven


    【解决方案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>
    

    【讨论】:

    • 使用多个配置文件需要多个生命周期执行,不是吗?那么,您将如何将它们部署在一起呢?
    • 由于不同构建系统上的JDK位置不同,我也使用工具链插件,并且我不知道如何为单个插件执行定义工具链。
    • @Gordon AFAIK 您需要运行多个配置文件来部署多个工件。我之前从未使用过工具链插件...
    猜你喜欢
    • 1970-01-01
    • 2019-11-09
    • 2016-08-05
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 2012-12-06
    • 1970-01-01
    相关资源
    最近更新 更多