Well my thing only worked after I added it. And people can only copy what
we do...

Gary

On Wed, Dec 4, 2024, 12:31 PM Matt Sicker <m...@musigma.org> wrote:

> That’s specific to our build, Gary, in order to avoid running the
> processor on modules that don’t need it. Typical users would probably only
> have a single module with custom Log4j plugins.
>
> > On Dec 4, 2024, at 09:19, Gary Gregory <garydgreg...@gmail.com> wrote:
> >
> > 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