Coverage of the 50 most-used Maven plugins
Bleep refuses the plugin system Maven, Gradle, and sbt all settled on. That refusal is load-bearing: the case for build-as-data, the inner-loop guarantee, and the self-editing model all rest on it.
So the obvious next question, especially from a Java team coming off twenty years of Maven, is: what about all my plugins?
This page is the answer. It surveys the 50 most-used Maven plugins by real-world usage and shows where each one lands in bleep's model. Forty-seven out of 50 fit cleanly. The three that don't only exist because Maven's plugin system does: scaffolding Maven projects, building Maven plugins, and testing Maven plugins. None of them apply to bleep.
The remaining concern from a previous version of this page was Spring Boot. That one was real, and it's now solved: see Spring Boot proves the model for the design argument and the tutorial for the working setup.
Methodology
Rankings come from
mvnrepository.com
usage counts. The current site sorts by total Maven Central artifacts
that declare the plugin in their pom.xml, which is the right signal
for "how many real projects use this."
The top 10 comes from a March 2026 snapshot. Ranks 11 to 50 are reconstructed from a mix of October 2025 and October 2021 Wayback Machine paginated snapshots, since the modern site changed its metric mid-redesign and paginated listings in the new format aren't yet archived. The ranking is approximate from rank 11 down, but the set of plugins is accurate.
Anachronistic plugins (maven-site-plugin, maven-jxr-plugin) and
superseded ones (cobertura, findbugs) appear in the raw rankings
but are dropped here. They're listed at the end with reasons.
Categories
| Symbol | Category | What it means |
|---|---|---|
| 🟢 | Built-in | Bleep handles this out of the box. Either a CLI primitive (compile, test, package, link, publish, clean, run) or a script shipped in bleep's standard library (bleep-plugin-pgp, bleep-plugin-sonatype including the new Central Portal API, bleep-plugin-dynver, bleep-plugin-ci-release, bleep-plugin-native-image, bleep-plugin-spring-boot) |
| ⚙️ | Sourcegen | Maps to bleep's sourcegen mechanism. The plugin produces files the compiler reads, which is exactly what sourcegen is for |
| 📝 | User script | A main in your repo. Clear path, modest engineering. Typical case: distribution concerns (Docker, signing, doc gen, CI glue, migrations) |
| 🔧 | Meta to Maven | Only exists because Maven plugins exist. No equivalent needed |
The list
| # | Plugin | What it does | Bleep approach | Fit |
|---|---|---|---|---|
| 1 | org.apache.maven.plugins:maven-compiler-plugin | Compile Java | bleep compile | 🟢 Built-in |
| 2 | org.apache.maven.plugins:maven-source-plugin | Source JAR for publishing | Part of bleep publish | 🟢 Built-in |
| 3 | org.apache.maven.plugins:maven-javadoc-plugin | Javadoc JAR for publishing | Part of bleep publish | 🟢 Built-in |
| 4 | org.apache.maven.plugins:maven-surefire-plugin | Unit tests | bleep test | 🟢 Built-in |
| 5 | org.apache.maven.plugins:maven-jar-plugin | Build JAR | Part of bleep package | 🟢 Built-in |
| 6 | org.apache.maven.plugins:maven-gpg-plugin | PGP-sign artifacts | bleep-plugin-pgp | 🟢 Built-in |
| 7 | org.sonatype.plugins:nexus-staging-maven-plugin | OSSRH staging (legacy) | bleep-plugin-sonatype | 🟢 Built-in |
| 8 | org.apache.felix:maven-bundle-plugin | OSGi bundle and MANIFEST.MF | Script: write manifest, package | 📝 Script |
| 9 | org.apache.maven.plugins:maven-release-plugin | Tag, bump, stage release | DynVer + ci-release; version from git tag | 🟢 Built-in |
| 10 | org.apache.maven.plugins:maven-assembly-plugin | Custom distribution archives | Script using bleep's packaging API | 📝 Script |
| 11 | org.sonatype.central:central-publishing-maven-plugin | Publish to new Sonatype Central Portal | bleep-plugin-sonatype (new Central API) | 🟢 Built-in |
| 12 | org.apache.maven.plugins:maven-shade-plugin | Uber-JAR with relocation | Script using bleep packaging | 📝 Script |
| 13 | org.apache.maven.plugins:maven-dependency-plugin | Tree, copy, unpack, analyze | Native for inspection; script for copy/unpack | 🟢 + 📝 |
| 14 | org.jacoco:jacoco-maven-plugin | Test coverage | Script wires javaagent into bleep's test JVM args | 📝 Script |
| 15 | org.apache.maven.plugins:maven-enforcer-plugin | Build-time rules | JDK and deps via bleep.yaml; rule sets via script | 📝 Mixed |
| 16 | org.apache.maven.plugins:maven-failsafe-plugin | Integration tests | Just another project with isTestProject: true | 🟢 Built-in |
| 17 | org.apache.maven.plugins:maven-deploy-plugin | Upload artifacts | bleep publish | 🟢 Built-in |
| 18 | org.apache.maven.plugins:maven-install-plugin | Install to local repo | bleep publish-local | 🟢 Built-in |
| 19 | org.apache.maven.plugins:maven-clean-plugin | Delete target/ | bleep clean | 🟢 Built-in |
| 20 | org.apache.maven.plugins:maven-resources-plugin | Copy resources, filter | Native (resources); sourcegen (filtering) | 🟢 + ⚙️ |
| 21 | org.springframework.boot:spring-boot-maven-plugin | Fat JAR, run, build-info, build-image, AOT | bleep-plugin-spring-boot — see the tutorial | 🟢 Built-in |
| 22 | org.codehaus.mojo:versions-maven-plugin | Update dep versions | bleep build update-deps (lossless round-trip) | 🟢 Built-in |
| 23 | org.codehaus.mojo:exec-maven-plugin | Run main class or external program | bleep run for main; script otherwise | 🟢 + 📝 |
| 24 | org.apache.maven.plugins:maven-war-plugin | WAR file | Script (write WAR layout, package) | 📝 Script |
| 25 | org.apache.maven.plugins:maven-checkstyle-plugin | Checkstyle report | Pre-commit hook or CI script | 📝 Script |
| 26 | org.apache.maven.plugins:maven-pmd-plugin | PMD report | Pre-commit hook or CI script | 📝 Script |
| 27 | org.codehaus.mojo:build-helper-maven-plugin | Misc helpers (source roots, ports) | Source roots native; rest via script | 🟢 + 📝 |
| 28 | org.jetbrains.kotlin:kotlin-maven-plugin | Compile Kotlin | bleep compile (Kotlin is native) | 🟢 Built-in |
| 29 | org.apache.maven.plugins:maven-antrun-plugin | Run arbitrary tasks (Ant in pom.xml) | Write a Java/Scala script; or call ant from a script | 📝 Script |
| 30 | com.mycila:license-maven-plugin | License headers | Pre-commit hook | 📝 Script |
| 31 | com.github.eirslett:frontend-maven-plugin | Install Node, run npm scripts | node: config (native); npm via script | 🟢 + 📝 |
| 32 | org.apache.maven.plugins:maven-scm-plugin | SCM commands as Maven goals | Call git from a script | 📝 Script |
| 33 | io.fabric8:docker-maven-plugin | Build, run, push Docker images | Script: canonical "run a program" case | 📝 Script |
| 34 | com.google.cloud.tools:jib-maven-plugin | OCI images without daemon | Script (Jib has Java API and CLI) | 📝 Script |
| 35 | org.openapitools:openapi-generator-maven-plugin | OpenAPI to client/server stubs | Sourcegen | ⚙️ Sourcegen |
| 36 | org.apache.avro:avro-maven-plugin | Avro schemas to Java | Sourcegen | ⚙️ Sourcegen |
| 37 | org.flywaydb:flyway-maven-plugin | Database migrations | Script (Flyway CLI or Java API) | 📝 Script |
| 38 | org.liquibase:liquibase-maven-plugin | Database migrations | Script (Liquibase CLI or Java API) | 📝 Script |
| 39 | org.sonarsource.scanner.maven:sonar-maven-plugin | Upload to SonarQube | Script (Sonar Scanner CLI) | 📝 Script |
| 40 | org.eluder.coveralls:coveralls-maven-plugin | Upload coverage to coveralls.io | Script (HTTP POST to coveralls API) | 📝 Script |
| 41 | org.apache.maven.plugins:maven-archetype-plugin | New Maven project from template | Bleep needs no archetype mechanism; scaffold from any directory | 🔧 Meta |
| 42 | org.codehaus.mojo:properties-maven-plugin | Read and write .properties files | Trivial script | 📝 Script |
| 43 | org.apache.maven.plugins:maven-plugin-plugin | Generate Maven plugin descriptor | Bleep has no plugin system | 🔧 Meta |
| 44 | org.apache.maven.plugins:maven-invoker-plugin | Nested Maven builds for plugin tests | Bleep has no plugin system | 🔧 Meta |
| 45 | net.alchim31.maven:scala-maven-plugin | Compile Scala | bleep compile (Scala is core) | 🟢 Built-in |
| 46 | org.antlr:antlr4-maven-plugin | ANTLR grammars to parsers | Sourcegen | ⚙️ Sourcegen |
| 47 | org.jvnet.jaxb2.maven2:maven-jaxb2-plugin | XSD to Java | Sourcegen | ⚙️ Sourcegen |
| 48 | org.mybatis.generator:mybatis-generator-maven-plugin | Database schema to MyBatis Java | Sourcegen | ⚙️ Sourcegen |
| 49 | org.jsonschema2pojo:jsonschema2pojo-maven-plugin | JSON Schema to Java POJO | Sourcegen | ⚙️ Sourcegen |
| 50 | de.thetaphi:forbiddenapis | Banned API checker | Pre-commit or CI script | 📝 Script |
What this proves
The 50 most-used Maven plugins decompose into a handful of categories that bleep already handles:
- 17 plugins are built-ins. Compile, test, package, publish, sign,
Sonatype Central, native-image, the version-bump dance, and the full
Spring Boot integration via
bleep-plugin-spring-boot. The plugin you would have used in Maven, you don't need to think about in bleep. - 6 plugins are sourcegen. Avro, OpenAPI Generator, ANTLR, JAXB2, MyBatis Generator, jsonschema2pojo. Every one of these is a schema or IDL feeding a code generator. Bleep's sourcegen mechanism is built for exactly this shape.
- 19 plugins are user scripts. Container builds, doc generation, integration-test sidecars, CI glue, database migrations, coverage uploads, license headers, ad-hoc Ant-style steps, enforcer rules. They consume what the compiler produced, run when you say so, and don't need a task DAG to make sense.
- 5 plugins span built-in plus a script or sourcegen edge. Resource filtering, dependency inspection, exec, build helpers, frontend tooling. Clean primitive path for the common case, script or sourcegen for the edge.
That accounts for 47 out of 50 by mechanisms that already exist.
The remaining three only exist because Maven's plugin system does:
maven-plugin-plugin and maven-invoker-plugin are infrastructure
for authoring and testing Maven plugins, and maven-archetype-plugin
scaffolds Maven projects from XML archetypes. Without a plugin system
or Maven-shaped projects, bleep needs none of them.
The case that used to be hard
When this page was first written, spring-boot-maven-plugin was the
single entry that fit neither built-in, sourcegen, nor a one-script
weekend.
It bundles five different jobs under one Maven goal namespace:
spring-boot:repackageturns your.jarinto an executable fat-JAR with Spring Boot'sBOOT-INF/classloader layout.spring-boot:runstarts your application from a forked JVM with the right classpath.spring-boot:build-imagebuilds an OCI image through buildpacks.spring-boot:process-aotruns Spring's ahead-of-time compilation pass, generatingMETA-INF/native-image/hints and reflection metadata.spring-boot:startandspring-boot:stopmanage a background JVM for integration tests.
The honest assessment was that each piece was tractable as a script
because Spring Boot ships clean Java APIs for the parts that matter
(spring-boot-loader-tools, spring-boot-buildpack-platform, Spring
AOT). It just needed someone to write the script. So we did.
bleep-plugin-spring-boot now ships with three classes wrapping the
upstream API:
SpringBootRun— fork a JVM with profile, JVM args, agents, env vars, system properties.SpringBootRepackage— produce the executable fat JAR with layout, layers, requires-unpack, and reproducible timestamps.SpringBootBuildInfo— writeMETA-INF/build-info.propertiesas a sourcegen, so Spring Boot Actuator's/actuator/infoendpoint returns build metadata.
The Spring Boot proves the model page walks through why this integration was the right test of the build-as-data thesis. The Spring Boot tutorial walks through the working example: a DuckDB-backed REST service with a repository, service, controller, profile-specific configuration, and three named scripts that bind ports and JVM args explicitly. If you're a Spring Boot shop evaluating bleep, start there.
Build-image (Buildpacks) and AOT (native-image) are not in
bleep-plugin-spring-boot yet. The integration shape is the same: one
more SpringBoot* class wrapping spring-boot-buildpack-platform and
spring-aot. Open an issue or send a PR if either matters for your
project.
What about BOM and dependencyManagement?
Not a plugin, but worth mentioning. Maven's BOM and
dependencyManagement machinery is the one piece of Maven that bleep
has acknowledged as a real gap.
bleep import-maven inlines the
BOM-resolved versions at import time, so an existing service comes
across with explicit versions. New services need a template that lists
them. See Project status for the underlying
work.
Plugins dropped from this list
These appeared in the raw mvnrepository.com rankings but were dropped here as anachronistic or superseded:
| Plugin | Why dropped |
|---|---|
maven-site-plugin | Docusaurus, MkDocs, and Antora are the modern stack |
maven-jxr-plugin | IDEs do this |
maven-project-info-reports-plugin | GitHub README and bleep build show cover the use case |
cobertura-maven-plugin | Superseded by JaCoCo |
findbugs-maven-plugin | Superseded by SpotBugs |
maven-surefire-report-plugin | Bleep's test runner already emits HTML and TUI output |
These show up in usage rankings because they ship in old enterprise projects nobody touches. Including them on a coverage page would be honest, but listing them as "things bleep needs to support" would be misleading. The right answer for each is a modern alternative.
The broader point
The category "Maven plugin" is misleading. It contains:
- Things every build tool does natively (compile, test, package, publish): roughly 36% of the top 50.
- Schema-driven codegen (Protobuf, Avro, OpenAPI, JAXB2, ANTLR, MyBatis, jsonschema2pojo): roughly 12% of the top 50, all sourcegen.
- Distribution concerns (containers, signing, doc gen, CI glue, migrations): roughly 36% of the top 50, all programs.
- A long tail of one-offs, meta-plugins, and anachronisms: the rest.
When you decompose it that way, what about all my Maven plugins? becomes a much smaller question. Half of them don't need to be a build plugin at all. They need a primitive (compile, test, publish), a generator (sourcegen), or a script (everything else). Bleep ships all three.
See also
- Comparison with Maven
- Spring Boot proves the model — the design argument for the four-primitives claim, with Spring Boot as the worked example
- Spring Boot tutorial — the practical walkthrough of the worked example
- Sourcegen concept
- Scripts concept
- Project status