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

Simone Bordet commented on SUREFIRE-1563:
-----------------------------------------

Some more food for thoughts.

Seems natural for {{src/test/main}} to have its own {{module-info.java}}, 
rather than a file with a different name but same semantic.

This may be even more important when a module produces the {{test-jar}} 
containing stuff used for testing that is useful for other modules.
For example, in Jetty we have a utility class {{HttpTester}} class that 
simulates a HTTP client that lives in the test sources of module 
{{org.eclipse.jetty.http}}, and we produce the {{test-jar}}.

The tests for module {{org.eclipse.jetty.server}} depends on the {{test-jar}} 
of {{org.eclipse.jetty.http}}.
What I have to do right now is to add:

{code}
--patch-module 
org.eclipse.jetty.http=${settings.localRepository}/org/eclipse/jetty/jetty-http/${project.version}/jetty-http-${project.version}-tests.jar
{code}

in the {{jetty-server}} Maven module, for both the {{maven-compiler-plugin}} 
configuration and for the {{maven-surefire-plugin}} configuration.
(Unfortunately I cannot make it work for the {{maven-compiler-plugin}}, 
probably because there is a space between {{--patch-module}} and the rest. 
Strangely enough, if I put a {{=}} instead of the space, just after 
{{--patch-module}}, it seems to work ?!?).

However, Maven would then need to detect the {{test-jar}} and treat it 
differently: cannot put it in the {{module-path}} as it would export the same 
packages as its correspondent module, so it would need to patch the module like 
I manually do in the POM now.

> NoClassDefFoundError for JPMS modules with "require static"
> -----------------------------------------------------------
>
>                 Key: SUREFIRE-1563
>                 URL: https://issues.apache.org/jira/browse/SUREFIRE-1563
>             Project: Maven Surefire
>          Issue Type: Bug
>          Components: Maven Surefire Plugin
>    Affects Versions: 2.22.0
>            Reporter: Simone Bordet
>            Priority: Major
>         Attachments: maven-jpms.tgz
>
>
> When a Maven module has a {{module-info.java}} that contains a {{requires 
> static}}, Surefire throws {{NoClassDefFoundError}} when running the tests for 
> that Maven module.
> If the dependency is declared only as {{required}} (no {{static}}), then the 
> tests run fine.
> Attached a reproducible project.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to