On 03/02/2017 11:44, Robert Scholte wrote:

Hi Nicolai,

let's consider that my project depends on the following dependencies:
com.foo.bar:library:1.0 and com.acme:library:2.3.1, both unnamed.

I somehow want to have them both as requirements:
module M.N {
  requires static library; // com.foo.bar:library
  requires library; // com.acme:library
}

How can I define that the 'requires static library' should be mapped to com.foo.bar:library:1.0 on the modulepath, while 'requires library' should be mapped to com.acme:library:2.3.1

One ugly solution would be:
  requires static library containing com.foo.bar.baz.SomeClass;
  requires library containing acme.AnotherClass;

We should really wonder if ease-of-transition is worth the minefield we're creating with the introduction of automodules. IMHO all options we're trying to add to keep automodules will only over-complicate things, not even being sure if all edges are covered.
I think automatic modules are critical to migration, otherwise things move at the pace of the slowest project (which might be 0km/h in case of unmaintained projects). A lot of the discussion here has been on the naming but automatic modules but the other important benefit of automatic modules is that they support bridging to the class path.

As regards the example naming clash then these two projects might already get complaints over their poor choice of artifacts, esp. when artifacts for both projects are in same directory (say where someone distributes with all JAR files in a `lib` directory).

-Alan

Reply via email to