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>