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)