maven-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ceki Gulcu <c...@qos.ch>
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 \ 

     -DexcludeTransitive

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
  META-INF/services/org.codehaus.groovy.source.Extensions

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,

--
Ceki

On 03.12.2017 14:06, Robert Scholte wrote:
> On Sun, 03 Dec 2017 13:40:51 +0100, Ceki Gulcu <ceki@qos.ch> 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 
>> module-info.java 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 module-info.java. 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 
>> module-info.java files and not dependency declarations in pom.xml 
>> files. Thus, if I understand correctly m-compiler-p parses 
>> module-info.java 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 
> https://github.com/codehaus-plexus/plexus-languages/tree/master/plexus-java
> 
> 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: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Mime
View raw message