FWIw, the situation you describe isn’t really any different than it is with 
Maven. If I declare an optional dependency in a component it will not be 
automatically included. A user has to add it to their pom.xml as a required 
dependency for it to be included. That is really no different than a user 
having to add a requires statement to their module-info file.

Ralph

> On Nov 29, 2023, at 7:29 AM, Ralph Goers <ralph.go...@dslextreme.com> wrote:
> 
> I agree with this. IMO the only configuration syntaxes we should support are 
> those we can implement with no dependencies. At the moment that is JSON and 
> Properties (Ugh!). I would love to deprecate properties but I know that is a 
> non-starter since we didn’t support them for years and were constantly asked 
> for it.
> 
> Ralph
> 
>> On Nov 29, 2023, at 5:14 AM, Gary Gregory <garydgreg...@gmail.com> wrote:
>> 
>> I think the overall goal should be to have no optional dependencies, no
>> surprises. I personally hope to never force YAML on anyone.
>> 
>> Gary
>> 
>> On Wed, Nov 29, 2023, 6:51 AM Piotr P. Karwasz <piotr.karw...@gmail.com>
>> wrote:
>> 
>>> Hi all,
>>> 
>>> I have been using a modularized sandbox project to test Log4j and
>>> optional dependencies are a nightmare.
>>> 
>>> Small example: if I use Log4j API in my project and I add:
>>> 
>>> requires org.apache.logging.log4j;
>>> 
>>> then when I run the app, the JVM will automatically add `log4j-api` to
>>> the boot layer.
>>> 
>>> It will also add `log4j-core`, since it provides a service that
>>> `log4j-api` uses.
>>> 
>>> However it will **not** load `jackson-datatype-yaml`, because it is an
>>> **optional** dependency of `log4j-core` and provides no services
>>> `log4j-core` is interested in. The user must go to the additional pain
>>> of specifying `--add-modules` or the application developer must add a
>>> bogus `requires` statement.
>>> 
>>> Therefore I would propose to:
>>> 
>>> * move the YAML configuration factory to a separate module and delete
>>> one of the JSON configuration factories (the one that uses Jackson).
>>> 
>>> What do you think?
>>> 
> 

Reply via email to