Stephen Colebourne created MCOMPILER-330:
--------------------------------------------

             Summary: Add java.* JPMS modules for testing only is hard
                 Key: MCOMPILER-330
                 URL: https://issues.apache.org/jira/browse/MCOMPILER-330
             Project: Maven Compiler Plugin
          Issue Type: Improvement
    Affects Versions: 3.7.0
         Environment: Windows 10, Maven v3.5.2
            Reporter: Stephen Colebourne
         Attachments: maven-issue3.zip

Attached is a project demonstrating this issue (which affects both compiler and 
surefire). The basic problem here is where the project depends on a java.* 
module for testing but not at compile time. For example, the test code depends 
on `java.desktop` module, but the main code does not.

While this has similarities with MCOMPILER-320 it is different because there is 
no way to refer to the `java.*` JPMS modules as dependencies.

Right now the workaround is to add both --add-modules and --add-reads, as shown 
in the attachment. This is painful low-level stuff that Maven should be hiding 
the user from.

NOTE: the attachment will succeed when run. Delete the compiler/surefire plugin 
config to see the issue.

Rather than tackle this problem directly, my preference would be to have a 
module-patch.java file that allows users to declare additional 
dependencies/exports/services that only apply at testing time. This would be 
interpreted whenever --patch-module is being used. (As well as the example 
explained here, I've also run into the need to export packages that only exist 
in tests, and this currently also requires low-level argLine manipulation).

 



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

Reply via email to