Maven 核心扩展参考
Maven 核心提供如下定义的默认扩展/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.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> <!-- 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>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> <!-- | 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>