What Piotr describes is sadly the kind of insane setup one must have to work with JPMS and keeps me saying JPMS is something to work around, not work with. I plan on keeping using hacks like the Moditect plug-in and whatever I have to in my apps to avoid JPMS. What I really want is a --jpms-off toolchain switch...
Gary On Tue, Apr 1, 2025, 07:22 Piotr P. Karwasz <pi...@mailing.copernik.eu> wrote: > Hi Martin, > > On 31.03.2025 19:40, Martin Desruisseaux wrote: > > JPMS support in the compiler plugin (not yet merged) has reached a > > point where it can be used on some real projects. The Maven 3 way to > > make a modular project is still supported, but the proposed > > alternative for better use of JPMS is described here: > > > > * > > > https://github.com/Geomatys/maven-compiler-plugin/wiki/User-guide#modular-project > > * > > > https://github.com/Geomatys/maven-compiler-plugin/wiki/Migration#modular-projects > > The changes look nice, especially in the "multi-releases project" case. > > I fail to understand, however, the purpose of the "modular project" > layout. As far as I know, there is currently no support for multiple > JPMS modules in the same JAR. I am also afraid that such a structure > will really break IDEs: Eclipse already breaks if there is a separate > module descriptor for tests, putting multiple JPMS modules in the same > Maven Project will probably also break IDEA. > > When it comes to JPMS and the current Maven Compiler Plugin, what I > mostly miss it the possibility to have two source and output folders for > tests: unit/whitebox tests need to break encapsulation and either run on > the classpath or with `--patch-module`, while integration/blackbox tests > should run from a separate JPMS module. Due to the restrictions on the > number of output folders, currently we end up with 3 Maven Modules per > published JAR, e.g.: > > - `log4j-core` contains only production code in `src/main`. > > - `log4j-core-test` contains test fixtures (e.g. JUnit Extensions) in > `src/main`. These are reusable and published. > > - `log4j-core-test` contains unit tests in `src/test` (runs on classpath). > > - `log4j-core-its` contains integration tests in `src/main`. > > Piotr > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > For additional commands, e-mail: dev-h...@maven.apache.org > >