On 2/7/2024 11:22 AM, Piotr P. Karwasz wrote:  [Some edits for clarity]
This is my main problem with any `requires static transitive Y;`
directive in a module descriptor `X` that has an optional Maven
dependency on `Y`: it forces ***users of `X`*** to manually add `Y`
as Maven dependency in their project (it can be `provided` so it does
not propagate).

I see that this impact on users is unfortunate. What I can't understand is something you said earlier:

in practice (`log4j-core`) code that depends
on optional dependencies is in separate packages and accessed through
reflection.
This should be a runtime-only dependency, but many users do not care
about the distinction between `compile` and `runtime` scope.

Doesn't the POM of log4j-core express that some artifact ("an optional dependency") has `runtime` scope / is `provided` ? Why is it relevant that users of log4j-core don't care about the distinction between scopes?

Alex

Reply via email to