The content of the generated Log4j2Plugins.dat does not appear to be repeatable. I noticed the problem as it affects Gradle's build caching. Getting different output from Java compilation for the same inputs causes a cache miss and additional work that should be unnecessary.
Looking at the code, I believe that the problem is that PluginProcessor.process works with a Set of elements and that PluginCache uses an insertion-order map. If the order of the elements in the Set changes, they will be inserted into the cache in a different order and then written out in a different order.
Would it be possible to use TreeMap s in PluginCache so that the categories and their entries are written in name order?