Hello all

Currently, the default directory for source code in Maven 4 is:

   src/${scope}/${lang}

Where ${scope} is "main" or "test" and ${lang} is "java" or "resources". However, in the case of a multi-modules JPMS projects, we need to add the module name somewhere. Notes:

 * This change applies only to multi-modules projects. Non-modular
   projects, or modular projects with only one module, will see no change.
 * The output directory of a multi-modules project also changes: it
   becomes target/classes/${module} where ${module} is inserted by
   javac itself. So the addition of a ${module} directory is an
   invention of this proposal.

Three proposals have been discussed on the pull request #2278:

1. src/${module}/${scope}/${lang}
2. src/${lang}/${module}/${scope}
3. src/${scope}/${lang}/${module}

Proposals 1 and 3 are the same as the current Maven convention with only ${module} added either at the beginning or at the end. Proposal 2 is more disruptive, but produces the most compact directory trees and takes in account the fact that each language has its own concept of modules with its own naming conventions. Proposals 1 and 3 are more conservative, with proposal 1 seing modules as a kind of sub-projects (files related to the same module are kept together) and proposal 3 rather seing the module system as an extension of the package system. These 3 proposals are described in more details there, together with examples:

https://cwiki.apache.org/confluence/display/MAVEN/Default+directory+for+modular+projects

What peoples think that the default should be?

    Martin

Reply via email to