Weakness of "requires public"
Malachi de Ælfweald
malachid at gmail.com
Tue Jul 26 20:27:27 UTC 2016
I would not expect to specify any transitive dependency. I would not
expect any user of my API to have to manually specify any transitive
dependencies I used in my public API (return types for example). If they
did - that completely breaks the point of me specifying transitive
dependencies in the first place.
Malachi de Ælfweald
http://www.google.com/profiles/malachid
On Tue, Jul 26, 2016 at 11:35 AM, Paul Benedict <pbenedict at apache.org>
wrote:
> In a modularized world, I don't see "requires public" delivering the value
> it should.
>
> Let's take this example:
> module java.sql {
> requires public java.logging;
> requires public java.xml;
> exports java.sql;
> exports javax.sql;
> exports javax.transaction.xa;
> }
>
> Given a theoretical Maven POM representing the "java.sql" module, the POM
> would have to list out the other two modules so that my project compiles
> against all declared modules. It is considered bad practice to compile
> against artifacts I did not declare in my POM. There are three artifacts
> here.
>
> Would any Maven experts here disagree? I see the positive of "requires
> public" to be negated in build systems. Given what I just found, I do not
> like the idea of public transitive dependencies in the Module Descriptor.
> For developers using build systems, I believe "requires public" should be
> avoided.
>
> Cheers,
> Paul
>
More information about the jigsaw-dev
mailing list