diff --git a/compat/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java b/compat/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java index 9b4e7c819a22..06990ea303bc 100644 --- a/compat/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java +++ b/compat/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java @@ -59,7 +59,7 @@ import org.apache.maven.internal.impl.DefaultArtifactManager; import org.apache.maven.internal.impl.DefaultSession; import org.apache.maven.plugin.PluginResolutionException; -import org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver; +import org.apache.maven.plugin.internal.PluginDependenciesResolver; import org.apache.maven.resolver.MavenChainedWorkspaceReader; import org.apache.maven.resolver.RepositorySystemSessionFactory; import org.codehaus.plexus.DefaultPlexusContainer; @@ -97,7 +97,7 @@ public class BootstrapCoreExtensionManager { private final Logger log = LoggerFactory.getLogger(getClass()); - private final DefaultPluginDependenciesResolver pluginDependenciesResolver; + private final PluginDependenciesResolver pluginDependenciesResolver; private final RepositorySystemSessionFactory repositorySystemSessionFactory; @@ -113,7 +113,7 @@ public class BootstrapCoreExtensionManager { @Inject public BootstrapCoreExtensionManager( - DefaultPluginDependenciesResolver pluginDependenciesResolver, + PluginDependenciesResolver pluginDependenciesResolver, RepositorySystemSessionFactory repositorySystemSessionFactory, CoreExports coreExports, PlexusContainer container, @@ -213,7 +213,7 @@ private List resolveExtension( throws ExtensionResolutionException { try { /* TODO: Enhance the PluginDependenciesResolver to provide a - * resolveCoreExtension method which uses a CoreExtension + * resolveCoreExtensionAndFlatten method which uses a CoreExtension * object instead of a Plugin as this makes no sense. */ Plugin plugin = Plugin.newBuilder() @@ -222,7 +222,7 @@ private List resolveExtension( .version(interpolator.apply(extension.getVersion())) .build(); - DependencyResult result = pluginDependenciesResolver.resolveCoreExtension( + DependencyResult result = pluginDependenciesResolver.resolveCoreExtensionAndFlatten( new org.apache.maven.model.Plugin(plugin), dependencyFilter, repositories, repoSession); return result.getArtifactResults().stream() .filter(ArtifactResult::isResolved) diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/extensions/BootstrapCoreExtensionManager.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/extensions/BootstrapCoreExtensionManager.java index 61a65954a272..d0735af889a6 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/extensions/BootstrapCoreExtensionManager.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/extensions/BootstrapCoreExtensionManager.java @@ -62,7 +62,7 @@ import org.apache.maven.internal.impl.DefaultArtifactManager; import org.apache.maven.internal.impl.DefaultSession; import org.apache.maven.plugin.PluginResolutionException; -import org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver; +import org.apache.maven.plugin.internal.PluginDependenciesResolver; import org.apache.maven.resolver.MavenChainedWorkspaceReader; import org.apache.maven.resolver.RepositorySystemSessionFactory; import org.codehaus.plexus.DefaultPlexusContainer; @@ -98,7 +98,7 @@ public class BootstrapCoreExtensionManager { private final Logger log = LoggerFactory.getLogger(getClass()); - private final DefaultPluginDependenciesResolver pluginDependenciesResolver; + private final PluginDependenciesResolver pluginDependenciesResolver; private final RepositorySystemSessionFactory repositorySystemSessionFactory; @@ -116,7 +116,7 @@ public class BootstrapCoreExtensionManager { @Inject public BootstrapCoreExtensionManager( - DefaultPluginDependenciesResolver pluginDependenciesResolver, + PluginDependenciesResolver pluginDependenciesResolver, RepositorySystemSessionFactory repositorySystemSessionFactory, CoreExports coreExports, PlexusContainer container, @@ -218,7 +218,7 @@ private List resolveExtension( throws ExtensionResolutionException { try { /* TODO: Enhance the PluginDependenciesResolver to provide a - * resolveCoreExtension method which uses a CoreExtension + * resolveCoreExtensionAndFlatten method which uses a CoreExtension * object instead of a Plugin as this makes no sense. */ Plugin plugin = Plugin.newBuilder() @@ -227,7 +227,7 @@ private List resolveExtension( .version(interpolator.apply(extension.getVersion())) .build(); - DependencyResult result = pluginDependenciesResolver.resolveCoreExtension( + DependencyResult result = pluginDependenciesResolver.resolveCoreExtensionAndFlatten( new org.apache.maven.model.Plugin(plugin), dependencyFilter, repositories, repoSession); return result.getArtifactResults().stream() .filter(ArtifactResult::isResolved) diff --git a/impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java b/impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java index e51b4dd0ddce..15f3d8df7b64 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java +++ b/impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java @@ -412,7 +412,7 @@ private void createPluginRealm( DependencyFilter dependencyFilter = project.getExtensionDependencyFilter(); dependencyFilter = AndDependencyFilter.newInstance(dependencyFilter, filter); - DependencyResult result = pluginDependenciesResolver.resolvePlugin( + DependencyResult result = pluginDependenciesResolver.resolvePluginAndFlatten( plugin, RepositoryUtils.toArtifact(pluginArtifact), dependencyFilter, @@ -1036,7 +1036,7 @@ private List resolveExtensionArtifacts( Plugin extensionPlugin, List repositories, RepositorySystemSession session) throws PluginResolutionException { DependencyResult root = - pluginDependenciesResolver.resolvePlugin(extensionPlugin, null, null, repositories, session); + pluginDependenciesResolver.resolvePluginAndFlatten(extensionPlugin, null, null, repositories, session); return toMavenArtifacts(root); } } diff --git a/impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java b/impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java index 760ea73809a1..a17bbbd0fc04 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java +++ b/impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java @@ -153,8 +153,21 @@ public Artifact resolve(Plugin plugin, List repositories, Repo /** * @since 3.3.0 + * @deprecated Is unused since 3.10+ */ - public DependencyResult resolveCoreExtension( + @Deprecated + public DependencyNode resolveCoreExtension( + Plugin plugin, + DependencyFilter dependencyFilter, + List repositories, + RepositorySystemSession session) + throws PluginResolutionException { + return resolveCoreExtensionAndFlatten(plugin, dependencyFilter, repositories, session) + .getRoot(); + } + + @Override + public DependencyResult resolveCoreExtensionAndFlatten( Plugin plugin, DependencyFilter dependencyFilter, List repositories, @@ -194,8 +207,20 @@ public DependencyResult resolveCoreExtension( } } + @Deprecated @Override public DependencyResult resolvePlugin( + Plugin plugin, + Artifact artifact, + DependencyFilter dependencyFilter, + List repositories, + RepositorySystemSession session) + throws PluginResolutionException { + return resolvePluginAndFlatten(plugin, artifact, dependencyFilter, repositories, session); + } + + @Override + public DependencyResult resolvePluginAndFlatten( Plugin plugin, Artifact pluginArtifact, DependencyFilter dependencyFilter, diff --git a/impl/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependenciesResolver.java b/impl/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependenciesResolver.java index deadde6a43b7..b3f02e39f3af 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependenciesResolver.java +++ b/impl/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependenciesResolver.java @@ -61,7 +61,9 @@ Artifact resolve(Plugin plugin, List repositories, RepositoryS * @param session The repository session to use for resolving the plugin artifacts, must not be {@code null}. * @return The dependency tree denoting the resolved plugin class path, never {@code null}. * @throws PluginResolutionException If any dependency could not be resolved. + * @deprecated This method should be avoided, as it requires manual flattening; use {@link #resolvePluginAndFlatten(Plugin, Artifact, DependencyFilter, List, RepositorySystemSession)} instead to let Resolver handle it. */ + @Deprecated DependencyNode resolve( Plugin plugin, Artifact pluginArtifact, @@ -70,11 +72,63 @@ DependencyNode resolve( RepositorySystemSession session) throws PluginResolutionException; + /** + * Resolves the runtime dependencies of the specified core extension (as {@link Plugin} as GAV carrier). + * + * @param plugin The plugin for which to resolve the dependencies, must not be {@code null}. + * @param dependencyFilter A filter to exclude artifacts from resolution (but not collection), may be {@code null}. + * @param repositories The plugin repositories to use for resolving the plugin artifacts, must not be {@code null}. + * @param session The repository session to use for resolving the plugin artifacts, must not be {@code null}. + * @return The dependency resolution result having the resolved extension class path but also the tree, never {@code null}. + * @throws PluginResolutionException If any dependency could not be resolved. + * @since 3.10.0 + */ + DependencyResult resolveCoreExtensionAndFlatten( + Plugin plugin, + DependencyFilter dependencyFilter, + List repositories, + RepositorySystemSession session) + throws PluginResolutionException; + + /** + * Resolves the runtime dependencies of the specified plugin. + * + * @param plugin The plugin for which to resolve the dependencies, must not be {@code null}. + * @param artifact The plugin's main artifact, may be {@code null}. + * @param dependencyFilter A filter to exclude artifacts from resolution (but not collection), may be {@code null}. + * @param repositories The plugin repositories to use for resolving the plugin artifacts, must not be {@code null}. + * @param session The repository session to use for resolving the plugin artifacts, must not be {@code null}. + * @return The dependency resolution result having the resolved plugin class path but also the tree, never {@code null}. + * @throws PluginResolutionException If any dependency could not be resolved. + * @since 4.0.0-beta-2 + * @deprecated Use {@link #resolvePluginAndFlatten(Plugin, Artifact, DependencyFilter, List, RepositorySystemSession)} instead. + */ + @Deprecated DependencyResult resolvePlugin( Plugin plugin, Artifact artifact, DependencyFilter dependencyFilter, - List remotePluginRepositories, - RepositorySystemSession repositorySession) + List repositories, + RepositorySystemSession session) + throws PluginResolutionException; + + /** + * Resolves the runtime dependencies of the specified plugin. + * + * @param plugin The plugin for which to resolve the dependencies, must not be {@code null}. + * @param pluginArtifact The plugin's main artifact, may be {@code null}. + * @param dependencyFilter A filter to exclude artifacts from resolution (but not collection), may be {@code null}. + * @param repositories The plugin repositories to use for resolving the plugin artifacts, must not be {@code null}. + * @param session The repository session to use for resolving the plugin artifacts, must not be {@code null}. + * @return The dependency resolution result having the resolved plugin class path but also the tree, never {@code null}. + * @throws PluginResolutionException If any dependency could not be resolved. + * @since 3.10.0 + */ + DependencyResult resolvePluginAndFlatten( + Plugin plugin, + Artifact pluginArtifact, + DependencyFilter dependencyFilter, + List repositories, + RepositorySystemSession session) throws PluginResolutionException; }