After busy days I finally blocked some time to share my opinions about this:

I would not break with the basic plugin architecture of Maven and leave it with what it does: "only" running a lifecycle and call the plugins which were configured into it via the pom.xml. Putting plugins into Maven would start the discussion about "why those, but not others". We had this in some kind of ways some time ago about which plugins should residate in the Super-POM (which always rises asking myself if I like the Super-POM or not - but this is another topic). The defined versions and plugins in "mvnup" are similar (and produce maintenance effort).

I would also not put the plugins into one git repository with a combined release - why do I (as a user) need to raise the number of the clean plugin when only a bugfix in the deploy plugin was fixed? A common repository for those would result in bondage them, like we have on each plugin and its site currently (we can't fix typos on a site without a release of the plugin...) Longer builds were already mentioned by Slawek.

The motivation of Hervè's idea is maintenance on users and Maven's side:
As a user I like the approach that one plugin does one thing - on the other side I can't rely on this as the creator of the plugin defines what and how much the plugins does. For example the PMD report goal also calls a build if no build-check-result file is there. You could argue that it's a prerequiste to generate a report, but you could also argue that when there is no check-file then the result is empty or the goal fails. About maintenance: At my work I update the plugins in our META-POM once a months, but in general it doesn't matter if I miss a month, because in many cases the plugins just work. And three more lines for a version would not reduce or remove the "configuration" section.

With focus on us a Maven team, I think we have to differiate:

* Maintaining ASF/Github stuff: This is quite some pain as Github does not support some kind of "different projects with multiple repositories inside an organization", so to have the same workflow in every Maven (but not other ASF) repository we have to it in every repository. And as we don't have the same workflow in every repository Dependabot kicks in with a lot of "Setupjava"-actions etc. as well as updating all repositories when we release a new version of our maven-gh-acctions-shared. Maybe we can tune dependabot here to auto-update them. So far we sometimes only have to check on release-drafter updates, but not the other actions. * Dependabot in general: I'm not very into Dependabot, but as mentioned by others we have to do a lot of "build is okay? okay merge" dependency updates and "no we don't want this (major) version for the plugin. Maybe we can define a general dependabot setting for this, like "if the branch is a Maven 3 plugin, we don't want Maven version x, we don't want SLF4J version x+" so we don't have to do it in every repository. But I'm afraid this won't work due GitHub layout as mentioned in first point. What already helped (me) to list open Dependabot PRs was the "dependabot PR page" [1] created by Gerd, but ofc this does not help if decisions have to be made and applied (do we want this upgrade or not) or broken builds have to be investigated. The broken builds are a rising issue from my feeling. I know it has to do with AI overloading Jenkins and GH (which is a problem Slawek is working on), but often due not so well written ITs when it comes to assertions. Don't get me wrong - I like our test coverage and ofc I want to have a test failed due cating a bug but rather an let it through. We have several ITs which heavily rely on the log output. Earlier this year I updated a lot of ITs do rely on variable verion numbers, esp. of maven plugins so they are also picked up on parent updates, but this is/was only on messages with those numbers. * The voting process is part of the ASF and ofc the more releases you do, the more votes you have.

The last point brings us back to the initial idea: Reducing the number of plugins / libraries and with that reducing the mainteance with everything connected to it. Rather by thinking about the size of a plugin, maybe think about the functionality. What do I mean by this. For me combining the clean and the install looks strange, because they don't have anything in common. But combining install and deploy makes totally sense for me, because they both copy the build artifact to a repository. So maybe we can combine those into one. Esp. in terms of the deploy plugin I'm curious if its fully working. For me at work its working fine, but we only deploy to the company own nexus repository. In terms of deploying to e.g. Maven central it can't be used but other tools and plugins needs to be used from what I've read on Slack/Mailing lists. So does it really holds the promise we give with it?

With the current discussion about copying archiver code into the jar plugin to remove its depenency makes we also curious. As already mentioned in the discussion I'm not sure that it brings a benefit that the jar plugin will behave differnt in terms of archiving in the future than all other archiving plugins. So we might want to (I guess this was done in the past and there reasons to not do it) to have a more dynamic archiving plugin which can handle also ejbs (yes they are still used in slow moving enterprises and EJB is still an optional spec of Jakarta EE), ears, wars and all the others. Maybe by moving the configuration out of the pom.xml into format-dependent config files which are copied in the archive. This might be a naive thought of a less-tech person - but I'm just thinking in terms of reducing mainteance and in terms of at least five of the ten packaging plugins.

We might also want to look at how plugins work or how stable they are: Let's take surefire: It was heavily refactored due the fact that the JUnit Jupiter engine can handle all former individually supported testing tools. I personally was confused why failsafe exists as my thought was that's its literally the same as surefire. However, in a night session with Romain and Guillaume some weeks ago, I've learned that from Maven's POV ITs are something totally different that in my (and a loooot of other peoples) knowlegde. So there are reasons (which I can't tell you now, because I didn't have time to dive deeper into this). Another example might be the JMOD plugin: Since Java 24 this heavily depends on the JDK if the JDK ships the JMOD folder or not. And from my understanding (I don't know nothing about creating custom Java runtimes except the fact that it's possible) it has a releationship with Jlink (which is another plugin). As mentioned above: What a plugin does is primarly a design decision and as every decision there are pros and cons to do so. Iirc the compiler plugin gets changed with its new major version to also (or better?) support other compilers than the JDKs one. This brings more freedom to the user, but most probably more mainteance effort for the team.


So about the idea of merging the four plugins mentiones here. I would

* keep clean independent (esp as it has its own lifecycle) or remove it at all if we define that the clean lifecycle is overhead and could be a simple function of Maven. But I don't know what people also do during clean lifecycle. Maybe they hang in other plugins to clean up development environment. * keep resources independent, but take a look in how far it differs frome "remote-resource" plugin. According to plugin page the both copy resourfces into the output folder. * think about merging install and deploy plugin into deploy plugin as they both deploy the final artifacts to a repository.

Aside on this: Continue our work on improving the general workflow, e.g. tuning dependabot.

This were my two (maybe more) thoughts on this.
Have a great weekend everybody
Matthias


[1] https://aschemaven.github.io/maven-simple-reports/dependabot-prs/





Am 13.10.2026 um 17:31 schrieb Hervé Boutemy:
"why" is a very good question:
happy to start writing all the reasons I have, and let others add anything pro 
or against

my reasons for that change:
- as a user, yes, only one plugin version to manage instead of 4 (less 
Dependabot PRs, version in my pom.xml...)
- as a Maven PMC member maintaining 4 plugins if 4 Git repositories with 4 
votes, I'll have only 1
- code for install and deploy plugins are so similar that each time we modify 
one, we modify the other and do 2 releases
- these 4 plugins are quite small: break one goal when fixing another is IMHO 
pure theory
- on the branch for Maven 3 plugins vs branch for Maven 4 plugin API (that we 
currently have as beta), Id' be happy to have that simplification in the 
process: one single Maven 4 plugin, one stone, multiple birds

so many small problems, no big rock

please add any pro or cons

Regards,

Hervé

On 2026/10/12 19:08:33 Maarten Mulders wrote:
Hi all,

My first thought is: "why?" What benefit would it give? A few lines less
XML in a POM? Less upgrades? I think most Maven users write their POM
once and then use tools like Dependabot or Renovate to keep the plugins
up-to-date.

Additionally, I have a few concerns with this idea.

1. As a Maven user, if one "part" breaks with an upgrade, you cannot
upgrade - this would prevent usage of new features inside other "parts"
that you could be waiting for.
2. As a Maven developer, wouldn't this new "all-in-one" plugin become an
unnecessary large codebase?

I'm not saying I agree or disagree; I'd first like to know the "why".
And I'm curious what your ideas are regarding the concerns I brought up.


Maarten

On 09/10/2026 02:36, Hervé Boutemy via dev wrote:
while we are discussing structural changes for Maven 4 longer term, I think
instead of maintaining these 4 core plugins in a 4.x branch for these base
clean/resources/install/deploy operations, it may be the right moment to
consolidate them into one single plugin

no idea how to call this plugin
with its clean, resources, testResources, copy-resources, install, install-
file, deploy and deploy-file goals


see https://maven.apache.org/plugins/
compiler, site and surefire as independent plugins, even when we'll do a 4.x
branch, remains IMHO more reasonable


WDYT?

Hervé



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to