You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Christian Stein (JIRA)" <ji...@apache.org> on 2018/05/13 13:28:00 UTC

[jira] [Commented] (MCOMPILER-330) Add java.* JPMS modules for testing only is hard

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

Christian Stein commented on MCOMPILER-330:
-------------------------------------------

Created https://issues.apache.org/jira/browse/MCOMPILER-341 to tackle `module-info.java` compilation when module descriptors are located in test scope.

This will permit "black-box testing" (different test module name compared to its main module name) with a dedicated test module descriptor. You may specify all required modules your tests need to compile and run.

This will also permit "white-box testing". Here, the test and main module share the same name. Merging the main and test requirements have to be done manually for now, i.e. you may specify all required modules your tests need to compile and run *in addition* to the requirements of your main module.

 

> 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
>            Priority: Major
>         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)