maven-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ceki Gulcu <>
Subject Re: Loading groovy as a Jigsaw auto-module
Date Sun, 03 Dec 2017 14:31:37 GMT

Hi Robert,

I found running the command

  mvn org.apache.maven.plugins:maven-dependency-plugin:3.0.2:resolve \ 


to be highly informative. Thank you.

Apparently, there were issues in the way I edited MANIFEST.MF file in
groovy-2.4.13.jar. I won't bore you with the details. Anyhow, I reverted 
to the original jar file, ran m-dependency-p and got:

Can't extract module name from groovy-2.4.13.jar: Provider class groovy 
not in module

After some investigation, it appeared that this is due to the contents 
of the file

Removing this file solves the problem at least as far as Jigsaw module 
resolution is concerned. Running m-dependency-p, I see:

o.c.groovy:groovy:jar:2.4.13:compile (optional)  -- module groovy (auto)

Again, thank you very much for your help,


On 03.12.2017 14:06, Robert Scholte wrote:
> On Sun, 03 Dec 2017 13:40:51 +0100, Ceki Gulcu <> wrote:
>> Hello all,
>> The logback project, more specifically logback-classic, offers the 
>> possibility of configuration via a script written in Groovy. Thus, 
>> logback-classic has source files written in Java and a few source 
>> files in Groovy.
>> While attempting to (Jigsaw) modularize the logback project, I first 
>> tried to declare "requires static groovy" in logback-classic's 
>> file but the compiler was unable to load 
>> groovy-2.4.13.jar as an auto-module.
>> To get the ball rolling, I had to resort to the "--add-reads 
>> ch.qos.logback.classic=ALL-UNNAMED" compiler directive. This is very 
>> unsatisfactory.
>> On twitter, Cédric Champeau‏ suggested manually editing MANIFEST.MF in 
>> groovy-2.4.13.jar adding "Automatic-Module-Name: groovylang". I edited 
>> the file and also declared "requires static groovylang" in 
>> logback-classic's However, this did not help and I 
>> still get "module not found: groovylang"
>> Building with maven's -X option, I see that  groovy-2.4.13.jar ends up 
>> on the compiler's class path instead of the module path.
>> Still on twitter, Robert Scolte responded that m-compiler-p only puts 
>> the jars on the module path if they are referred to by a requires 
>> statement anywhere in the module descriptors tree. The rest ends up on 
>> the classpath.
>> I am assuming here that "module descriptors tree" refers to 
>> files and not dependency declarations in pom.xml 
>> files. Thus, if I understand correctly m-compiler-p parses 
>> files before invoking javac. Really?
> Yes, really. In fact it goes beyond that. It also parses 
> module-info.class, reads the MANIFEST.MF for Automatic-Module-Name and 
> uses some specific Java9 code to extract the automatic module name from 
> the jarfile.
> The code for this can be found at 
> If you want to know the module names per jar, please run (with JAVA_HOME 
> pointing to /path/to/java9):
> mvn compile 
> org.apache.maven.plugins:maven-dependency-plugin:3.0.2:resolve 
> -DexcludeTransitive
> thanks,
> Robert
>> Best regards,
>> -- 
>> Ceki Gülcü
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail:
>> For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message