4

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?

3
  • Just to clarify this is maven-compiler-plugin complaining or javac? Commented Dec 11, 2018 at 1:18
  • @nullpointer Both give the same error. I get this same error running javac directly. You can run mvn clean install -X to get the javac command-line being invoked, then run it manually. Commented Dec 11, 2018 at 2:53
  • Would be good to share the complete javac command here as well. It would bring clarity if something might be missing in the actual use case you're driving. Commented Dec 11, 2018 at 3:25

1 Answer 1

2

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.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.