I had to put some mysterious dot file in the root of my Maven module to get
my plugin to work. The only way I found this is by comparison with another
module but not all modules have this file.

Gary

On Wed, Dec 4, 2024, 8:16 AM Volkan Yazıcı <vol...@yazi.ci> wrote:

> I agree with Pavel that users should only be required to
>
>    1. Provide the interface implementation
>    2. Create the associated `META-INF/services` file entry
>    3. [For Java 9 and above] Update their `module-info.java` accordingly
>
> Anything more than this is non-idiomatic. Telling users "but processors are
> helpful", "you can manually create the Java file registering your plugin",
> etc. is beating around the bush.
>
> On Fri, Nov 29, 2024 at 10:26 AM PavelTurk <pavelturk2...@gmail.com>
> wrote:
>
> > Hi Piotr,
> >
> > On 11/29/24 10:07, Piotr P. Karwasz wrote:
> > > Hi Pavel,
> > >
> > > On 28.11.2024 19:26, PavelTurk wrote:
> > >> Thank you very much for your detailed and quick help.
> > >>
> > >> However, to tell the truth, I’m a bit confused. I’ve been waiting for
> a
> > long time for Log4j to finally work according to the JPMS rules. But in
> > your message, you talk about compile-time and, as I understood, the use
> of
> > some plugin-processor (from your project pom):
> > >>
> > >>           <annotationProcessorPaths>
> > >>             <path>
> > >> <groupId>org.apache.logging.log4j</groupId>
> > >> <artifactId>log4j-plugin-processor</artifactId>
> > >>               <version>3.0.0-beta3</version>
> > >>             </path>
> > >>           </annotationProcessorPaths>
> > >>
> > >> Doesn’t all this completely contradict JPMS?
> > > > (...)
> > >> By the way, I noticed something seemed off when I saw code duplication
> > in your project:
> > >>
> > >> @Configurable(elementType = Appender.ELEMENT_TYPE, printObject = true)
> > >> @Plugin(ConsoleAppender.PLUGIN_NAME)
> > >> public final class ConsoleAppender...
> > >>
> > >> and
> > >>
> > >> PluginEntry.builder()
> > >>   .setKey("console")
> > >>
> .setClassName("org.apache.logging.log4j.core.appender.ConsoleAppender")
> > >>   .setName("Console")
> > >>   .setNamespace("Core")
> > >>   .setElementType("appender")
> > >>   .setPrintable(true)
> > >>   .get(),
> > >>
> > >> Or am I mistaken (which is always possible) and misunderstood
> > everything?
> > >
> > > We have an annotation processor that automatically generates the
> > required `PluginService` implementation, I don't see how that contradicts
> > the principles behind JPMS.
> > ...
> >
> > Let me explain my point of view. But first of all, I want to emphasize
> > that I’m not claiming to be right—I could very well be wrong. I’m simply
> > saying that using a processor seems incorrect to me.
> >
> > In the world of JPMS, there’s a service, we implement it, and we add it.
> I
> > haven’t heard of a service + PROCESSOR that needs to be used. Can you
> point
> > out any other projects that involve a service + processor? The reasoning
> is
> > that we should only need to know the INTERFACE, and we’ll handle the
> > IMPLEMENTATION ourselves. After all, it’s possible to do without it—for
> > example, by writing a PluginService manually, which would scan the module
> > itself and return the necessary classes or just data(entries) about them.
> > That’s why I said that using a processor here seems odd to me. In
> general,
> > I think code generation should only be used as a last resort—for example,
> > for JPA metamodels—but that’s just my opinion.
> >
> > I assume module-info was also generated automatically. The problem is
> that
> > it’s not present in log4j-core-3.0.0-beta3-sources.jar see [1], but it
> does
> > exist in log4j-core-3.0.0-beta3.jar see [2]. Additionally, it’s not in
> the
> > repository see [3]. So, it is not possible to see what is in this file.
> Or
> > was I looking in the wrong place?
> >
> > [1]
> >
> https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/3.0.0-beta3/log4j-core-3.0.0-beta3-sources.jar
> > [2]
> >
> https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/3.0.0-beta3/log4j-core-3.0.0-beta3.jar
> > [3]
> >
> https://github.com/apache/logging-log4j2/tree/rel/3.0.0-beta3/log4j-core/src/main/java
> >
> > Best regards, Pavel
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> > For additional commands, e-mail: log4j-user-h...@logging.apache.org
> >
> >
>

Reply via email to