Skip to main content

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

SymbolCategoryWhat it means
🟢Built-inBleep 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)
⚙️SourcegenMaps to bleep's sourcegen mechanism. The plugin produces files the compiler reads, which is exactly what sourcegen is for
📝User scriptA main in your repo. Clear path, modest engineering. Typical case: distribution concerns (Docker, signing, doc gen, CI glue, migrations)
🔧Meta to MavenOnly exists because Maven plugins exist. No equivalent needed

The list

#PluginWhat it doesBleep approachFit
1org.apache.maven.plugins:maven-compiler-pluginCompile Javableep compile🟢 Built-in
2org.apache.maven.plugins:maven-source-pluginSource JAR for publishingPart of bleep publish🟢 Built-in
3org.apache.maven.plugins:maven-javadoc-pluginJavadoc JAR for publishingPart of bleep publish🟢 Built-in
4org.apache.maven.plugins:maven-surefire-pluginUnit testsbleep test🟢 Built-in
5org.apache.maven.plugins:maven-jar-pluginBuild JARPart of bleep package🟢 Built-in
6org.apache.maven.plugins:maven-gpg-pluginPGP-sign artifactsbleep-plugin-pgp🟢 Built-in
7org.sonatype.plugins:nexus-staging-maven-pluginOSSRH staging (legacy)bleep-plugin-sonatype🟢 Built-in
8org.apache.felix:maven-bundle-pluginOSGi bundle and MANIFEST.MFScript: write manifest, package📝 Script
9org.apache.maven.plugins:maven-release-pluginTag, bump, stage releaseDynVer + ci-release; version from git tag🟢 Built-in
10org.apache.maven.plugins:maven-assembly-pluginCustom distribution archivesScript using bleep's packaging API📝 Script
11org.sonatype.central:central-publishing-maven-pluginPublish to new Sonatype Central Portalbleep-plugin-sonatype (new Central API)🟢 Built-in
12org.apache.maven.plugins:maven-shade-pluginUber-JAR with relocationScript using bleep packaging📝 Script
13org.apache.maven.plugins:maven-dependency-pluginTree, copy, unpack, analyzeNative for inspection; script for copy/unpack🟢 + 📝
14org.jacoco:jacoco-maven-pluginTest coverageScript wires javaagent into bleep's test JVM args📝 Script
15org.apache.maven.plugins:maven-enforcer-pluginBuild-time rulesJDK and deps via bleep.yaml; rule sets via script📝 Mixed
16org.apache.maven.plugins:maven-failsafe-pluginIntegration testsJust another project with isTestProject: true🟢 Built-in
17org.apache.maven.plugins:maven-deploy-pluginUpload artifactsbleep publish🟢 Built-in
18org.apache.maven.plugins:maven-install-pluginInstall to local repobleep publish-local🟢 Built-in
19org.apache.maven.plugins:maven-clean-pluginDelete target/bleep clean🟢 Built-in
20org.apache.maven.plugins:maven-resources-pluginCopy resources, filterNative (resources); sourcegen (filtering)🟢 + ⚙️
21org.springframework.boot:spring-boot-maven-pluginFat JAR, run, build-info, build-image, AOTbleep-plugin-spring-boot — see the tutorial🟢 Built-in
22org.codehaus.mojo:versions-maven-pluginUpdate dep versionsbleep build update-deps (lossless round-trip)🟢 Built-in
23org.codehaus.mojo:exec-maven-pluginRun main class or external programbleep run for main; script otherwise🟢 + 📝
24org.apache.maven.plugins:maven-war-pluginWAR fileScript (write WAR layout, package)📝 Script
25org.apache.maven.plugins:maven-checkstyle-pluginCheckstyle reportPre-commit hook or CI script📝 Script
26org.apache.maven.plugins:maven-pmd-pluginPMD reportPre-commit hook or CI script📝 Script
27org.codehaus.mojo:build-helper-maven-pluginMisc helpers (source roots, ports)Source roots native; rest via script🟢 + 📝
28org.jetbrains.kotlin:kotlin-maven-pluginCompile Kotlinbleep compile (Kotlin is native)🟢 Built-in
29org.apache.maven.plugins:maven-antrun-pluginRun arbitrary tasks (Ant in pom.xml)Write a Java/Scala script; or call ant from a script📝 Script
30com.mycila:license-maven-pluginLicense headersPre-commit hook📝 Script
31com.github.eirslett:frontend-maven-pluginInstall Node, run npm scriptsnode: config (native); npm via script🟢 + 📝
32org.apache.maven.plugins:maven-scm-pluginSCM commands as Maven goalsCall git from a script📝 Script
33io.fabric8:docker-maven-pluginBuild, run, push Docker imagesScript: canonical "run a program" case📝 Script
34com.google.cloud.tools:jib-maven-pluginOCI images without daemonScript (Jib has Java API and CLI)📝 Script
35org.openapitools:openapi-generator-maven-pluginOpenAPI to client/server stubsSourcegen⚙️ Sourcegen
36org.apache.avro:avro-maven-pluginAvro schemas to JavaSourcegen⚙️ Sourcegen
37org.flywaydb:flyway-maven-pluginDatabase migrationsScript (Flyway CLI or Java API)📝 Script
38org.liquibase:liquibase-maven-pluginDatabase migrationsScript (Liquibase CLI or Java API)📝 Script
39org.sonarsource.scanner.maven:sonar-maven-pluginUpload to SonarQubeScript (Sonar Scanner CLI)📝 Script
40org.eluder.coveralls:coveralls-maven-pluginUpload coverage to coveralls.ioScript (HTTP POST to coveralls API)📝 Script
41org.apache.maven.plugins:maven-archetype-pluginNew Maven project from templateBleep needs no archetype mechanism; scaffold from any directory🔧 Meta
42org.codehaus.mojo:properties-maven-pluginRead and write .properties filesTrivial script📝 Script
43org.apache.maven.plugins:maven-plugin-pluginGenerate Maven plugin descriptorBleep has no plugin system🔧 Meta
44org.apache.maven.plugins:maven-invoker-pluginNested Maven builds for plugin testsBleep has no plugin system🔧 Meta
45net.alchim31.maven:scala-maven-pluginCompile Scalableep compile (Scala is core)🟢 Built-in
46org.antlr:antlr4-maven-pluginANTLR grammars to parsersSourcegen⚙️ Sourcegen
47org.jvnet.jaxb2.maven2:maven-jaxb2-pluginXSD to JavaSourcegen⚙️ Sourcegen
48org.mybatis.generator:mybatis-generator-maven-pluginDatabase schema to MyBatis JavaSourcegen⚙️ Sourcegen
49org.jsonschema2pojo:jsonschema2pojo-maven-pluginJSON Schema to Java POJOSourcegen⚙️ Sourcegen
50de.thetaphi:forbiddenapisBanned API checkerPre-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:repackage turns your .jar into an executable fat-JAR with Spring Boot's BOOT-INF/ classloader layout.
  • spring-boot:run starts your application from a forked JVM with the right classpath.
  • spring-boot:build-image builds an OCI image through buildpacks.
  • spring-boot:process-aot runs Spring's ahead-of-time compilation pass, generating META-INF/native-image/ hints and reflection metadata.
  • spring-boot:start and spring-boot:stop manage 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 — write META-INF/build-info.properties as a sourcegen, so Spring Boot Actuator's /actuator/info endpoint 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:

PluginWhy dropped
maven-site-pluginDocusaurus, MkDocs, and Antora are the modern stack
maven-jxr-pluginIDEs do this
maven-project-info-reports-pluginGitHub README and bleep build show cover the use case
cobertura-maven-pluginSuperseded by JaCoCo
findbugs-maven-pluginSuperseded by SpotBugs
maven-surefire-report-pluginBleep'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