<?xml version="1.0" encoding="UTF-8"?>

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<!-- START SNIPPET: core-extension -->
<extension>
  <exportedPackages>
    <!-- maven-* -->
    <exportedPackage>org.apache.maven.api</exportedPackage>

    <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.feature</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.transform</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.Xpp3DomBuilder</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>

    <!-- plexus-interactivity-api -->
    <exportedPackage>org.codehaus.plexus.components.interactivity</exportedPackage>
    <exportedPackage>org.fusesource.jansi.Ansi</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>

    <exportedPackage>jakarta.inject.*</exportedPackage>
    <exportedPackage>jakarta.annotation.*</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>
    <!-- maven 4 api -->
    <exportedArtifact>org.apache.maven:maven-api-core</exportedArtifact>
    <exportedArtifact>org.apache.maven:maven-api-meta</exportedArtifact>
    <exportedArtifact>org.apache.maven:maven-api-model</exportedArtifact>
    <exportedArtifact>org.apache.maven:maven-api-settings</exportedArtifact>
    <exportedArtifact>org.apache.maven:maven-api-toolchain</exportedArtifact>
    <exportedArtifact>org.apache.maven:maven-api-xml</exportedArtifact>

    <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>
<!-- END SNIPPET: core-extension -->
