JVM Build Tools: Ant, Maven & Gradle
|
This content was generated with the assistance of AI and should be verified against the official documentation before being relied on in production. The reference material consulted while preparing these pages is listed in the section bibliography. |
This section is a reference for the three build tools of the Java Virtual Machine world: Apache Ant, Apache Maven and Gradle. Build automation is the practice of describing how source code becomes a tested, packaged and published artifact once, in a file the tool can run, so that every developer and every CI server builds the same way. Dependency management is the companion practice of naming the libraries a project needs by coordinates, resolving them (and everything they need) from repositories, choosing one version when several are requested, and publishing the project’s own artifacts for others to consume. Ant describes the build as a graph of targets made of tasks, Maven as a fixed lifecycle of phases that plugin goals attach to, and Gradle as a graph of tasks that plugins and build scripts add and wire up. The pages here cover each tool from its first command to its extension points, and a set of shared pages put the three side by side.
The three tools
| Tool | What it is | Build model | Configuration files | Current version and Java needed to run |
|---|---|---|---|---|
Apache Ant |
An XML-driven build tool and a Java library of tasks, born in 2000 (first stand-alone release 1.1 on 19 July 2000). It has no built-in conventions and no dependency management of its own. |
Imperative: named targets that depend on each other, each made of tasks, run in dependency order. |
|
Ant 1.10.18 (6 September 2026), Ivy 2.6.0, Resolver Ant Tasks 2.0.0. Java 8 or later. |
Apache Maven |
A declarative build and project-management tool: a project object model, a standard directory layout, a fixed lifecycle and a repository system with coordinates. |
Declarative: the POM describes the project, the lifecycle phases are bound to plugin goals by the packaging, and convention supplies the rest. |
|
Maven 3.10.0 and the previous series' 3.9.16 (Java 8 or later); Maven 4.0.0-rc-7 is a release candidate (Java 17). |
Gradle |
A build tool with a programmable task graph, a rich plugin ecosystem, incremental builds, a build cache and variant-aware dependency management. |
Programmable: build scripts in the Kotlin or Groovy DSL configure plugins, which register tasks that Gradle wires into a graph and runs only when their inputs or outputs changed. |
|
Gradle 9.8.1 (and 8.14.6, the last 8.x release). A JVM from 17 to 27 to run it. |
Each tool has its own landing page with the details: Apache Ant, Apache Maven and Gradle. How they differ, and when to use which, is the topic of Comparing Ant, Maven & Gradle; the shared ideas (build graphs, conventions, caching) are in Build Automation Fundamentals and Dependency Management Fundamentals.
Release baseline
This section documents Apache Ant 1.10.18 (released on 6 September 2026) with Apache Ivy 2.6.0 (July 2026) and the Maven Resolver Ant Tasks 2.0.0 (August 2026) for dependencies, Apache Maven 3.10.0 (September 2026) with 3.9.16 as the previous stable minor line, and Gradle 9.8.1 with 8.14.6 as the last 8.x release, all checked on 2026-10-16. Maven 4.0.0-rc-7 is a release candidate: the download page still labels it a preview and no 4.0.0 release exists, so the Maven 4 pages say so and every Maven 4 feature is described against the release candidate. Unreleased work (an Ant 1.10.19 section in the Ant change log, Gradle 9.9 milestones) is not documented. Every page states what differs on the other maintained lines of its tool and how the tool’s support policy treats older releases. The examples were run on JDK 26 on macOS, using the tool releases named above, and the output shown on a page is the real output of the run; examples that could not be run (for instance publishing to the real Maven Central, which needs credentials) are labelled "not run here" on their page. The tool-by-tool release tables are on Ant: Versions & Release History, Maven: Versions & Release History and Gradle: Versions, Compatibility & Release History.
The tidepool scenario
The examples share one small, original project: tidepool, a toolkit that predicts tide heights for coastal stations from harmonic constituents. The same project is built with all three tools, so a page can show the same task in each of them and the pages build on one another. It has three modules:
-
tidepool-model, a library with the Java recordsStation,ConstituentandTideEventand the value typeHeight. -
tidepool-engine, a library that depends ontidepool-modeland on Apache Commons CSV to read the sample filedata/stations.csv; it showsapiversusimplementationin Gradle,compileversusruntimescope in Maven and Ivy configurations. -
tidepool-cli, an application with amainclass that uses picocli (an annotation processor, which exercises processor paths in all three tools); it is packaged as an executable JAR, an uber JAR and a distribution archive.
Around the modules the scenario adds unit tests in each module with JUnit Jupiter, an integration test of the command line
program against data/stations.csv, shared build logic (an Ant common.xml imported by each module, a Maven parent POM
and bill of materials, a Gradle convention plugin in build-logic), one custom build extension written once per tool (the
Ant task checkstations, the Maven plugin goal tidepool:check-stations and the Gradle plugin tidepool.station-check,
each validating the stations file), and publishing to a local file repository under build/repo or to a repository on
localhost. A page whose concept fits the scenario poorly uses a minimal standalone example instead (for instance Ant
selectors or Maven archetypes). No example uses a real credential or a real remote server.
How the books were used
Three books were consulted as references for concept coverage and structure: Erik Hatcher and Steve Loughran’s Java Development with Ant (Manning, 2002), written for Ant 1.5; Maria Odea Ching and Brett Porter’s Apache Maven 2 Effective Implementation (Packt, 2009), written for Maven 2.2; and Benjamin Muschko’s Gradle in Action (Manning, 2014), written for Gradle 1.7. None of them is the source of any example: every example is written against the current official documentation, the official documentation wins wherever they differ, and no text, code listing or figure is copied from a book. Each page states in prose where the books are outdated for the concepts it touches. The headline items are these.
-
Ant: Ant 1.10 needs Java 8 or later;
import,include,macrodefand antlibs (Ant 1.6 and later) replaceantcall-heavy builds and most of Ant-Contrib; JUnit 5 and later needjunitlauncher;javah,rmicandaptno longer work; the Nashorn engine is gone from the JDK; XDoclet, Cactus, Axis 1, CruiseControl and Tomcat 4 deployment are obsolete; and the book has no dependency management, which today means Ivy or the Maven Resolver Ant Tasks. -
Maven: Maven 2 reached end of life in 2014; Continuum and Archiva are retired Apache projects; plugin versions must be pinned; plain HTTP repositories have been blocked since Maven 3.8.1; EMMA and Cobertura are replaced by JaCoCo, FindBugs by SpotBugs and Clirr by japicmp or Revapi; OSSRH was shut down on 30 June 2025 in favour of the Central Portal; and Maven 4 brings the consumer POM and model version 4.1.0.
-
Gradle: the
<<task definition and thecompile,runtimeandtestCompileconfigurations were removed, as were themavenplugin withuploadArchivesand thejettyplugin;apply plugin:gave way to thepluginsblock, the Kotlin DSL is the default ofgradle init, version catalogs and convention plugins replaced ad-hoc versions andallprojectsblocks; the book has no toolchains, build cache, configuration cache or test suites; and JCenter and Bintray are gone.
The collected legacy-to-modern replacements are on Ant: Deprecations & Migration, Maven: Versions & Release History and Upgrading Gradle. The books are cited only through their publishers' pages in the bibliography.
New here? Read in this order
The pages can be read in any order; these paths are the suggested ones.
If you have never used a build tool
-
Build Automation Fundamentals — what a build is and the ideas all three tools share.
-
Dependency Management Fundamentals — coordinates, transitive dependencies and conflicts.
-
Comparing Ant, Maven & Gradle — the three tools side by side, and how to choose.
-
The getting-started page of the tool you picked (the Maven, Gradle or Ant paths below).
Choosing a tool
-
Comparing Ant, Maven & Gradle — the comparison table, the same project built three times, and the verdict.
-
Build Automation Fundamentals — the build graph, conventions and caching behind the differences.
-
Repositories & Publishing Across Tools — what you need to publish and consume binaries with each tool.
-
CI & IDE Integration — running each tool on a CI server and in an IDE.
Apache Ant
-
Apache Ant — what Ant is and when it still fits.
-
Installation and Running Ant.
-
Compiling Java, Testing with JUnit & junitlauncher and Packaging Archives.
-
Ivy Overview and Maven Resolver Ant Tasks — dependencies for Ant.
-
Multi-File Builds: import, include & subant and Macros & Presets.
-
Deprecations & Migration — what an old Ant build needs updating.
Apache Maven
-
Apache Maven — what Maven is and the support policy.
-
Philosophy, Coordinates & Directory Layout, then Installation and Getting Started.
-
Dependencies, Scopes & Mediation and Dependency Management & BOMs.
-
Maven 4: What’s New and Migrating to Maven 4 — the release candidate.
Gradle
-
Gradle — what Gradle is and the versions at a glance.
-
Core Concepts and Installation, then Gradle Wrapper.
-
Tasks and Java Projects.
-
Declaring Dependencies & Configurations and Version Catalogs.
-
Multi Project Builds and Convention Plugins & Sharing Build Logic.
-
Incremental Build, Build Cache and Configuration Cache & Isolated Projects.
Migrating an existing build
-
Migrating Between Tools — Ant to Maven, Ant to Gradle, Maven to Gradle and Ivy to the Resolver Ant Tasks.
-
Ant: Deprecations & Migration for an Ant build that must keep running on a current JDK.
-
Migrating to Maven 4 and Upgrading Gradle for moving to a newer release of the same tool.
Publishing and securing a build
-
Ecosystem & Learning Resources and Cheat Sheet for quick lookup.
What’s covered
Shared pages
-
Build Automation Fundamentals — Why builds are automated and what every JVM build tool has in common — on-demand, triggered and scheduled builds, the build graph as Ant targets, Maven phases and goals and Gradle tasks.
-
Dependency Management Fundamentals — How Ant with Ivy and the Maven Resolver Ant Tasks, Maven 3.10 and Gradle 9.8 name, find, mediate and pin dependencies — coordinates, direct and transitive dependencies, scopes versus configurations.
-
Repositories & Publishing Across Tools — What Ant, Maven and Gradle share when they publish and consume binaries — the Maven repository layout, maven-metadata.xml, checksums and signatures.
-
Comparing Ant, Maven & Gradle — Apache Ant 1.10.18 with Ivy 2.6.0, Apache Maven 3.10.0 and Gradle 9.8.1 compared side by side — the three build models (imperative targets, declarative lifecycle, programmable task graph).
-
Migrating Between Tools — How to move a JVM build between Apache Ant, Apache Maven and Gradle without breaking it — Ant to Maven (directory layout, dependencies, maven-antrun-plugin as a bridge).
-
Supply Chain Security — Supply-chain security for Ant, Maven and Gradle builds — the trust model of a build file, verifying tool distributions and wrappers (SHA-512, SHA-256, PGP, wrapper validation).
-
CI & IDE Integration — Run Ant, Maven and Gradle builds headless on a CI server and from an IDE: non-interactive flags, exit codes and XML reports, dependency and configuration caching.
Apache Ant
-
Apache Ant — Ant in one page: what it is, when to use it today, how Ivy and the Maven Resolver Ant Tasks add dependency management, the versions at a glance and the Ant reading path.
Getting started
-
Versions & Release History — Apache Ant release lines 1.6 to 1.10.18 with dates and the changes that matter, the Java version each line needs at run time, how newer JDKs removed features Ant had to follow, the security advisories.
-
Installation — Installing Apache Ant 1.10.18: system requirements, downloading and verifying the binary archive (SHA-512, PGP, SBOM), the directory layout, JAVA_HOME, ANT_HOME and PATH, configuration files.
-
Running Ant — The Ant 1.10.18 command line, option by option — ant [options] [target …], build file selection with -f and -find, properties with -D and -propertyfile, logging levels, logfiles.
The build file
-
Build File Structure — How an Apache Ant 1.10.18 build file is put together — the project element and its name, default and basedir attributes, description, targets and tasks, attributes and nested elements.
-
Targets & Extension Points — Apache Ant 1.10.18 targets in depth — depends and the resolution order, each target running once per dependency chain, if and unless on targets, description and ant -p, the default target.
-
Properties — How Apache Ant properties work — immutability and first definition wins, command-line precedence, property expansion and dollar escaping, the property task and all its attributes, built-in properties.
-
Paths, Filesets & Patterns — How Apache Ant 1.10.18 describes sets of files and class paths — path-like structures, pathelement, pathconvert, manifestclasspath, includeantruntime and build.sysclasspath.
-
Selectors — Ant selectors — choosing the files of a fileset by content, date, size, depth, name, comparison with another tree, cache, ownership and permissions; the container selectors and, or, not.
-
Resource Collections — Ant resources and resource collections — the resource abstraction of Ant 1.7 (file, javaresource, javaconstant, zipentry, tarentry, compressed resources, url, string, propertyresource).
Datatypes and core tasks
-
Filters & Mappers — Apache Ant 1.10.18 filtersets and @token@ replacement, the filter task.
-
Conditions & Control Flow — Apache Ant 1.10.18 conditions and control flow — the condition task and every core condition (not, and, or, xor, available, uptodate, os, equals, isset, checksum, http, socket, filesmatch, matches, javaversion, antversion and more).
-
Compiling Java — Compiling Java with Apache Ant 1.10.18 — the javac task attribute by attribute (srcdir, destdir, release versus source and target, includeantruntime, debug, encoding, compiler values including modern and javac10+, fork, modulepath, modulesourcepath, nativeheaderdir, compilerarg and annotation processors).
-
Packaging Archives — Packaging with Apache Ant 1.10.18 — the jar task (manifest, service, indexjars, multi-release JARs), the manifest and manifestclasspath tasks, runnable and uber JARs, war and ear.
-
File Operations — Ant’s file tasks in detail — copy with filtering, encodings and mappers, move, delete and its default-excludes trap, mkdir, sync, touch, concat, fixcrlf, replace, replaceregexp, tempfile, truncate.
-
Running Programs — How an Ant build runs Java and native programs — the java task with classname, jar, module and sourcefile, fork, spawn, clonevm, jvmarg, sysproperty, timeout, failonerror and assertions.
-
Testing with JUnit & junitlauncher — Running unit tests from Apache Ant 1.10.18 — the junitlauncher task for JUnit 5 and 6 (required jars, the recommended ANT_HOME/lib setup, test and testclasses, listeners and the legacy-xml format, includeTags and excludeTags, includeEngines, fork and forkMode, haltOnFailure and failureProperty).
-
Documentation & XML — Generate API documentation and process XML with Apache Ant 1.10.18: the javadoc task (packages, modules, groups, custom tags, failonwarning and its single-digit warning-count bug), xslt, xmlvalidate.
-
Network & Remote Tasks — Download files, talk to FTP, SSH, SMTP and SQL servers from an Apache Ant 1.10.18 build: get (usetimestamp, retries, authenticateOnRedirect), setproxy, sshexec, scp, sshsession, ftp, mail and sql.
-
Utility Tasks — The small Apache Ant 1.10.18 tasks every build file uses: echo and log levels, input and input handlers (and what -noinput really does), record, tstamp with reproducible dates, checksum, buildnumber.
Structuring and extending builds
-
Multi-File Builds: import, include & subant — How to split an Apache Ant build over several files — import and include (target overriding, prefixes, ant.file.project properties, optional, as).
-
Macros & Presets — Reusable build logic inside one Apache Ant project — macrodef with attribute, element, text, implicit elements, the at-brace expansion versus the dollar-brace expansion and doubleexpanding, backtrace.
-
Scripting — Scripting inside Apache Ant 1.10.18 build files — the script task, scriptdef, scriptcondition, scriptselector, scriptfilter and scriptmapper, BSF versus JSR 223 and the manager attribute.
-
Listeners, Loggers & Input Handlers — How Apache Ant reports what a build does and asks the user questions — build events, BuildListener versus BuildLogger, the -listener -logger -logfile -emacs and -inputhandler switches.
-
Writing Custom Tasks — Writing your own task for Apache Ant 1.10.18 — a Java class that extends Task, attribute setters and type conversion, nested text and nested elements (create, add and addConfigured), filesets.
-
Custom Types, Conditions & Selectors — Extending Apache Ant with your own datatypes — typedef and componentdef with every attribute, custom conditions, selectors in their three styles, container selectors, resource collections, mappers.
-
Antlibs & Namespaces — Antlibs and XML namespaces in Apache Ant 1.10.18 — how core, optional and third-party tasks reach a build file, the antlib.xml descriptor, antlib: namespace URIs and ant:current.
-
Embedding Ant — Running Apache Ant 1.10.18 from Java code — Project, ProjectHelper.configureProject, executeTarget, DefaultLogger and BuildListener, using a single task without a build file, Main.startAnt.
Dependency management for Ant
-
Ivy Overview — What Apache Ivy 2.6.0 is, its status and release history, the terminology (organisation, module, revision, configuration), the configure-resolve-retrieve-report-publish cycle.
-
Ivy: Module Descriptors & Configurations — The Ivy module descriptor ivy.xml in depth: info and extends, configurations (visibility, extends, transitive, defaultconf, defaultconfmapping, confmappingoverride, include), publications.
-
Ivy: Settings & Resolvers — The Apache Ivy 2.6.0 settings file in depth: ivysettings.xml, variables and properties, include, caches and TTL, lock strategies, credentials.
-
Ivy: Conflicts & Versions — How Apache Ivy 2.6.0 decides which revision wins: the conflict managers (latest-revision, latest-time, latest-compatible, strict, all and the new nearest), force, override and exclude.
-
Ivy Ant Tasks — The Apache Ivy 2.6.0 Ant tasks one by one — settings and configure, resolve (log levels, inline mode, nested dependencies, failures, concurrency), retrieve (patterns, sync, type, mappers), cachepath.
-
Ivy: Publishing & Multi-Project Builds — Publishing modules with Apache Ivy 2.6.0 and building several of them in order — deliver and publish to a file repository, build numbers, buildlist with subant, inter-project dependencies.
-
Maven Resolver Ant Tasks — The Maven Resolver Ant Tasks 2.0.0 for Apache Ant 1.10.18 — the uber JAR and the antlib namespace, resolve, install, deploy, pom, createPom, dependencies, remote and local repositories, mirrors.
Practice
-
Deprecations & Migration — What Apache Ant 1.10.18 deprecated, removed or made impossible on newer JDKs — the Ant 1.9 to 1.10 upgrade guide, deprecated tasks and their replacements, javah, rmic, apt, image.
Apache Maven
-
Apache Maven — Maven in one page: what it is and is not, the support policy, the status of Maven 4, the Java needed per release line and the Maven reading path.
Getting started
-
Versions & Release History — Apache Maven release lines from 1.0 to 4.0.0-rc-7 with dates and the changes that matter, the Java version each line needs to run, the support policy and end-of-life lines.
-
Philosophy, Coordinates & Directory Layout — What Maven is for and what it deliberately is not, convention over configuration and the super POM, the standard directory layout and the target directory.
-
Installation — Installing Apache Maven 3.10.0: the JDK prerequisite, downloading and verifying the binary archive (SHA-512 and PGP signature), the distribution layout, PATH and mvn -v, JAVA_HOME and .mavenrc.
-
Getting Started — A first Maven project from start to finish on Maven 3.10.0 and JDK 26: generating my-app with archetype:generate and maven-archetype-quickstart, reading the generated POM, mvn compile, test.
-
Running Maven (CLI) — The Apache Maven command line — the mvn synopsis, phases versus goals versus plugin:version:goal, output control (-B, -q, -e, -X, -V, -l, -ntp, colour), system properties and profiles (-D, -P).
-
Configuring Maven — Configuring Apache Maven itself rather than a project: MAVEN_OPTS, MAVEN_ARGS, mavenrc files, the .mvn directory (maven.config, jvm.config, extensions.xml).
The POM, lifecycle and plugins
-
POM Fundamentals — What a Maven POM is, the minimal POM and what Maven fills in around it, the elements under project, coordinates and packaging (finalName), properties and their precedence, project model variables.
-
Inheritance, Aggregation & the Effective POM — How Apache Maven POMs relate to each other — the parent element and relativePath, the Super POM and its changes in Maven 3.10, what a child inherits and what it does not, URL path appending.
-
Build Lifecycle — The Apache Maven build lifecycles — the clean, default and site lifecycles and every phase, how phases bind to plugin goals.
-
Plugins & Their Configuration — How Apache Maven plugins work and how to configure them — build and reporting plugins, reading plugin help with the help goal, configuring simple values, complex objects, lists, maps and properties.
Dependency management
-
Dependencies, Scopes & Mediation — How Maven declares and resolves dependencies — the dependency element, the six scopes (compile, provided, runtime, test, system, import) and the scope transitivity table, transitive dependencies.
-
Dependency Management & BOMs — How Maven centralises dependency versions, scopes and exclusions with dependencyManagement, how a managed version beats mediation for transitive dependencies.
-
Versions, SNAPSHOTs & Ranges — How Apache Maven treats versions — release and SNAPSHOT versions, timestamped snapshots and the baseVersion, the version-level and artifact-level repository metadata.
-
Dependency Analysis & Convergence — How to inspect, audit and police a Maven dependency graph — dependency:tree with -Dverbose, -Dincludes and output formats, dependency:analyze and analyze-only, analyze-dep-mgt.
-
Installing Third-Party JARs & Relocation — How to get a JAR that is not on Maven Central into a Maven build — install:install-file into the local repository or a project-local repository.
Repositories, settings and profiles
-
Repositories, Mirrors & Repository Managers — Where Maven gets and keeps artifacts — the local repository and its _remote.repositories records, remote repositories and Central, repository order and ids, offline builds and cached failures.
-
settings.xml & Password Encryption — The Maven settings.xml file in full: user, installation and project (Maven 4) locations, localRepository, offline, pluginGroups, servers with aliases and repositoryOrigins, mirrors, proxies.
-
Profiles — How Apache Maven build profiles work — where profiles live (pom.xml and settings.xml), what a profile may change.
Multi-module builds
-
Multi-Module Builds & the Reactor — How Apache Maven builds several projects in one command — the reactor and its collect, sort, select and build steps, the sorting rules and cycle detection, selecting projects with -pl, -am, -amd.
-
CI-Friendly Versions — How to build Apache Maven projects whose version is a placeholder set from the command line — the revision, sha1 and changelist properties (since Maven 3.5.0), single-project and multi-module setups.
Building, testing and packaging
-
Resources & Filtering — How Apache Maven copies resources and test resources into target/classes, the Resources Plugin goals (resources, testResources, copy-resources), resource directories with targetPath.
-
Compiling & Toolchains — Compiling Java with Apache Maven — the maven-compiler-plugin 3.16.0 and its goals, maven.compiler.release versus source and target, compiler arguments and lint, parameter names, preview features.
-
Testing with Surefire — Running unit tests with the Apache Maven Surefire Plugin 3.6.0 — the test phase and the surefire:test goal, how the single JUnit Platform provider picks the Jupiter.
-
Integration Testing with Failsafe — Running integration tests with the Apache Maven Failsafe Plugin — why a second test plugin exists, the pre-integration-test, integration-test, post-integration-test and verify phases.
-
Packaging JARs, WARs & Manifests — Packaging with Apache Maven 3.10.0 — the maven-jar-plugin and maven-war-plugin.
-
Uber JARs with Shade & Assembly — How to ship a Maven project together with its dependencies — the Maven Shade Plugin (executable JAR, resource transformers including ServicesResourceTransformer, filters and signed JARs, class relocation, minimizeJar, the dependency-reduced POM, attached shaded artifacts) and the Maven Assembly Plugin (predefined descriptors jar-with-dependencies, bin, src and project, custom descriptors with fileSets, dependencySets and moduleSets, container descriptor handlers) — packaging tidepool as a distribution.
-
Site & Reporting — Generating a project web site and reports with the Apache Maven Site Plugin 3.22.0 — the site lifecycle, what mvn site produces with no configuration, src/site content in Markdown, APT, Xdoc and FML.
Releasing and publishing
-
Install, Deploy & Distribution Management — How a Maven build publishes what it built — the install and deploy phases, the Install and Deploy plugins and their goals, distributionManagement (repository, snapshotRepository, site, relocation).
-
Releasing — How a Maven project is released — the Maven Release Plugin with Git (the scm section, release:prepare and its 17 phases, dry runs, release.properties, the release and development commits, the tag, release:perform and the checkout it deploys from, rollback, branch and update-versions).
-
Publishing to Maven Central — How to publish a Maven project to Maven Central through the Central Publisher Portal — the requirements (namespace, POM metadata, sources and Javadoc JARs, checksums, GPG signatures).
-
Archetypes — What a Maven archetype is, generating a project with archetype:generate in interactive and batch mode, the catalogs (remote, local, internal) and how to filter the list, the archetypes Maven provides.
Tooling and internals
-
Maven Wrapper — The Apache Maven Wrapper (mvnw and mvnw.cmd): creating it with mvn wrapper:wrapper, what the scripts do and where they cache the Maven distribution.
-
Extensions — How Apache Maven extensions work and how they differ from plugins — core extensions (.mvn/extensions.xml, user-wide and installation-wide extensions.xml in Maven 3.10, maven.ext.class.path, lib/ext).
-
Build Performance: Cache, Parallel Builds & mvnd — Making Apache Maven builds faster — parallel reactor builds with -T and what makes them safe or pointless.
-
Maven Resolver — What Apache Maven Resolver is and how Maven drives it — the Resolver releases inside Maven 3.9, 3.10 and 4.
-
Enforcer — Enforcing build rules with the Apache Maven Enforcer Plugin 3.6.3 and the Enforcer Extension — binding enforcer:enforce to a phase.
-
Security & Reproducible Builds — What Apache Maven trusts and what it verifies — the security model, the published vulnerabilities, the HTTP blocker and checksums.
-
Writing Plugins — Writing your own Apache Maven plugin — the maven-plugin packaging and the plugin descriptor, Mojos with @Mojo and @Parameter, parameter conversion and precedence.
Maven 4 (release candidate)
-
Maven 4: What’s New — What changes in Apache Maven 4 (release candidate 4.0.0-rc-7) compared with Maven 3.10.0 — Java 17 to run Maven, the build POM and consumer POM split, model version 4.1.0, subprojects.
-
Maven 4: POM Model & Consumer POM — The Apache Maven 4 (release candidate 4.0.0-rc-7) POM changes in depth — model version 4.1.0 and its XSD, what the new schema adds, deprecates and removes, subprojects.
-
Maven 4: Lifecycle — The Maven 4 (release candidate 4.0.0-rc-7) lifecycle compared with Maven 3.10.0 — the tree of phases, before: and after: hooks for every phase, the all and each phases.
-
Migrating to Maven 4 — A hands-on migration of a Maven 3 project to Maven 4 (release candidate 4.0.0-rc-7) in the three steps of the official guide — prepare on Maven 3.9 and 3.10, test on Maven 4.
Practice
-
Troubleshooting & Best Practices — How to diagnose a failing Apache Maven build and keep it healthy — reading the console output, -e and -X.
Gradle
-
Gradle — Gradle in one page: what it is, who the documentation is written for, the versions at a glance, Gradle versus Develocity and the Gradle reading path.
Fundamentals
-
Versions, Compatibility & Release History — Gradle release history from 1.0 to 9.8.1 with dates and the changes that matter, the Java version each major line needs to run, the compatibility matrix for Java, Kotlin, Groovy and Android.
-
Core Concepts — The vocabulary of a Gradle build — build, project, root project and subprojects, build script, settings file, task and task graph, plugin.
-
Installation — Installing Gradle 9.8.1: when you do not need to, the JDK 17+ prerequisite, downloading and verifying the binary distribution (SHA-256), the distribution layout, PATH and GRADLE_HOME, SDKMAN!.
-
Gradle Wrapper — The Gradle Wrapper (gradlew, gradlew.bat and gradle/wrapper): adding it with the wrapper task and every option of --gradle-version, --distribution-type.
-
Command-Line Interface — The Gradle 9.8.1 command line — gradle [taskName…] [--option-name…], task selectors and project paths, name abbreviation, -x, --rerun and --rerun-tasks, --continue.
-
Build Environment & Properties — How a Gradle build is configured from outside its scripts: the four channels (command line, system properties, Gradle properties and environment variables).
-
Gradle Daemon — The Gradle Daemon in Gradle 9.8.1: why a long-lived build JVM exists, the client versus the daemon, --status, --stop, --no-daemon and org.gradle.daemon.
-
Directories & Logging — The directories Gradle uses in Gradle 9.8.1 and the log it writes: the Gradle User Home (caches, wrapper/dists, daemon, init.d, jdks, native).
-
Build Lifecycle — The Gradle build lifecycle — the initialization, configuration and execution phases and what runs in each, the order of settings and build script output.
Build authoring
-
Settings & Build Scripts — The two Gradle scripts every build is made of — settings.gradle(.kts) with pluginManagement, settings plugins, dependencyResolutionManagement and RepositoriesMode, rootProject.name and include.
-
Kotlin DSL — The Gradle Kotlin DSL (.gradle.kts scripts): script file names, implicit imports, type-safe model accessors and when they are available.
-
Groovy DSL & Migrating to Kotlin — The Gradle Groovy DSL (build.gradle) and how to move a build to the Kotlin DSL: the Groovy build-script primer (the Project object, properties, methods, blocks, delegation, closures, local variables).
Tasks and the lazy model
-
Tasks — Gradle tasks in depth — what a task is (actions, inputs, outputs, dependencies, a path and a type), listing tasks with tasks and help --task, groups and descriptions, hidden tasks.
-
Lazy Configuration & Providers — Gradle’s Provider API: Property and Provider, map/flatMap/zip/orElse/filter, connecting task inputs to outputs with automatic task dependencies, ListProperty, SetProperty, MapProperty.
-
Writing Custom Tasks — Writing your own task for Gradle 9.8.1 — a task class that extends DefaultTask, abstract classes and managed properties, the @TaskAction method.
-
Incremental Build — Gradle incremental build — how Gradle decides that a task is UP-TO-DATE, NO-SOURCE, FROM-CACHE or has to run, task inputs and outputs declared with annotations and with the runtime API.
-
Working with Files — Working with files in Gradle — locating files with file(), layout.projectDirectory and layout.buildDirectory.
-
Worker API & Build Services — Gradle Worker API and shared build services written against Gradle 9.8.1 — WorkerExecutor, WorkAction and WorkParameters, the noIsolation.
Plugins and build structure
-
Plugins Overview — How Gradle plugins work and where they come from — core plugins and the plugin reference, community plugins and the Gradle Plugin Portal with its marker artifacts, local plugins.
-
Convention Plugins & Sharing Build Logic — How a multi-project Gradle 9.8.1 build shares its configuration without copying it — the problem with copied build scripts and allprojects/subprojects blocks.
-
Binary Plugins — Writing a binary Gradle plugin for Gradle 9.8.1 — the Plugin<Project> class, the java-gradle-plugin (plugin development) plugin and the plugin descriptor, plugin ids.
-
Testing & Publishing Plugins — Testing and publishing a Gradle plugin on Gradle 9.8.1 — the three test levels, unit tests with ProjectBuilder.
-
Multi Project Builds — How a Gradle build is split into a root project and subprojects — the settings include and project paths, project dependencies with api and implementation.
-
Composite Builds — Composite builds in Gradle 9.8.1 — includeBuild in the settings file and --include-build on the command line, automatic dependency substitution by group and name.
Dependency management
-
Declaring Dependencies & Configurations — How a Gradle build declares what it depends on and where each dependency is used — module, project and file dependencies and their notations.
-
Repositories & Content Filtering — Where Gradle looks for dependencies and plugins — Maven Central, Google and the Plugin Portal shorthands, custom Maven and Ivy repositories.
-
Version Catalogs — Gradle version catalogs on Gradle 9.8.1 — the gradle/libs.versions.toml file with its versions, libraries, bundles and plugins tables, rich versions.
-
Platforms, Constraints & Rich Versions — How Gradle 9.8.1 decides which version of a module to use — version syntax and ordering, rich versions (require, strictly, prefer, reject and the !! shorthand).
-
Dependency Resolution, Conflicts & Capabilities — How Gradle turns declared dependencies into a classpath — graph resolution and artifact resolution.
-
Variant-Aware Resolution & Module Metadata — Variant-aware dependency resolution in Gradle 9.8.1 — components, variants, attributes and capabilities, the outgoing variants and resolvable configurations reports.
-
Resolution Rules & Substitution — Gradle 9.8.1 resolution rules — forcing versions with force and eachDependency, dependency substitution (module to module, module to project, project to module, conditional rules), exclusions.
-
Dependency Locking, Verification & Caching — Gradle dependency locking, dependency verification and the dependency cache — gradle.lockfile and --write-locks, lock modes and --update-locks.
JVM builds, testing and publishing
-
Java Projects — Building Java with Gradle — the java-base, java, java-library and application plugins and what each adds, source sets and the standard layout (and how to change it).
-
Toolchains — Java toolchains in Gradle 9.8.1: why a build should say which JDK it needs, java.toolchain.languageVersion, vendor, implementation and nativeImageCapable.
-
Testing JVM Projects — Testing JVM code with Gradle 9.8.1: the Test task and how it forks a JVM, the JUnit Platform with useJUnitJupiter, JUnit 4 through Vintage, TestNG and Spock, filtering with --tests and tags.
-
Publishing — Publishing JVM libraries with Gradle 9.8.1 — the maven-publish plugin (publications from components, the generated POM, versionMapping, relocation, custom artifacts, repositories and credentials, publishToMavenLocal).
Performance
-
Build Cache — The Gradle build cache on Gradle 9.8.1 — what it is and how it differs from up-to-date checks, the configuration cache and the dependency cache, enabling it (--build-cache, org.gradle.caching=true).
-
Configuration Cache & Isolated Projects — The Gradle configuration cache and Isolated Projects on Gradle 9.8.1 — how a cache hit skips the configuration phase.
-
Performance Profiling & Build Scans — Making Gradle 9.8.1 builds faster and knowing why they are slow: measure first (the --profile HTML report, Build Scans, the Gradle Profiler).
Integration, migration and upkeep
-
Ant Integration — Using Apache Ant from Gradle 9.8.1 and moving an Ant build to Gradle step by step — the ant object (AntBuilder) in the Groovy and Kotlin DSLs, Ant tasks and types.
-
Migrating from Maven — Moving a multi-module Maven build to Gradle 9.8.1 step by step — the manual’s migration order, gradle init on a pom.xml and what it gets wrong in a multi-module build.
-
Init Scripts & the Tooling API — Init scripts and the Tooling API in Gradle 9.8.1: where init scripts are found and in which order, writing one (the Gradle object, settingsEvaluated, allprojects, initscript classpath).
-
Upgrading Gradle — Upgrading a Gradle build from Gradle 8.14 to 9.8.1 and onwards: the official procedure (deprecations with --warning-mode and --scan, updating plugins, the wrapper task).
-
Best Practices & Troubleshooting — Gradle best practices and troubleshooting on Gradle 9.8.1: the official best-practices index with the release that introduced each practice and the page of this site that explains it.
Ecosystem, learning and quick reference
-
Ecosystem — plugins, repository managers, CI and IDE products, related tools and where to keep learning (official tutorials, training and books), each labelled as official or third party.
-
Cheat Sheet — a one-page side-by-side cheat sheet of the commands, files and vocabulary of the three tools.
Bibliography
Every source used to write this section is listed here, each linked to its official site; the list was collected from the
Source: lines, the == References sections, the tables and the other links of the pages of this section, plus the one
standard (RFC 9580) that pages name without linking, and each page lists the subset it derives from under its own
== References heading. Entries are grouped by project and, inside a project, by documentation set; a label is the path
of the page below the documentation set’s address (a CVE, an RFC or a Gradle release is labelled by its number).
Official documentation is the source of every example; the books and third-party projects are marked as such.
Apache Ant
Start with the Apache Ant home page, the Ant manual and the Apache Ivy home page; the Maven Resolver Ant Tasks are documented by the Maven project.
-
ant.apache.org/: ant_in_anger, ant_task_guidelines, antnews, bindownload, easyant, external, faq, projects, security
-
ant.apache.org/antlibs/: ant.apache.org/antlibs/, antunit, compress, cyclonedx, cyclonedx/manual/componentbom, dotnet, proper, props, retired, vss
-
ant.apache.org/ivy/: ant.apache.org/ivy/, download, features, history/latest-milestone/index, ivyde, m2comparison, security
-
ant.apache.org/ivy/history/2.6.0/: ant, bestpractices, compatibility, concept, index, install, ivyfile, ivyfile/artifact-exclude, ivyfile/artifact, ivyfile/conf, ivyfile/configurations, ivyfile/conflict, ivyfile/conflicts, ivyfile/dependencies, ivyfile/dependency-artifact, ivyfile/dependency-conf, ivyfile/dependency, ivyfile/exclude, ivyfile/extends, ivyfile/include, ivyfile/info, ivyfile/override, ivyfile/publications, principle, 2.6.0, resolver/bintray, resolver/chain, resolver/dual, resolver/filesystem, resolver/ibiblio, resolver/ivyrep, resolver/mirrored, resolver/packager, resolver/sftp, resolver/ssh, resolver/url, settings, settings/caches, settings/caches/cache, settings/caches/ttl, settings/conflict-managers, settings/credentials, settings/include, settings/latest-strategies, settings/lock-strategies, settings/module, settings/modules, settings/property, settings/resolvers, settings/settings, settings/signers, settings/version-matchers, standalone, systemproperties, terminology, tutorial/conf, tutorial/multiproject, tutorial/start, use/artifactproperty, use/artifactreport, use/buildlist, use/buildnumber, use/cachefileset, use/cachepath, use/checkdepsupdate, use/cleancache, use/configure, use/convertpom, use/deliver, use/dependencytree, use/findrevision, use/info, use/install, use/listmodules, use/makepom, use/postresolvetask, use/publish, use/report, use/repreport, use/resolve, use/retrieve, use/settings, use/var
-
ant.apache.org/manual/: ant.apache.org/manual/, antexternal, argumentprocessor, clonevm, develop, dirtasks, ide, ifunless, inputhandler, install, intro, javacprops, listeners, projecthelper, properties, proxy, running, sysclasspath, targets, tasksoverview, tutorial-HelloWorldWithAnt, tutorial-tasks-filesets-properties, tutorial-writing-tasks, using
-
ant.apache.org/manual/Tasks/: ant, antcall, antstructure, antversion, apply, augment, available, basename, bindtargets, buildnumber, checksum, chmod, common, componentdef, concat, condition, conditions, copy, copydir, copyfile, cvs, defaultexcludes, delete, deltree, depend, diagnostics, dirname, ear, echo, echoproperties, echoxml, ejb, exec, fail, filter, fixcrlf, ftp, genkey, get, gzip, hostinfo, image, import, include, input, jar, java, javac, javadoc, javah, jlink, jmod, jspc, junit, junitlauncher, junitreport, length, link, loadfile, loadproperties, loadresource, local, macrodef, mail, makeurl, manifest, manifestclasspath, mimemail, mkdir, mklink, move, native2ascii, parallel, pathconvert, presetdef, property, propertyfile, propertyhelper, recorder, rename, replace, replaceregexp, resourcecount, retry, rmic, schemavalidate, scp, script, scriptdef, sequential, setpermissions, setproxy, signjar, sleep, sql, sshexec, sshsession, style, subant, symlink, sync, tar, taskdef, tempfile, touch, truncate, tstamp, typedef, unzip, uptodate, verifyjar, vss, waitfor, war, whichresource, xmlproperty, xmlvalidate, zip
-
ant.apache.org/manual/Types/: antlib, assertions, classfileset, custom-programming, description, dirset, filelist, fileset, filterchain, filterset, mapper, multirootfileset, namespace, patternset, permissions, propertyset, redirector, regexp, resources, selectors, tarfileset, xmlcatalog, zipfileset
-
ant.apache.org/manual/api/: index, org/apache/tools/ant/BuildEvent, org/apache/tools/ant/BuildListener, org/apache/tools/ant/DefaultLogger, org/apache/tools/ant/Main, org/apache/tools/ant/Project, org/apache/tools/ant/ProjectHelper, org/apache/tools/ant/Task, org/apache/tools/ant/launch/Launcher
-
maven.apache.org/resolver-ant-tasks/: maven.apache.org/resolver-ant-tasks/, apidocs/index, apidocs/org/apache/maven/resolver/internal/ant/tasks/CreatePom, apidocs/org/apache/maven/resolver/internal/ant/tasks/Resolve
-
repo1.maven.org/: maven2/org/apache/ivy/ivy, maven2/org/apache/ivy/ivy/2.6.0, maven2/org/apache/ivy/ivy/maven-metadata.xml
-
Other pages, repositories and metadata: archive.apache.org/dist/ant/, github.com/apache/ant-ivy, github.com/apache/ant/blob/master/WHATSNEW, github.com/apache/ant/blob/rel/1.10.18/WHATSNEW, github.com/apache/ant/blob/rel/1.10.18/src/main/org/apache/tools/ant/taskdefs/Javadoc.java, github.com/apache/maven-resolver-ant-tasks/blob/master/usage.md, github.com/apache/maven-resolver-ant-tasks/releases, github.com/apache/maven-resolver-ant-tasks/tree/master/examples, raw.githubusercontent.com/apache/ant/master/WHATSNEW
Apache Maven and Maven Central
Start with the Apache Maven home page, the Guides index and the Sonatype Central documentation.
-
central.sonatype.org/: pages/ossrh-eol, publish/publish-portal-api, publish/publish-portal-gradle, publish/publish-portal-maven, publish/publish-portal-ossrh-staging-api, publish/publish-portal-snapshots, publish/publish-portal-upload, publish/requirements, publish/requirements/gpg, publish/requirements/immutability, register/namespace
-
issues.apache.org/: jira/browse/MNG-6118, jira/browse/MNG-624, jira/browse/MNG-6863, jira/browse/MNG-7038, jira/browse/MNG-8286
-
maven.apache.org/: ant-tasks/index, archetype/archetype-packaging, archetypes/index, background/history-of-maven, configure, download, examples/maven-3-lifecycle-extensions, extensions/index, glossary, install, maven-conventions, maven-di, maven-jsr330, plugin-developers/common-bugs, plugin-developers/cookbook/plexus-plugin-upgrade, plugin-developers/index, plugin-developers/plugin-testing, plugins/index, plugins/maven-reactor-plugin, pom, repositories/artifacts, repositories/layout, repositories/metadata, repositories/remote, repository-management, repository/guide-central-repository-upload, resolver/configuration, resolver/expected-checksums, resolver/index, resolver/local-repository, resolver/remote-repository-filtering, resolver/upgrading-resolver, run, scm/git, security, settings, shared/maven-archiver, shared/maven-archiver/examples/classpath, shared/maven-plugin-testing-harness, skins/maven-fluido-skin, tools/mvnsh, tools/mvnup, wagon, what-is-maven, whatsnewinmaven4, xsd/core-extensions-1.1.0.xsd, xsd/maven-4.1.0.xsd, xsd/settings-1.3.0.xsd, xsd/site-2.1.0.xsd, xsd/toolchains-1.1.0.xsd
-
maven.apache.org/archetype/maven-archetype-plugin/: advanced-usage, archetype-repository, crawl-mojo, create-from-project-mojo, examples/create-multi-module-project, examples/generate-batch, generate-mojo, index, integration-test-mojo, update-local-catalog-mojo, usage
-
maven.apache.org/docs/: 3.10.0, 3.2.1, 3.3.1, 3.5.0, 3.8.1, 3.9.0, 3.9.2, 4.0.0-rc-7, history
-
maven.apache.org/enforcer/enforcer-rules/: banDynamicVersions, bannedDependencies, dependencyConvergence, index, requireJavaVersion, requireMavenVersion, requirePluginVersions, requireProperty, requireReleaseDeps, requireUpperBoundDeps, versionRanges
-
maven.apache.org/enforcer/maven-enforcer-plugin/: maven.apache.org/enforcer/maven-enforcer-plugin/, enforce-mojo, examples/check-specific-rule-via-cli, thirdparty-rules, usage * maven.apache.org/extensions/maven-build-cache-extension/: maven.apache.org/extensions/maven-build-cache-extension/, how-to, maven-build-cache-config.xml, parameters, performance, remote-cache, usage
-
maven.apache.org/guides/: development/guide-plugin-documentation, index, plugins/validation/index
-
maven.apache.org/guides/introduction/: introduction-to-archetypes, introduction-to-dependency-mechanism, introduction-to-optional-and-excludes-dependencies, introduction-to-plugin-prefix-mapping, introduction-to-plugins, introduction-to-profiles, introduction-to-repositories, introduction-to-the-lifecycle, introduction-to-the-pom, introduction-to-the-standard-directory-layout
-
maven.apache.org/guides/mini/: guide-3rd-party-jars-local, guide-3rd-party-jars-remote, guide-archive-configuration, guide-assemblies, guide-attached-tests, guide-building-for-different-environments, guide-central-repository-upload, guide-configuring-maven, guide-configuring-plugins, guide-creating-archetypes, guide-default-execution-ids, guide-deployment-security-settings, guide-encryption-4, guide-encryption, guide-generating-sources, guide-http-settings, guide-large-scale-centralized-deployments, guide-manifest, guide-maven-ci-friendly, guide-maven-classloading, guide-migration-to-mvn4, guide-mirror-settings, guide-multiple-modules-4, guide-multiple-modules, guide-multiple-repositories, guide-multiple-subprojects-4, guide-naming-conventions, guide-proxies, guide-releasing, guide-relocation, guide-repository-ssl, guide-reproducible-builds, guide-resolver-transport, guide-site, guide-using-extensions, guide-using-one-source-directory, guide-using-toolchains
-
maven.apache.org/maven-release/maven-release-plugin/: maven.apache.org/maven-release/maven-release-plugin/, faq, perform-mojo, prepare-mojo, usage, usage/branch, usage/non-interactive-release, usage/perform-release, usage/prepare-release, usage/rollback-release, usage/update-versions
-
maven.apache.org/plugins/maven-antrun-plugin/: maven.apache.org/plugins/maven-antrun-plugin/, run-mojo, usage
-
maven.apache.org/plugins/maven-artifact-plugin/: maven.apache.org/plugins/maven-artifact-plugin/, check-buildplan-mojo, compare-mojo, plugin-issues
-
maven.apache.org/plugins/maven-assembly-plugin/: maven.apache.org/plugins/maven-assembly-plugin/, assembly, descriptor-refs, examples/multimodule/module-source-inclusion-simple, examples/single/using-container-descriptor-handlers, single-mojo, usage
-
maven.apache.org/plugins/maven-compiler-plugin/: maven.apache.org/plugins/maven-compiler-plugin/, compile-mojo, examples/compile-using-different-jdk, examples/module-info, examples/pass-compiler-arguments, examples/set-compiler-release, examples/set-compiler-source-and-target, help-mojo, multirelease, non-javac-compilers, testCompile-mojo
-
maven.apache.org/plugins/maven-dependency-plugin/: maven.apache.org/plugins/maven-dependency-plugin/, add-mojo, analyze-dep-mgt-mojo, analyze-duplicate-mojo, analyze-exclusions-mojo, analyze-mojo, analyze-only-mojo, build-classpath-mojo, copy-dependencies-mojo, copy-mojo, examples/exclude-dependencies-from-dependency-analysis, examples/failing-the-build-on-dependency-analysis-warnings, examples/managing-dependencies, faq, get-mojo, purge-local-repository-mojo, remove-mojo, tree-mojo, usage
-
maven.apache.org/plugins/maven-deploy-plugin/: maven.apache.org/plugins/maven-deploy-plugin/, deploy-file-mojo, deploy-mojo, usage
-
maven.apache.org/plugins/maven-help-plugin/: maven.apache.org/plugins/maven-help-plugin/, active-profiles-mojo, describe-mojo, effective-pom-mojo, effective-settings-mojo, evaluate-mojo
-
maven.apache.org/plugins/maven-install-plugin/: maven.apache.org/plugins/maven-install-plugin/, install-file-mojo, install-mojo, usage
-
maven.apache.org/plugins/maven-invoker-plugin/: maven.apache.org/plugins/maven-invoker-plugin/, examples/filtering, examples/invoker-properties, run-mojo, usage
-
maven.apache.org/plugins/maven-jar-plugin/: maven.apache.org/plugins/maven-jar-plugin/, examples/create-test-jar, examples/include-exclude, examples/manifest-customization, help-mojo, jar-mojo, test-jar-mojo
-
maven.apache.org/plugins/maven-javadoc-plugin/: maven.apache.org/plugins/maven-javadoc-plugin/, aggregate-mojo, jar-mojo, usage
-
maven.apache.org/plugins/maven-resources-plugin/: maven.apache.org/plugins/maven-resources-plugin/, copy-resources-mojo, examples/binaries-filtering, examples/copy-resources, examples/escape-filtering, examples/filter, examples/filtering-properties-files, examples/include-exclude, examples/resource-directory, resources-mojo, testResources-mojo
-
maven.apache.org/plugins/maven-shade-plugin/: maven.apache.org/plugins/maven-shade-plugin/, examples/attached-artifact, examples/class-relocation, examples/executable-jar, examples/includes-excludes, examples/resource-transformers, shade-mojo
-
maven.apache.org/plugins/maven-site-plugin/: maven.apache.org/plugins/maven-site-plugin/, attach-descriptor-mojo, deploy-mojo, effective-site-mojo, examples/adding-deploy-protocol, examples/configuring-reports, examples/creating-content, examples/multimodule, examples/sitedescriptor, faq, history, jar-mojo, run-mojo, site-mojo, stage-mojo, usage
-
maven.apache.org/plugins/maven-source-plugin/: maven.apache.org/plugins/maven-source-plugin/, jar-no-fork-mojo, usage
-
maven.apache.org/plugins/maven-toolchains-plugin/: maven.apache.org/plugins/maven-toolchains-plugin/, display-discovered-jdk-toolchains-mojo, generate-jdk-toolchains-xml-mojo, select-jdk-toolchain-mojo, toolchain-mojo
-
maven.apache.org/plugins/maven-war-plugin/: maven.apache.org/plugins/maven-war-plugin/, examples/adding-filtering-webresources, examples/including-excluding-files-from-war, examples/war-manifest-guide, war-mojo
-
maven.apache.org/ref/3.10.0/: maven-core/core-extensions, maven-core/default-bindings, maven-core/lifecycles, maven-embedder/cli, maven-model-builder, maven-model-builder/super-pom, maven-model/maven, maven-settings/settings
-
maven.apache.org/ref/4.0.0-rc-7/: api/maven-api-plugin/lifecycle, compat/maven-embedder/cli, configuration, impl/maven-core/default-bindings, impl/maven-core/lifecycles
-
maven.apache.org/ref/current/: maven-core/apidocs/org/apache/maven/eventspy/EventSpy, maven-core/apidocs/org/apache/maven/execution/ExecutionListener, maven-core/default-bindings, maven-embedder/cli, maven-plugin-api/apidocs/org/apache/maven/plugin/MojoFailureException, maven-plugin-api/plugin
-
maven.apache.org/surefire/maven-failsafe-plugin/: maven.apache.org/surefire/maven-failsafe-plugin/, examples/inclusion-exclusion, examples/rerun-failing-tests, examples/single-test, integration-test-mojo, usage, verify-mojo
-
maven.apache.org/surefire/maven-surefire-plugin/: maven.apache.org/surefire/maven-surefire-plugin/, examples/fork-options-and-parallel-execution, examples/inclusion-exclusion, examples/jpms, examples/junit-platform, examples/rerun-failing-tests, examples/single-test, examples/skip-after-failure, examples/skipping-tests, examples/testng, history, test-mojo, usage, whats-new-3-6-0 * maven.apache.org/surefire/maven-surefire-report-plugin/: maven.apache.org/surefire/maven-surefire-report-plugin/, failsafe-report-only-mojo, report-only-mojo
-
maven.apache.org/tools/wrapper/: maven.apache.org/tools/wrapper/, maven-wrapper-plugin, maven-wrapper-plugin/usage, maven-wrapper-plugin/wrapper-mojo
-
repo.maven.apache.org/: maven2/ant/ant/1.7.0, maven2/org/apache/groovy/groovy-jsr223/6.0.0, maven2/org/apache/maven/resolver/maven-resolver-ant-tasks/2.0.0, maven2/org/apache/maven/resolver/maven-resolver-ant-tasks/maven-metadata.xml
-
Other pages, repositories and metadata: archiva.apache.org/, attic.apache.org/, attic.apache.org/projects/archiva, attic.apache.org/projects/continuum, codehaus-plexus.github.io/plexus-sec-dispatcher/settings-security, cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes, cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3, cwiki.apache.org/confluence/pages/viewpage.action?pageId=74682318, github.com/apache/maven-mvnd, github.com/apache/maven-mvnd/blob/master/dist/src/main/distro/conf/mvnd.properties, github.com/apache/maven-wrapper, incubator.apache.org/projects/ivy, logging.apache.org/log4j/1.x/, maven.apache.org/archetype/archetype-models/archetype-catalog/archetype-catalog, maven.apache.org/archetype/archetype-models/archetype-descriptor/archetype-descriptor, maven.apache.org/archetypes/maven-archetype-quickstart/, maven.apache.org/developers/compatibility-plan, maven.apache.org/developers/mojo-api-specification, maven.apache.org/doxia/references/index, maven.apache.org/enforcer/enforcer-api/writing-a-custom-rule, maven.apache.org/enforcer/maven-enforcer-extension/, maven.apache.org/enforcer/maven-enforcer-extension/usage, maven.apache.org/guides/getting-started/index, maven.apache.org/guides/getting-started/maven-in-five-minutes, maven.apache.org/guides/plugin/guide-java-plugin-development, maven.apache.org/guides/plugin/guide-java-report-plugin-development, maven.apache.org/plugin-tools/maven-plugin-plugin/, maven.apache.org/plugin-tools/maven-plugin-plugin/descriptor-mojo, maven.apache.org/plugin-tools/maven-plugin-plugin/helpmojo-mojo, maven.apache.org/plugin-tools/maven-plugin-tools-annotations/, maven.apache.org/plugins/, maven.apache.org/plugins/maven-checkstyle-plugin/, maven.apache.org/plugins/maven-checkstyle-plugin/checkstyle-aggregate-mojo, maven.apache.org/plugins/maven-clean-plugin/clean-mojo, maven.apache.org/plugins/maven-gpg-plugin/, maven.apache.org/plugins/maven-gpg-plugin/sign-mojo, maven.apache.org/plugins/maven-gpg-plugin/usage, maven.apache.org/plugins/maven-jxr-plugin/, maven.apache.org/plugins/maven-pmd-plugin/, maven.apache.org/plugins/maven-project-info-reports-plugin/, maven.apache.org/plugins/maven-scm-publish-plugin/, maven.apache.org/plugins/maven-scm-publish-plugin/publish-scm-mojo, maven.apache.org/ref/4-LATEST/api/maven-api-model/maven, www.apache.org/info/verification
Gradle
Start with the Gradle User Manual, the releases page and the Gradle Plugin Portal.
-
docs.develocity.ai/: gradle/4.6, gradle/4.6/getting-started, gradle/4.6/gradle-plugin
-
Release notes of earlier Gradle versions, docs.gradle.org/<version>/release-notes.html: 1.0, 2.0, 2.1, 2.12, 2.4, 3.0, 3.1, 3.2, 3.4, 3.5, 4.0, 4.1, 4.10, 4.3, 4.5, 4.6, 4.8, 4.9, 5.0, 5.1, 5.3, 5.4, 5.6, 6.0, 6.2, 6.6, 6.7, 6.8, 7.0, 7.2, 7.3, 7.4, 7.5, 7.6, 8.0, 8.1, 8.12, 8.14.6, 8.14, 8.2, 8.4, 8.5, 8.8, 9.0.0, 9.1.0, 9.2.0, 9.3.0, 9.4.0, 9.5.0, 9.6.0, 9.7.0, 9.8.0, 9.8.1, current
-
docs.gradle.org/8.14.6/userguide/: ant, declaring_dependencies_basics, isolated_projects, migrating_from_maven
-
docs.gradle.org/current/dsl/: index, org.gradle.api.Task, org.gradle.api.artifacts.repositories.UrlArtifactRepository, org.gradle.api.tasks.Copy, org.gradle.api.tasks.Delete, org.gradle.api.tasks.Exec, org.gradle.api.tasks.JavaExec, org.gradle.api.tasks.Sync, org.gradle.api.tasks.bundling.Jar, org.gradle.api.tasks.bundling.Tar, org.gradle.api.tasks.bundling.Zip, org.gradle.api.tasks.testing.Test, org.gradle.api.tasks.testing.logging.TestLoggingContainer, org.gradle.api.tasks.wrapper.Wrapper, org.gradle.caching.configuration.BuildCacheConfiguration, org.gradle.caching.http.HttpBuildCache, org.gradle.caching.local.DirectoryBuildCache
-
docs.gradle.org/current/javadoc/: org/gradle/api/AntBuilder, org/gradle/api/DefaultTask, org/gradle/api/NamedDomainObjectContainer, org/gradle/api/Plugin, org/gradle/api/Project, org/gradle/api/artifacts/CapabilitiesResolution, org/gradle/api/artifacts/Configuration, org/gradle/api/artifacts/ConfigurationContainer, org/gradle/api/artifacts/ExternalModuleDependencyBundle, org/gradle/api/artifacts/MinimalExternalModuleDependency, org/gradle/api/artifacts/ModuleDependency, org/gradle/api/artifacts/ResolutionStrategy, org/gradle/api/artifacts/VersionCatalog, org/gradle/api/artifacts/VersionCatalogsExtension, org/gradle/api/artifacts/repositories/RepositoryContentDescriptor, org/gradle/api/cache/CacheConfigurations, org/gradle/api/file/ArchiveOperations, org/gradle/api/file/ConfigurableFileCollection, org/gradle/api/file/FileCollection, org/gradle/api/file/FileSystemOperations, org/gradle/api/file/ProjectLayout, org/gradle/api/flow/FlowAction, org/gradle/api/initialization/IncludedBuild, org/gradle/api/initialization/Settings, org/gradle/api/initialization/dsl/VersionCatalogBuilder, org/gradle/api/initialization/resolve/DependencyResolutionManagement, org/gradle/api/invocation/Gradle, org/gradle/api/logging/Logger, org/gradle/api/logging/Logging, org/gradle/api/model/ObjectFactory, org/gradle/api/plugins/PluginManager, org/gradle/api/plugins/catalog/CatalogPluginExtension, org/gradle/api/problems/ProblemReporter, org/gradle/api/problems/ProblemSpec, org/gradle/api/problems/Problems, org/gradle/api/provider/HasConfigurableValue, org/gradle/api/provider/Property, org/gradle/api/provider/Provider, org/gradle/api/provider/ProviderFactory, org/gradle/api/services/BuildService, org/gradle/api/services/ServiceReference, org/gradle/api/tasks/Nested, org/gradle/api/tasks/PathSensitivity, org/gradle/api/tasks/TaskInputs, org/gradle/api/tasks/TaskOutputs, org/gradle/api/tasks/UntrackedTask, org/gradle/api/tasks/options/Option, org/gradle/jvm/toolchain/JavaToolchainService, org/gradle/jvm/toolchain/JvmVendorSpec, org/gradle/plugin/management/PluginManagementSpec, org/gradle/plugin/use/PluginDependency, org/gradle/testfixtures/ProjectBuilder, org/gradle/testkit/runner/GradleRunner, org/gradle/tooling/BuildController, org/gradle/tooling/GradleConnector, org/gradle/tooling/ProjectConnection, org/gradle/tooling/model/idea/IdeaProject, org/gradle/util/GradleVersion, org/gradle/work/InputChanges, org/gradle/workers/WorkQueue, org/gradle/workers/WorkerExecutor
-
docs.gradle.org/current/userguide/: docs.gradle.org/current/userguide/, ant, application_plugin, artifact_resolution, artifact_transforms, best_practices_dependencies, best_practices_general, best_practices_index, best_practices_performance, best_practices_security, best_practices_structuring_builds, best_practices_tasks, best_practices_testing, build_cache, build_cache_concepts, build_cache_debugging, build_cache_use_cases, build_environment, build_file_basics, build_init_plugin, build_lifecycle, build_scans, build_services, building_java_projects, centralizing_catalog_platform, centralizing_repositories, checkstyle_plugin, command_line_interface, command_line_interface_basics, common_caching_problems, compatibility, component_capabilities, component_metadata_rules, composite_builds, configuration_cache, configuration_cache_debugging, configuration_cache_enabling, configuration_cache_requirements, configuration_cache_status, configuration_on_demand, continuous_builds, controlling_task_execution, custom_gradle_types, custom_plugins, custom_tasks, dataflow_actions, declaring_configurations, declaring_dependencies, declaring_dependencies_basics, declaring_repositories, declaring_repositories_adv, declaring_repositories_basics, dependency_caching, dependency_configurations, dependency_constraints, dependency_constraints_conflicts, dependency_locking, dependency_management_basics, dependency_resolution, dependency_verification, dependency_versions, directory_layout, eclipse_plugin, feature_lifecycle, file_system_watching, filtering_repository_content, getting_started, getting_started_eng, github-actions, gitlab-ci, gradle_basics, gradle_daemon, gradle_on_ci, gradle_wrapper, gradle_wrapper_basics, graph_resolution, groovy_build_script_primer, groovy_plugin, how_to_align_dependency_versions, how_to_convert_single_build_to_multi_build, how_to_create_feature_variants_of_a_library, how_to_exclude_transitive_dependencies, how_to_fix_version_catalog_problems, how_to_prevent_accidental_dependency_upgrades, how_to_share_outputs_between_projects, how_to_use_local_forks, idea_plugin, implementing_custom_tasks, implementing_gradle_plugins_binary, implementing_gradle_plugins_convention, implementing_gradle_plugins_precompiled, incremental_build, init_scripts, inspect, installation, isolated_projects, jacoco_plugin, jacoco_report_aggregation_plugin, java_gradle_plugin, java_library_plugin, java_platform_plugin, java_plugin, java_test_fixtures_plugin, java_testing, jenkins, jvm_test_suite_plugin, kotlin_dsl, lazy_configuration, lazy_eager_evaluation, logging, migrating_from_ant, migrating_from_groovy_to_kotlin_dsl, migrating_from_maven, more_about_tasks, multi_project_builds, networking, organizing_gradle_projects, organizing_tasks, part1_gradle_init, part1_gradle_init_plugin, part1_gradle_init_project, performance, platforms, plugin_basics, plugin_reference, plugins, plugins_intermediate, pmd_plugin, properties_providers, publishing_customization, publishing_gradle_module_metadata, publishing_gradle_plugins, publishing_ivy, publishing_maven, publishing_setup, publishing_signing, reporting_problems, resolution_rules, scala_plugin, security, service_injection, settings_file_basics, sharing_build_logic_between_subprojects, signing_plugin, supported_repository_protocols, supported_repository_types, task_basics, task_configuration_avoidance, test_kit, test_report_aggregation_plugin, testing_gradle_plugins, third_party_integration, toolchain_plugins, toolchains, tooling_api, troubleshooting, upgrading_major_version_9, upgrading_version_4, upgrading_version_5, upgrading_version_6, upgrading_version_7, upgrading_version_8, upgrading_version_9, userguide, validation_problems, variant_attributes, variant_aware_resolution, version_catalog_plugin, version_catalogs, viewing_debugging_dependencies, war_plugin, worker_api, working_with_files, writing_build_scripts_intermediate
-
gradle.org/: guides, install, keys, release-checksums, releases, security-subscription
-
plugins.gradle.org/: plugins.gradle.org/, docs/mirroring, docs/publish-plugin, plugin/com.github.ben-manes.versions, plugin/com.gradle.develocity, plugin/com.gradle.plugin-publish, plugin/com.gradleup.shadow, plugin/io.github.ben-manes.versions, plugin/org.gradle.toolchains.foojay-resolver-convention
-
Other pages, repositories and metadata: declarative.gradle.org/, develocity.ai/, develocity.ai/blog/gradle-technologies-is-now-develocity/, docs.gradle.org/8.14/userguide/compatibility, docs.gradle.org/9.8.1/userguide/working_with_files, docs.gradle.org/current/kotlin-dsl/, docs.gradle.org/current/kotlin-dsl/index, docs.gradle.org/current/samples/, dpeuniversity.gradle.com/app/, github.com/gradle/actions, github.com/gradle/actions/blob/main/docs/setup-gradle.md, github.com/gradle/actions/blob/main/docs/wrapper-validation.md, github.com/gradle/declarative-gradle, github.com/gradle/foojay-toolchains, github.com/gradle/gradle-profiler, github.com/gradle/gradle/blob/master/platforms/documentation/docs/src/docs/design/gradle-module-metadata-latest-specification.md, github.com/gradle/gradle/issues/13490, github.com/gradle/gradle/security/advisories/GHSA-j5m7-59rp-24f5, github.com/gradle/gradle/security/advisories/GHSA-mqwm-5m85-gmcv, github.com/gradle/gradle/security/advisories/GHSA-mvvg-497x-hmj8, github.com/gradle/gradle/security/advisories/GHSA-w78c-w6vf-rw82, github.com/gradle/gradle/security/advisories/GHSA-xwqc-3h47-hg64, gradle.com/develocity/, services.gradle.org/versions/9, services.gradle.org/versions/all
Specifications and standards
Each is cited where a page uses it.
-
bford.info: cachedir
-
cyclonedx.org: cyclonedx.org/, tool-center
-
docs.junit.org: current/user-guide, current/writing-tests/parallel-execution, current/writing-tests/tagging-and-filtering
-
docs.oracle.com: en/java/javase/21/docs/api/java.base/java/util/Properties, en/java/javase/21/docs/specs/jar/jar, en/java/javase/21/docs/specs/man/jarsigner, en/java/javase/21/docs/specs/man/javac, en/java/javase/21/docs/specs/man/jlink, en/java/javase/21/docs/specs/man/jmod, en/java/javase/26/docs/specs/man/jar, en/java/javase/26/docs/specs/man/java, en/java/javase/26/docs/specs/man/javac
-
openjdk.org: jeps/182, jeps/226, jeps/238, jeps/320, jeps/330, jeps/372, jeps/400, jeps/408, jeps/411, jeps/486
-
reproducible-builds.org: docs/jvm, specs/source-date-epoch
-
toml.io: toml.io/
-
www.cve.org: CVE-2021-26291, CVE-2021-36373, CVE-2021-36374, CVE-2026-22816, CVE-2026-22865, CVE-2026-26032, CVE-2026-78254, CVE-2026-94114
-
www.rfc-editor.org: RFC 9580
Books
Consulted for concept coverage and structure only; none is the source of any example, and each targets a release far older than the baseline of this section.
-
Erik Hatcher and Steve Loughran, Java Development with Ant, Manning Publications, 2002. ISBN 978-1-930110-58-8. Written for Ant 1.5. Its second edition, retitled Ant in Action (2007), is at manning.com/books/ant-in-action and is cited only as a pointer.
-
Maria Odea Ching and Brett Porter, Apache Maven 2 Effective Implementation, Packt Publishing, 2009. ISBN 978-1-847194-54-1. Written for Maven 2.2, Archiva 1.2 and Continuum 1.3.
-
Benjamin Muschko, Gradle in Action, Manning Publications, 2014. ISBN 978-1-61729-130-2. Written for Gradle 1.7.
Third-party projects
Cited on the pages that use them and on the ecosystem page; none is documented further.
-
bazel.build: bazel.build/, external/overview
-
buck2.build: buck2.build/, docs
-
checkstyle.org: checkstyle.org/
-
checkstyle.sourceforge.io: checkstyle.sourceforge.io/
-
code.visualstudio.com: docs/java/java-build
-
codeberg.org: leiningen/leiningen
-
cyclonedx.github.io: cyclonedx-maven-plugin
-
dependency-check.github.io: DependencyCheck
-
developer.android.com: build
-
diffoscope.org: diffoscope.org/
-
dmp.fabric8.io: dmp.fabric8.io/
-
docs.github.com: en/actions, en/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-ant, en/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-gradle, en/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-maven
-
docs.gitlab.com: ci
-
docs.jfrog.com: artifactory/docs/getting-started
-
docs.sonarsource.com: sonarqube-server/analyzing-source-code/scanners/sonarscanner-for-gradle, sonarqube-server/analyzing-source-code/scanners/sonarscanner-for-maven, sonarqube-server/latest/analyzing-source-code/scanners/sonarscanner-for-gradle
-
docs.spring.io: spring-boot/gradle-plugin, spring-boot/gradle-plugin/packaging-oci-image, spring-boot/maven-plugin, spring-boot/maven-plugin/build-image
-
foojay.io: foojay.io/
-
formulae.brew.sh: formula/ant, formula/gradle
-
github.com: CycloneDX/cyclonedx-gradle-plugin, CycloneDX/cyclonedx-maven-plugin, GoogleContainerTools/jib, GoogleContainerTools/jib/tree/master/jib-gradle-plugin, GoogleContainerTools/jib/tree/master/jib-maven-plugin, GradleUp/shadow, JetBrains/kotlin-toolchain, actions/setup-java, actions/setup-java/blob/main/docs/advanced-usage.md, bazel-contrib/rules_jvm_external, ben-manes/gradle-versions-plugin, diffplug/spotless, diffplug/spotless/tree/main/plugin-gradle, diffplug/spotless/tree/main/plugin-maven, dzikoysk/reposilite, junit-team/testng-engine, juven/maven-bash-completion, jvm-repo-rebuild/reproducible-central, open-telemetry/opentelemetry-java-contrib/blob/main/maven-extension/README.md, open-telemetry/opentelemetry-java-contrib/tree/main/maven-extension, rife2/bld/wiki, s4u/pgpverify-maven-plugin, siom79/japicmp, sonatype-nexus-community/central-publishing-maven-plugin, takari, takari/polyglot-maven, takari/takari-lifecycle
-
gradleup.com: shadow
-
groovy-lang.org: groovy-lang.org/
-
help.sonatype.com: en/sonatype-nexus-repository
-
java.testcontainers.org: java.testcontainers.org/
-
jeremylong.github.io: DependencyCheck/dependency-check-maven
-
jfrog.com: artifactory
-
jreleaser.org: guide/latest/examples/maven/maven-central
-
junit.org: junit.org/
-
kotlin-toolchain.org: kotlin-toolchain.org/
-
kotlinlang.org: docs/gradle-configure-project
-
leiningen.org: leiningen.org/
-
marketplace.visualstudio.com: items?itemName=vscjava.vscode-gradle, items?itemName=vscjava.vscode-java-pack
-
mill-build.org: mill-build.org/, mill/javalib/intro
-
netbeans.apache.org: netbeans.apache.org/, front/main/help/index
-
picocli.info: picocli.info/
-
plugins.jenkins.io: gradle
-
pmd.github.io: pmd.github.io/
-
projects.eclipse.org: projects/tools.buildship
-
reposilite.com: reposilite.com/, guide/about
-
revapi.org: revapi.org/, revapi-maven-plugin/index
-
rife2.com: bld
-
sdkman.io: usage
-
siom79.github.io: japicmp/MavenPlugin
-
sourceforge.net: projects/ant-contrib, projects/ant-contrib/files
-
spotbugs.github.io: spotbugs.github.io/, spotbugs-maven-plugin
-
vanniktech.github.io: gradle-maven-publish-plugin/central
-
www.gnupg.org: documentation/manuals/gnupg/OpenPGP-Key-Management, documentation/manuals/gnupg/Operational-GPG-Commands
-
www.graalvm.org: latest/reference-manual/js, latest/reference-manual/js/NashornMigrationGuide
-
www.jacoco.org: www.jacoco.org/, jacoco/trunk/doc, jacoco/trunk/doc/check-mojo, jacoco/trunk/doc/maven, jacoco/trunk/doc/prepare-agent-mojo, jacoco/trunk/doc/report-aggregate-mojo
-
www.jenkins.io: doc
-
www.jetbrains.com: help/idea/ant, help/idea/gradle, help/idea/maven-support, help/idea/work-with-gradle-projects, idea
-
www.mojohaus.org: www.mojohaus.org/, appassembler/appassembler-maven-plugin, build-helper-maven-plugin, build-helper-maven-plugin/add-source-mojo, build-helper-maven-plugin/attach-artifact-mojo, build-helper-maven-plugin/reserve-network-port-mojo, buildnumber-maven-plugin, exec-maven-plugin, extra-enforcer-rules/banDuplicateClasses, flatten-maven-plugin, flatten-maven-plugin/flatten-mojo, sql-maven-plugin, templating-maven-plugin, versions/versions-maven-plugin, versions/versions-maven-plugin/display-dependency-updates-mojo, versions/versions-maven-plugin/display-plugin-updates-mojo, versions/versions-maven-plugin/revert-mojo, versions/versions-maven-plugin/set-mojo, versions/versions-maven-plugin/use-latest-releases-mojo, xml-maven-plugin
-
www.scala-sbt.org: www.scala-sbt.org/, 2.x/docs/en/index
-
www.slf4j.org: manual
-
www.sonatype.com: products/sonatype-nexus-repository