Maven Core Extensions Reference
Maven core provides default extensions as defined in /META-INF/maven/extension.xml
:
<extension>
<exportedPackages>
<!-- maven-* -->
<exportedPackage>org.apache.maven.*</exportedPackage>
<exportedPackage>org.apache.maven.artifact</exportedPackage>
<exportedPackage>org.apache.maven.classrealm</exportedPackage>
<exportedPackage>org.apache.maven.cli</exportedPackage>
<exportedPackage>org.apache.maven.configuration</exportedPackage>
<exportedPackage>org.apache.maven.exception</exportedPackage>
<exportedPackage>org.apache.maven.execution</exportedPackage>
<exportedPackage>org.apache.maven.execution.scope</exportedPackage>
<exportedPackage>org.apache.maven.graph</exportedPackage>
<exportedPackage>org.apache.maven.lifecycle</exportedPackage>
<exportedPackage>org.apache.maven.model</exportedPackage>
<exportedPackage>org.apache.maven.monitor</exportedPackage>
<exportedPackage>org.apache.maven.plugin</exportedPackage>
<exportedPackage>org.apache.maven.profiles</exportedPackage>
<exportedPackage>org.apache.maven.project</exportedPackage>
<exportedPackage>org.apache.maven.reporting</exportedPackage>
<exportedPackage>org.apache.maven.repository</exportedPackage>
<exportedPackage>org.apache.maven.rtinfo</exportedPackage>
<exportedPackage>org.apache.maven.settings</exportedPackage>
<exportedPackage>org.apache.maven.toolchain</exportedPackage>
<exportedPackage>org.apache.maven.usability</exportedPackage>
<!-- wagon-api -->
<exportedPackage>org.apache.maven.wagon.*</exportedPackage>
<exportedPackage>org.apache.maven.wagon.authentication</exportedPackage>
<exportedPackage>org.apache.maven.wagon.authorization</exportedPackage>
<exportedPackage>org.apache.maven.wagon.events</exportedPackage>
<exportedPackage>org.apache.maven.wagon.observers</exportedPackage>
<exportedPackage>org.apache.maven.wagon.proxy</exportedPackage>
<exportedPackage>org.apache.maven.wagon.repository</exportedPackage>
<exportedPackage>org.apache.maven.wagon.resource</exportedPackage>
<!-- maven-resolver-api, maven-resolver-spi, maven-resolver-impl -->
<exportedPackage>org.eclipse.aether.*</exportedPackage>
<exportedPackage>org.eclipse.aether.artifact</exportedPackage>
<exportedPackage>org.eclipse.aether.collection</exportedPackage>
<exportedPackage>org.eclipse.aether.deployment</exportedPackage>
<exportedPackage>org.eclipse.aether.graph</exportedPackage>
<exportedPackage>org.eclipse.aether.impl</exportedPackage>
<exportedPackage>org.eclipse.aether.internal.impl</exportedPackage>
<exportedPackage>org.eclipse.aether.installation</exportedPackage>
<exportedPackage>org.eclipse.aether.metadata</exportedPackage>
<exportedPackage>org.eclipse.aether.repository</exportedPackage>
<exportedPackage>org.eclipse.aether.resolution</exportedPackage>
<exportedPackage>org.eclipse.aether.spi</exportedPackage>
<exportedPackage>org.eclipse.aether.transfer</exportedPackage>
<exportedPackage>org.eclipse.aether.version</exportedPackage>
<exportedPackage>org.eclipse.aether.util</exportedPackage>
<!-- plexus-classworlds -->
<exportedPackage>org.codehaus.plexus.classworlds</exportedPackage>
<!-- classworlds (for legacy code) -->
<exportedPackage>org.codehaus.classworlds</exportedPackage>
<!-- plexus-utils (for DOM-type fields in maven-model) -->
<exportedPackage>org.codehaus.plexus.util.xml.Xpp3Dom</exportedPackage>
<exportedPackage>org.codehaus.plexus.util.xml.pull.XmlPullParser</exportedPackage>
<exportedPackage>org.codehaus.plexus.util.xml.pull.XmlPullParserException</exportedPackage>
<exportedPackage>org.codehaus.plexus.util.xml.pull.XmlSerializer</exportedPackage>
<!-- plexus-container, plexus-component-annotations -->
<exportedPackage>org.codehaus.plexus.*</exportedPackage>
<exportedPackage>org.codehaus.plexus.component</exportedPackage>
<exportedPackage>org.codehaus.plexus.configuration</exportedPackage>
<exportedPackage>org.codehaus.plexus.container</exportedPackage>
<exportedPackage>org.codehaus.plexus.context</exportedPackage>
<exportedPackage>org.codehaus.plexus.lifecycle</exportedPackage>
<exportedPackage>org.codehaus.plexus.logging</exportedPackage>
<exportedPackage>org.codehaus.plexus.personality</exportedPackage>
<!-- javax.inject (JSR-330) -->
<exportedPackage>javax.inject.*</exportedPackage>
<!-- javax.enterprise.inject (JSR-299): Must never be exported if needed at plugin level, plugin adds it
there is no justification to get it at Maven level and leaking it will conflict.
<exportedPackage>javax.enterprise.util.*</exportedPackage>
<exportedPackage>javax.enterprise.inject.*</exportedPackage>
-->
<!-- javax.annotation (JSR-250) -->
<exportedPackage>javax.annotation.*</exportedPackage>
<exportedPackage>javax.annotation.security.*</exportedPackage>
<!--
| We may potentially want to export these, but right now I'm not sure that anything Guice specific needs
| to be made available to plugin authors. If we find people are getting fancy and want to take advantage of
| Guice specifics we can expose that later. Really some testing needs to be done to see full hiding
| of Guice has any impact on what we may categorize as a standard JSR-330 based Tesla/Maven plugin.
<exportedPackage>com.google.inject.*</exportedPackage>
<exportedPackage>com.google.inject.binder.*</exportedPackage>
<exportedPackage>com.google.inject.matcher.*</exportedPackage>
<exportedPackage>com.google.inject.name.*</exportedPackage>
<exportedPackage>com.google.inject.spi.*</exportedPackage>
<exportedPackage>com.google.inject.util.*</exportedPackage>
-->
<!-- SLF4J -->
<exportedPackage>org.slf4j.*</exportedPackage>
<exportedPackage>org.slf4j.spi.*</exportedPackage>
<exportedPackage>org.slf4j.helpers.*</exportedPackage>
<exportedPackage>org.slf4j.event.*</exportedPackage>
<!-- JAnsi -->
<exportedPackage>org.fusesource.jansi.*</exportedPackage>
</exportedPackages>
<exportedArtifacts>
<exportedArtifact>classworlds:classworlds</exportedArtifact>
<exportedArtifact>org.codehaus.plexus:plexus-classworlds</exportedArtifact>
<exportedArtifact>org.codehaus.plexus:plexus-component-api</exportedArtifact>
<exportedArtifact>org.codehaus.plexus:plexus-container-default</exportedArtifact>
<exportedArtifact>plexus:plexus-container-default</exportedArtifact>
<exportedArtifact>org.sonatype.spice:spice-inject-plexus</exportedArtifact>
<exportedArtifact>org.sonatype.sisu:sisu-inject-plexus</exportedArtifact>
<exportedArtifact>org.eclipse.sisu:org.eclipse.sisu.plexus</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-artifact</exportedArtifact>
<!--
| MNG-6240: Plugins might depend on maven-aether-provider <= 3.3.9 before the rename to maven-resolver-provider.
| Since backwards-compatibility was kept, Maven Core also provides this artifact.
-->
<exportedArtifact>org.apache.maven:maven-aether-provider</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-resolver-provider</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-artifact-manager</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-compat</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-core</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-error-diagnostics</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-lifecycle</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-model</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-model-builder</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-monitor</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-plugin-api</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-plugin-descriptor</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-plugin-parameter-documenter</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-plugin-registry</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-profile</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-project</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-repository-metadata</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-settings</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-settings-builder</exportedArtifact>
<exportedArtifact>org.apache.maven:maven-toolchain</exportedArtifact>
<exportedArtifact>org.apache.maven.wagon:wagon-provider-api</exportedArtifact>
<exportedArtifact>org.apache.maven.resolver:maven-resolver-api</exportedArtifact>
<exportedArtifact>org.apache.maven.resolver:maven-resolver-spi</exportedArtifact>
<exportedArtifact>org.apache.maven.resolver:maven-resolver-impl</exportedArtifact>
<exportedArtifact>org.apache.maven.resolver:maven-resolver-util</exportedArtifact>
<exportedArtifact>org.apache.maven.resolver:maven-resolver-connector-basic</exportedArtifact>
<exportedArtifact>javax.inject:javax.inject</exportedArtifact>
<exportedArtifact>javax.annotation:javax.annotation-api</exportedArtifact>
<exportedArtifact>org.slf4j:slf4j-api</exportedArtifact>
<exportedArtifact>org.fusesource.jansi:jansi</exportedArtifact>
<!--
| We must also filter out the old Aether or NoClassDefFoundErrors will surface
-->
<exportedArtifact>org.sonatype.aether:aether-api</exportedArtifact>
<exportedArtifact>org.sonatype.aether:aether-spi</exportedArtifact>
<exportedArtifact>org.sonatype.aether:aether-impl</exportedArtifact>
<exportedArtifact>org.eclipse.aether:aether-api</exportedArtifact>
<exportedArtifact>org.eclipse.aether:aether-spi</exportedArtifact>
<exportedArtifact>org.eclipse.aether:aether-impl</exportedArtifact>
<exportedArtifact>org.eclipse.aether:aether-util</exportedArtifact>
<exportedArtifact>org.eclipse.aether:aether-connector-basic</exportedArtifact>
<!--
| NOTE: Don't exclude the wagons or any of their dependencies (apart from the wagon API). This would otherwise
| provoke linkage errors for wagons contributed by build extensions. We also don't need to exclude the wagons
| from plugins. Plugins that use wagons directly and declare the corresponding dependency will simply use a
| wagon from their plugin realm.
-->
</exportedArtifacts>
</extension>