Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to resolve module using --module-source-path

Following up on How to define qualified exports to unknown modules? I've posted a testcase with two modules: core and plugin.

core tries to expose a package to plugin using qualified exports but the compiler complains that plugin does not exist. Following up on Alan Bateman's recommendation, I tried adding --module-source-path <path-of-plugin> --module plugin pointing from core to plugin but the compiler complains:

module plugin not found in source path

Why isn't the compiler able to find module plugin?

like image 262
Gili Avatar asked Oct 28 '25 12:10

Gili


1 Answers

I figured it out through trial and error.

  1. Use --module-source-path ${project.basedir}/../*/src/main/java to make sure the compiler can see the source-code of both modules.
  2. Use --module core to make sure that the compiler only builds core in spite of seeing all modules.
  3. Tell maven-jar-plugin to package classes from classes/${module.name} instead of just classes because module-source-path causes the output to be prefixed by the module name. I have not found a way to disable this prefix.

The fixed code can be found at https://bitbucket.org/cowwoc/qualified-exports-testcase/

Caveat: This technique only works if the module directory name (the component resolved by *) matches the Java module name. In this particular example the module core had its sources in directory core/src/main/java. If, on the other hand, the directory name was core but the corresponding Java module was org.bitbucket.core then the compilation would fail with module org.bitbucket.core not found in module source path.

like image 107
Gili Avatar answered Oct 31 '25 04:10

Gili



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!