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

Slawomir Jaranowski commented on MCOMPILER-579:
-----------------------------------------------

Mentioned issue MCOMPILER-446 was closed without fix with conclusion: 
{quote}
the maven-compiler-plugin should always use --module-version based on the 
project version.
{quote}

> JPMS modules and `--module-version`
> -----------------------------------
>
>                 Key: MCOMPILER-579
>                 URL: https://issues.apache.org/jira/browse/MCOMPILER-579
>             Project: Maven Compiler Plugin
>          Issue Type: Bug
>    Affects Versions: 3.8.1, 3.9.0, 3.10.0, 3.11.0, 3.12.0
>            Reporter: Sam Gammon
>            Priority: Major
>
> Hello Maven devs,
>  
> I've hit an issue converting some Java libraries to JPMS. Guava is a popular 
> Java library, built with Maven, and I was working on a PR to add JPMS 
> support, but got stuck at an issue in the latest Maven version's compiler 
> plugin:
> Maven sets the module version to the project's version, which is sensible for 
> release versions. But during development, many projects use a string version 
> convention like HEAD-SNAPSHOT​, or 1.0-SNAPSHOT​, and these are not valid 
> values for --module-version​.
> This also appears to be unconditional behavior[1], making it very hard for 
> modules to both ship a module descriptor _and_ remain flexible with their 
> versioning scheme.
> For libraries like Guava, this may make JPMS support a non-starter 
> altogether, because Google may have internal scripts and other infrastructure 
> which rely on these string versions. Normally that would just be a problem. 
> But with Guava being the #1 artifact in Core Utilities and #4 in terms of 
> alltime transitive usage[2] in Maven Central, this means Guava must either:
>  
>  * Stay behind on Maven 3.8.0 or earlier
>  * Avoid shipping a module info
>  * Change versioning scheme to be numeric in all circumstances
>  
> All seem to be especially poor options, particularly #2, as it would continue 
> to impact downstream library or application authors who want to package with 
> `jlink` et al. The transitive closure of Guava being unable to use `jlink` 
> encompasses a vast amount of the greater Java ecosystem.
>  
> [1]: 
> [https://github.com/apache/maven-compiler-plugin/blob/74cfc72acae4f55708bca189b2170167e83df6b3/src/main/java/org/apache/maven/plugin/compiler/CompilerMojo.java#L304-L305]
> [2]: [https://mvnrepository.com/artifact/com.google.guava/guava]



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to