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

Robert Scholte commented on MCOMPILER-447:
------------------------------------------

Both multirelease jars and module descriptors are useful for dependencies. I'm 
not convinced they should be used to tests, they will only overcomplicate 
things.
Instead of using MRJARs for tests, you can either use assumptions or verify the 
java-version (e.g. using 
https://codehaus-plexus.github.io/plexus-languages/plexus-java/apidocs/org/codehaus/plexus/languages/java/version/JavaVersion.html).
It would help if the PR was extended with a test to make the discussion clear.



> Unable to compile modularized test for a multi-version jar that is not a java 
> module by default
> -----------------------------------------------------------------------------------------------
>
>                 Key: MCOMPILER-447
>                 URL: https://issues.apache.org/jira/browse/MCOMPILER-447
>             Project: Maven Compiler Plugin
>          Issue Type: Bug
>    Affects Versions: 3.8.1
>            Reporter: Claudio Corsi
>            Priority: Blocker
>
> I have a single module project that is creating a mult-version jar file.  By 
> default the multi-version jar is not a java module because it is being built 
> for jdk 7 or newer.  The multi-version jar does contain a java module 
> definition within the /META-INF/versions/9 directory.  I am trying to create 
> a integration test that uses the java module of the code.  When I tried 
> building the module tests I got the UnsupportedOperationException with the 
> message:
>  
>   Can't compile test sources when main sources are missing a module descriptor
>  
> The issue was that the main module does not contain a module descriptor but 
> the test does contain a module descriptor. 
>  
> I then forked a copy of the maven compiler plugin.  I created an integration 
> test and was able to fix this issue.  The issue was that I needed to find the 
> latest version of the java-module for the module generated multi-version jar 
> file.  This because the module descriptor and was added to the javac command.
>  
> I then tried to build my test source again and this time it stated that it 
> was not able to find a class because it is part of a jar file that does not 
> contain any java module definition.  I updated the integration test and was 
> able to add another fix to the forked copy that resolved that issue.  The 
> issue was that all non-java-module jar files should be included as part of 
> the class path.  They were all being included as part of the module path.
>  
> I then used the fixed jar file to build my project and it failed again 
> because of it accessing a unnamed module.  I had to finally update my pom to 
> include a --add-reads command line option.  I will not try to add a fix to 
> this issue since this issue has a workaround unlike the other two that didn't.



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

Reply via email to