根据JDK更新版本选择Maven配置文件

7

Maven的配置文件可以根据JDK版本进行开启或关闭,比如1.7或1.8。但我找不到一种方法来基于JDK更新版本来激活一个配置文件。

具体地说,我希望当使用JDK 1.8.0_u121或更高版本时能够激活一个配置文件。例如,以下方式是无效的:

<profiles>
  <profile>
    <activation>
      <jdk>[1.8.0_u121,]</jdk>
    <activation>
  </profile>
  <additionalparam>--allow-script-in-comments</additionalparam>
</profiles>

任何实现相同效果的个人资料替代方案(允许在使用1.8.0_u121或更高版本时设置属性)都将被欣然接受。
1个回答

0

Maven构建配置文档介绍说:

The following configuration will trigger the profile when the JDK's version starts with "1.4" (eg. "1.4.0_08", "1.4.2_07", "1.4"):

<profiles>
    <profile>
        <activation>
            <jdk>1.4</jdk>
        </activation>
    </profile>
</profiles>

然后提到从Maven 2.1开始,您可以使用Enforcer Version Range Syntax

根据这些文档,我认为由于额外的u,您的激活未被触发。也许尝试:

<profiles>
    <profile>
        <activation>
            <jdk>[1.8.0_121,)</jdk>        <activation>    </profile>    ...</profiles>

Failed to determine activation for profile For input string: "0_121" - Evan
@Evan 我建立了一个快速的复制环境,并且我能够使用 [1.8.0_121,), [1.8.0-121,), 和 [1.8.0.121,) 激活一个配置文件,这与 https://maven.apache.org/enforcer/enforcer-rules/requireJavaVersion.html 上的文档有些相符。我正在使用 Maven 3.6.3 和 JDK 14.0.2。如果您对您的特定环境有更多细节,可能需要开启一个新问题。 - shawmanz32na
1
Maven仅检查版本的前三个组件。无法在次要版本上激活。https://github.com/apache/maven/blob/353d3eaa8f2be47878f584a7da398572b41d90af/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java#L141 - Evan
@Evan 确实,看起来就是这样!好的侦探工作!如果你把它变成一个答案,我会点赞的。 - shawmanz32na

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接