Hi Mark,

thanks for these adjustments. In general they look good, but it all depends on the details:

    Define a JAR-file manifest attribute, `Automatic-Module-Name`, whose
    value is used as the name of the automatic module defined by that JAR
    file when it is placed on the module path, as previously suggested
    [2][3].  If a JAR file on the module path does not have such a
    manifest attribute then its automatic-module name is computed using
    the existing filename-based algorithm.

Just to be clear: does this make it an auto module? In that case we're still a bit stuck, because I still insist that jars published to any public artifact repository should never refer to an automodule. Published jars with this attribute should have received this name by their developer and this also implies that the jar is Jigsaw-ready, e.g. no more split packages. In the future its users should be able to switch to the fully modular jar with the same name without any problem. So I need an extra state, e.g. isAutomatic() + isNamed(), in which case I have to change my insisting line: "Never publish jars to any public artifact repository that refers to *unnamed* automatic modules".

    A user of a library can suggest a stable name to the library's
    maintainer, and easily submit a patch that implements it.  This will
    enable the uncoordinated modularization of libraries across the
    entire ecosystem.

I don't think this is realistic. Jars live in the local repository and will stay there even during compilation. Is a user patches such jars, it'll effect all his local Java projects. Only when Maven will do both compiling and generation the distributable/deployable one could isolate jars. However, the concept is that plugins don't have any knowledge of each other and shouldn't share any information. In other words: maven-war-plugin is not aware of maven-compiler-plugin; the maven-war-plugin just collects all the content for the web archive, including the jars as specified in the pom.xml, pulling them from the local repository. In case the user is developing an application he might use this, but since he can already use automodules, I expect him to use that, it's less painful compared to patching its dependencies artifacts. In case the user is developing a library he cannot use this, nor can he refer to automodule, because he doesn't control the combinations of jars used by the application developer.

thanks,
Robert

On Thu, 04 May 2017 19:39:06 +0200, <mark.reinh...@oracle.com> wrote:

Thanks to everyone, and especially Stephen Colebourne, Brian Fox, and
Robert Scholte, for the extensive feedback.

  http://mail.openjdk.java.net/pipermail/jpms-spec-experts/2017-May/000687.html

TL;DR: Keep automatic modules, bring back the module-name JAR-file
manifest attribute, and strongly recommend reverse-DNS module names.

Comments?

- Mark

Reply via email to