On 20/09/2021 23:15, Rob Bygrave wrote:
/:/

In case it's interesting, one thing that I hit when migrating to module-info was that a number of the modules are only used in maven test scope - as such they don't get a /requires/ clause in src/main/java/module-info. Currently when running tests via maven, surefire, junit5 there is an unnamed module created for testing purposes that is patched and adds the main module. Currently these maven test scope only modules are getting treated as unnamed when running tests and so at this point can't be referenced in an /exports to/ clause of another module. The net result is that I have some /exports/ clauses that ideally would be /exports to /but can't at this stage. There might be a detail I am missing but this is ok and probably isn't a common case.

I don't think I understand the issue. The compiler plugin should compile the tests "as if" they are part of the module. When the tests execute then the Surefire plugin should be do the same as compile-time and patch the module to include the test classes. Under the covers I would expect both plugins to use --patch-module, --add-reads junit5, and maybe --add-exports to export packages to junit5. It sounds like there may be a mismatch between compile-time and run-time but I can't be sure without seeing more.

-Alan

Reply via email to