Started proposed changes in a Maven clone (work in progress). Highlights:

 * In the DependencyProperties interface, added a
   FLAG_MODULE_PATH_CONSTITUENT in complement to the existing
   FLAG_CLASS_PATH_CONSTITUENT [1].
 * Added corresponding isAddedToModulePath() methods and
   implementations beside most existing isAddedToClassPath()
   occurrences (e.g. [2]).
 * Add Javadoc with following contract: the "added to class-path" and
   "added to module-path" flags are not necessarily mutually exclusive.
   If both flags are set, it means that the dependency can work in both
   places (by contrast, a dependency with only the "added to module
   path" flag means that it cannot run on the class-path). I have used
   the "added" word for consistency with current usage, but it should
   rather be understood as "addable".
 * Added a StrictlyModularDependencyException to be thrown when a user
   wants to put on the classpath a dependency which has only the
   "(addable) to module-path" flag. Maybe it should be a warning
   instead of an exception.
 * Modified the MavenProject implementation in accordance with above
   contract [3]. The behaviour should be identical to previous
   implementation in projects with only classical JAR dependencies. The
   idea is that existing methods (getCompileClasspathElements(),
   getTestClasspathElements(),getRuntimeClasspathElements()) would be
   invoked by plugins that do not want to care about module path. As
   long as the StrictlyModularDependencyExceptionis not thrown, it
   should be safe to ignore module path. New methods for (classpath +
   module path) will be added later.
 * Added two new types [4]:
     o "modular-jar" for JARs that must be on the module-path. "Modular
       JAR" is the term used in Oracle documentation for JAR with
       module-info.
     o "cmod-jar" for modular JARs that should be on the module-path,
       but work also on the classpath. "CMod" can be understood as
       "classpath or module-path" or as "compatible module".

Of course this is subject to changes according feedback.

    Martin

[1]https://github.com/Geomatys/maven/commit/eb6839be18b4d3df042522545c5914c364f3d8ce#diff-e4dfc0df29eed1a4c86581da84309d85fa12702b832555b60d86106c2af8550dR49
[2]https://github.com/Geomatys/maven/commit/eb6839be18b4d3df042522545c5914c364f3d8ce#diff-b1e0e6b9b7fa80c2facbaa5ac40d839594a2854747afc70572445cb9cbeeab2cR91
[3]https://github.com/Geomatys/maven/commit/eb6839be18b4d3df042522545c5914c364f3d8ce#diff-ea86e9c1e8def45475c1f03fc335686165184ec2ab190054f5c8b7b77c4414f4R343
[4]https://github.com/Geomatys/maven/commit/eb6839be18b4d3df042522545c5914c364f3d8ce#diff-b1e0e6b9b7fa80c2facbaa5ac40d839594a2854747afc70572445cb9cbeeab2cR47

Reply via email to