<?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.*</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>
    -->
    <exportedPackage>jakarta.inject.*</exportedPackage>

    <!-- javax.annotation (JSR-250) -->
    <exportedPackage>javax.annotation.*</exportedPackage>
    <exportedPackage>javax.annotation.*</exportedPackage>
    <exportedPackage>jakarta.annotation.*</exportedPackage>
    <exportedPackage>jakarta.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>jakarta.inject:javax.inject</exportedArtifact>
    <exportedArtifact>javax.annotation:javax.annotation-api</exportedArtifact>
    <exportedArtifact>jakarta.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 -->
