On 2/25/2020 10:48 AM, Robert Scholte wrote:
For the test sources it is unclear.
One reason to not provide a module descriptor is because it will never be a requirement for other modules. And what about its name, as it is actually a required module and at the same also the same module.

One reason to provide a module descriptor is for the build tool to know which modules are required, so it can provide the right set of modules. But how would such descriptor for test sources look like? Well, in the end it must contain everything from the main module descriptor + the test requirements. I assume that copy/pasting the main module descriptor for a new test module descriptor + adding the extra requirements is not the preferred solution.

Correct, that is no-one's preferred solution. My preferred solution (and I think Christian's) is for the test module's descriptor to stay physically independent of the main module's descriptor. Then, the build tool (i) FINDS the test module's descriptor and (ii) MERGES it logically with the main module's descriptor. Suppose the merged descriptor says that the main module requires org.junit -- the build tool turns that into an --add-modules command when compiling and running tests. Maven could be doing this today, helping users to focus on their white-box test modules rather than asking users to type obscure --add-* commands in the POM.

Furthermore, from what Christian has posted, the effect of merging is always the same anyway -- require some JUnit modules, and open the main module. So, in the common case, people don't even need to write a test module descriptor; they just need the Maven test scope to inject the customary --add-* commands when compiling and running code in the main module.

Alex

Reply via email to