Introduction – Maven Core Apache/ Maven/ Ref/ Maven 3.9.16/ Maven Core/ Introduction | Last Published: 2026-05-13 Version: 3.9.16 Overview Introduction Javadocs Source Xref Reference Core Extensions Descriptors Reference POM Settings Toolchains Reference Lifecycles Plugin Bindings to Default Lifecycle Artifact Handlers CLI options Super POM Development Maven Developer Centre Maven Core ITs Project Documentation Project Information About Summary Maven Coordinates Team Source Code Management Issue Management Mailing Lists Dependency Management Dependencies Dependency Convergence CI Management Plugin Management Plugins Distribution Management Project Reports Maven Projects Maven Archetypes Extensions Parent POMs Plugins Skins Components Archetype Artifact Resolver Doxia Indexer JXR Plugin Testing Plugin Tools Resource Bundles SCM Shared Components Surefire Wagon ASF How Apache Works Foundation Data Privacy Sponsoring Apache Thanks Maven Core Maven Core classes managing the whole build process. Reference Documentation lifecycles and plugin bindings to default lifecycle, default artifact handlers, to manage dependency types, extension descriptor and core extensions, classloader hierarchy done by ClassRealmManager component (javadoc), with its DefaultClassRealmManager implementation (source), using Plexus Classworlds, Useful entry points Maven component (javadoc), with its DefaultMaven implementation (source), to drive a full MavenSession execution (javadoc ProjectBuilder component (javadoc), with its DefaultProjectBuilder implementation (source), to prepare MavenProject descriptor from POM files, LifecycleExecutor component (javadoc), with its DefaultLifecycleExecutor implementation(source), to plan or execute tasks. on plugin goals execution order: in a given phase, goals order is not expected to be guaranteed nor finely tuned: it is just a consequence of the order obtained during effective model building, which combines profile activation+injection and inheritance assembly from parents, known limitations are notably that: 1. plugin goal execution in a child is usually simply appended (at end): you can't try to insert in the middle of pre-existing inherited executions, 2. append happens at plugin level first, then goal level, independently from phases. This means for example that adding pluginA:goal2 to pre-existing (pluginA:goal1, pluginB:goal) will lead to (pluginA:goal1, pluginA:goal2, pluginB:goal) see effective POM as shown by help:effective-pom to see the effective plugins then goals order. MavenPluginManager component (javadoc), with its DefaultMavenPluginManager implementation (source), PluginParameterExpressionEvaluator, used to evaluate plugin parameters values during Mojo configuration, ExceptionHandler component (javadoc), with its DefaultExceptionHandler implementation (source), use to transform exception into useful end-user messages. Toolchains Toolchains descriptor reference, public API for toolchains-aware plugins: ToolchainManager component (javadoc) with its DefaultToolchainManager implementation (source), to get selected Toolchain (javadoc) instance, internal ToolchainManagerPrivate component (javadoc) with its DefaultToolchainManagerPrivate implementation (source), to manage toolchain selection, internal JDK toolchain implementation: JavaToolchain interface (javadoc), with its JavaToolchainImpl implementation (source) and JavaToolchainFactory factory (source). © 2001–2026 The Apache Software Foundation