> I don't think I understand the issue here. Using -Xpatch doesn't change the > module declaration or export. It can be used to override or augment the > module content, it just can't override the module declaration. It can be used > in conjunction with -XaddReads and -XaddExports to read additional modules or > export additional packages. For example, if a patch adds types to a new > package then you could export that package with -XaddExports. If the patch > injects tests into an existing package then those tests might have new > dependences and requires compiling or running with -XaddReads:$MODULE=junit > for example.
I was playing around with exactly this yesterday, and this is what I ended up with: javac -Xmodule:javamodularity.easytext.algorithm.naivesyllablecounter \ -XaddReads:javamodularity.easytext.algorithm.naivesyllablecounter=org.junit \ -mp mods:lib-test \ -d mods-test/javamodularity.easytext.algorithm.naivesyllablecounter $(find src-test -name '*.java') java -Xpatch:mods-test \ -XaddReads:javamodularity.easytext.algorithm.naivesyllablecounter=org.junit \ -XaddExports:javamodularity.easytext.algorithm.naivesyllablecounter/javamodularity.easytext.algorithm.naivesyllablecounter=org.junit \ -mp mods:lib-test \ -addmods javamodularity.easytext.algorithm.naivesyllablecounter,hamcrestcore \ -m org.junit/org.junit.runner.JUnitCore javamodularity.easytext.algorithm.naivesyllablecounter.NaiveSyllableCounterTest Which patches my application module to contain a unit test, and then exposes my application module to junit at runtime (which is used as automatic module here). This works as expected. -- Sander