While you could write the ServiceLoader class by hand, I wouldn’t want anyone 
to. 
That would be error prone.

I have though about creating a Maven plugin to generate the class, but all that 
would do is replace the proc=only compile step, so there isn’t much point.

Ralph

> On May 29, 2021, at 5:40 PM, Ralph Goers <ralph.go...@dslextreme.com> wrote:
> 
> We do need better docs on this. 3.0 is going to be a mixed bag. It will be 
> easier 
> for “normal” applications because plugins now use ServiceLoader instead of 
> the Log4jPlugins.dat file. However, it is going to be more challenging for 
> those 
> developing plugins if they use the Java Platform Module System.
> 
> As one might imagine, the compiler now has a modulePath in addition to a 
> classPath. When no module-info.java is present Maven will set things up to 
> only use the classPath, which will work as normal. However, when a 
> module-info.java 
> file is present than Maven will configure the project and its tests to use 
> the 
> modulePath. By itself this isn’t a problem. However, the Java compiler ONLY 
> looks for Annotation processors automatically on the classPath. This means 
> anyone using JPMS while compiling plugins will have to explicitly configure 
> the annotation processor. 
> 
> There is a second issue when using JPMS. While our annotation processor 
> generates the service class and service definition file, JPMS requires that 
> the 
> Log4jPlugins service class must be declared in module-info.java. This is 
> somewhat of a problem because the compiler will fail if it finds the 
> module-info.java references the Log4jPlugins service class because the 
> annotation processor hasn’t generated it yet. 
> 
> The only recourse to this is to do a proc=only compile that does not include 
> the module-info.java class followed by a full compile with proc=none. 
> Personally,
> I think this is a but in javac but I suspect it would be a major change to 
> fix it.
> 
> I have meant to write a blog post on all of this basically to ask the 
> question,
> “Is JPMS really worth it”?
> 
> Ralph
> 
>> On May 29, 2021, at 11:06 AM, Matt Sicker <boa...@gmail.com> wrote:
>> 
>> Hey all, that itch is back to figure out how to complete my previous
>> attempt at the plugin system updates (started a little over a year ago
>> and put on pause at some point). I'm currently working on getting that
>> branch back up to working again with master (mostly needing to update
>> module-info files), and I'm hoping to map out and figure out the path
>> forward on completing it.
>> 
>> With that being said, one major aspect of this project will be
>> explaining how the 2.x plugin system works, how it relates to the 3.x
>> system, and the gist of how I'd like to restructure things. Does
>> anyone here have any preferences on how I share some docs about this?
>> I could record some videos that go over code and such, or I could
>> write things up blog style. Note that these docs would be focused at
>> fellow log4j developers and not necessarily the user manual. I still
>> plan to have proper API docs and manual pages for the system, but
>> those would be targeted for users writing their own extensions mainly.
>> 
>> Link for background info:
>> https://issues.apache.org/jira/browse/LOG4J2-2803
>> 
> 
> 
> 


Reply via email to