You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Claudio Corsi (Jira)" <ji...@apache.org> on 2021/02/24 01:52:03 UTC

[jira] [Commented] (MCOMPILER-447) Unable to compile modularized test for a multi-version jar that is not a java module by default

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

Claudio Corsi commented on MCOMPILER-447:
-----------------------------------------

[~bmarwell]
No worries, I looked at the aforementioned link and gave it a try.  I was able to use that technique but it seems wrong that someone would have to go through all of that trouble to create a multi-version jar file.  Especially one that is a combination like the one that I am trying to create/use.    The first part of this first will remove the need to add such a configuration within the pom file.  It would make the pom file cleaner and more like what is expected.
As for a use-case, you can take the added pom file that is part of the MCOMPLIER-447 integration test.  To reproduce this case, you only would need to use the compile-java-9 and test-compile-java-9 executions at: 

https://github.com/apache/maven-compiler-plugin/blob/064b889c1dbc237081a54aceae4560d8942308f5/src/it/MCOMPILER-447/pom.xml#L57 
https://github.com/apache/maven-compiler-plugin/blob/064b889c1dbc237081a54aceae4560d8942308f5/src/it/MCOMPILER-447/pom.xml#L83
To not reproduce the other issue mentioned in this issue.  You need to comment out the Logger.getLogger call within the Test.java file at
 https://github.com/apache/maven-compiler-plugin/blob/064b889c1dbc237081a54aceae4560d8942308f5/src/it/MCOMPILER-447/src/test/test9/org/bar/Test.java#L29


    On Monday, December 21, 2020, 5:10:01 PM EST, Benjamin Marwell (Jira) <ji...@apache.org> wrote:  
 
 
    [ https://issues.apache.org/jira/browse/MCOMPILER-447?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17253146#comment-17253146 ] 

Benjamin Marwell commented on MCOMPILER-447:
--------------------------------------------

[~ccorsi]

Sorry that I just know realized what you actually meant in this issue:
{quote}The following changes resolves two different issues. The first is the case that
the we are creating a multi-version jar file that by default is not modularized.
{quote}
There is no need to do such a thing. A {color:#0747a6}{{module-info.class}}{color} in the root folder will be ignored by Java 7 and Java 8. See the [second example here|https://maven.apache.org/plugins/maven-compiler-plugin/examples/module-info.html].
{quote}a multi-version jar file that by default is not modularized.
{quote}
What is the use case here? 

 




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


> 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)