You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Benjamin Marwell (Jira)" <ji...@apache.org> on 2019/12/14 17:45:00 UTC

[jira] [Commented] (MENFORCER-288) RequireJavaVersion: Support new Java 9 versioning schema even for older Java versions

    [ https://issues.apache.org/jira/browse/MENFORCER-288?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16996498#comment-16996498 ] 

Benjamin Marwell commented on MENFORCER-288:
--------------------------------------------

I came to the conclusion that this cannot be done.

`<requireJavaVersion>` takes a *version range*. You had to parse the version range and convert each element into a java version. If {{<="}}8" (beware of String parsing), add a "{{1.}}" prefix. I do not think that this plugin should fiddle with a version range. The VersionRange would need to parse into a modifiable element set for this, which is not supported at the moment.Example: {color:#0747a6}{{(,6.0.5],[7.1.1,)}}{color} would need to get converted to {color:#0747a6}{{(,1.6.0-5{{],[}}1.7.1-1,)}}{color}.

Also, while the JEP is implemented by [https://codehaus-plexus.github.io/plexus-languages/plexus-java/apidocs/org/codehaus/plexus/languages/java/version/JavaVersion.html] is not helpful. There is no `normalize()` method which would spill out `1.6` for 6, and the `asMajor()` method would spill out `6` for `1.6`, which is not helpful either. Also, no JVM would ever identify itself as "`6`".

I do not think it is worth the effort.

> RequireJavaVersion: Support new Java 9 versioning schema even for older Java versions
> -------------------------------------------------------------------------------------
>
>                 Key: MENFORCER-288
>                 URL: https://issues.apache.org/jira/browse/MENFORCER-288
>             Project: Maven Enforcer Plugin
>          Issue Type: Improvement
>          Components: Standard Rules
>    Affects Versions: 3.0.0-M1
>            Reporter: Konrad Windszus
>            Priority: Major
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Although with MENFORCER-274 it is now possible to specify 
> {code}
>                 <requireJavaVersion>
>                   <version>9</version>
>                 </requireJavaVersion>
> {code}
> it is still not possible to refer to older java versions without the leadering {{1.}}.
> So e.g. this one does not work
> {code}
>                 <requireJavaVersion>
>                   <version>6</version>
>                 </requireJavaVersion>
> {code}
> This would be very handy as with JDK 9 you specify e.g. release only without the preceeding {{1.}} (compare with https://docs.oracle.com/javase/9/tools/javac.htm#GUID-AEEC9F07-CB49-4E96-8BC7-BCC2C7F725C9__GUID-D343F6B4-3FDD-43A8-AD24-43DD70214471). As it is very common to reuse the same Maven property value for enforcing the minimum java version with the {{maven-enforcer-plugin}} as well as for specifying the release/source/target of the {{maven-compiler-plugin}} it would be nice, if both support the same version range.
> To still be backwards compatible I would suggest that in case of 6,7,8 given as a value, the {{1.}} is implicitly prepended by the {{maven-enforcer-plugin}}.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)