Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[m2e-dev] Fwd: Status of JPMS support in compiler plugin

Dear members of the m2e-dev mailing list,

It seems like Maven converged to a new model of supporting projects with JPMS modules.

Are there are plans or discussion on implementing that into m2e once it is in Maven (or maybe even start with that before)?

Yours,
Daniel

Hello all


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

Note that the module source hierarchy described in above link is not an invention of this compiler plugin work. It come from javac [1]. The new plugin does not force anyone to adopt that organization, but makes possible to use it for those who want. In the same way, the additional directory that appears in the output classes also come from javac. It appears when we use the `--module-source-path` option instead of `--source-path`. Again, this is an opt-in: by default, the plugin behaves as in Maven 3. But if the sources are declared in the way suggested in above links, then the differences documented above appear.

The pull request has not been created yet. This email is for giving a chance to anyone to comment before to go further. Note that the work is not finished. Some remaining tasks are:

* Support modular + multi-release projects (currently, it is one or
the other but not both).
* Provide a substitute to the overriding of `module-info.java` in
tests when the developer needs something more advanced than the
--patch-module and --add-reads options automatically added by the
compiler. In the meantime, developers can workaround with
|<testCompilerArgs>| plugin configuration.

Martin

[1]https://docs.oracle.com/en/java/javase/24/docs/specs/man/javac.html#module-source-hierarchy



Back to the top