From 79e7db2e7750c0c28ab593e0f8e87eb243d0ac13 Mon Sep 17 00:00:00 2001 From: Dmitry Kichinsky Date: Fri, 27 Sep 2024 12:37:31 +0200 Subject: [PATCH] [maven] IDEA-359760 MavenProject.remotePluginRepositories GitOrigin-RevId: bb0c38223becc11f2df83b513f37da23373efb3c --- .../jetbrains/idea/maven/model/MavenModelBase.java | 11 ++++++++++- .../idea/maven/server/NativeMavenProjectHolder.java | 6 +++++- .../idea/maven/server/PluginResolutionRequest.java | 2 +- .../idea/maven/server/Maven3ModelConverter.java | 1 + .../idea/maven/server/Maven3AetherModelConverter.java | 1 + .../server/m40/utils/Maven40AetherModelConverter.java | 1 + .../server/m40/utils/Maven40ApiModelConverter.java | 1 + .../maven/server/m40/utils/Maven40ModelConverter.java | 1 + .../idea/maven/project/MavenPluginResolver.kt | 2 +- .../org/jetbrains/idea/maven/project/MavenProject.kt | 10 ++++++++++ .../jetbrains/idea/maven/project/MavenProjectState.kt | 1 + .../idea/maven/server/MavenEmbedderWrapper.kt | 2 +- 12 files changed, 34 insertions(+), 5 deletions(-) diff --git a/plugins/maven-server-api/src/main/java/org/jetbrains/idea/maven/model/MavenModelBase.java b/plugins/maven-server-api/src/main/java/org/jetbrains/idea/maven/model/MavenModelBase.java index 3c2f33aec5cc..4f27d31b780e 100644 --- a/plugins/maven-server-api/src/main/java/org/jetbrains/idea/maven/model/MavenModelBase.java +++ b/plugins/maven-server-api/src/main/java/org/jetbrains/idea/maven/model/MavenModelBase.java @@ -24,7 +24,8 @@ public class MavenModelBase implements Serializable { private ArrayList myExtensions = new ArrayList<>(); private ArrayList myDependencies = new ArrayList<>(); private ArrayList myDependencyTree = new ArrayList<>(); - private ArrayList myRemoteRepositories =new ArrayList<>(); + private ArrayList myRemoteRepositories = new ArrayList<>(); + private ArrayList myRemotePluginRepositories = new ArrayList<>(); private ArrayList myModules; @@ -91,6 +92,14 @@ public class MavenModelBase implements Serializable { myRemoteRepositories = new ArrayList<>(remoteRepositories); } + public ArrayList getRemotePluginRepositories() { + return myRemotePluginRepositories; + } + + public void setRemotePluginRepositories(List remotePluginRepositories) { + myRemotePluginRepositories = new ArrayList<>(remotePluginRepositories); + } + public List getModules() { return myModules; } diff --git a/plugins/maven-server-api/src/main/java/org/jetbrains/idea/maven/server/NativeMavenProjectHolder.java b/plugins/maven-server-api/src/main/java/org/jetbrains/idea/maven/server/NativeMavenProjectHolder.java index f234749af73e..0f1ce5c51a37 100644 --- a/plugins/maven-server-api/src/main/java/org/jetbrains/idea/maven/server/NativeMavenProjectHolder.java +++ b/plugins/maven-server-api/src/main/java/org/jetbrains/idea/maven/server/NativeMavenProjectHolder.java @@ -3,8 +3,12 @@ package org.jetbrains.idea.maven.server; import java.rmi.Remote; import java.rmi.RemoteException; +/** + * @deprecated NativeMavenProjectHolder is not used anymore. Use MavenProject instead + */ +@Deprecated public interface NativeMavenProjectHolder extends Remote { - public static NativeMavenProjectHolder NULL = new NativeMavenProjectHolder() { + NativeMavenProjectHolder NULL = new NativeMavenProjectHolder() { @Override public int getId() throws RemoteException { return 0; diff --git a/plugins/maven-server-api/src/main/java/org/jetbrains/idea/maven/server/PluginResolutionRequest.java b/plugins/maven-server-api/src/main/java/org/jetbrains/idea/maven/server/PluginResolutionRequest.java index e73842901e79..f51dfa3481b9 100644 --- a/plugins/maven-server-api/src/main/java/org/jetbrains/idea/maven/server/PluginResolutionRequest.java +++ b/plugins/maven-server-api/src/main/java/org/jetbrains/idea/maven/server/PluginResolutionRequest.java @@ -22,7 +22,7 @@ public class PluginResolutionRequest implements Serializable { @NotNull List<@NotNull MavenId> pluginDependencies ) { myMavenPluginId = mavenPluginId; - this.repositories = repositories; + this.repositories = new ArrayList<>(repositories); this.resolvePluginDependencies = resolvePluginDependencies; this.pluginDependencies = new ArrayList<>(pluginDependencies); } diff --git a/plugins/maven/maven3-server-common/src/org/jetbrains/idea/maven/server/Maven3ModelConverter.java b/plugins/maven/maven3-server-common/src/org/jetbrains/idea/maven/server/Maven3ModelConverter.java index d27dab32a704..354fc7b16b52 100644 --- a/plugins/maven/maven3-server-common/src/org/jetbrains/idea/maven/server/Maven3ModelConverter.java +++ b/plugins/maven/maven3-server-common/src/org/jetbrains/idea/maven/server/Maven3ModelConverter.java @@ -68,6 +68,7 @@ public class Maven3ModelConverter { result.setDependencyTree(convertDependencyNodes(null, dependencyTree, convertedArtifacts, localRepository)); result.setRemoteRepositories(convertRepositories(model.getRepositories())); + result.setRemotePluginRepositories(convertRepositories(model.getPluginRepositories())); result.setProfiles(convertProfiles(model.getProfiles())); result.setModules(model.getModules()); diff --git a/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3AetherModelConverter.java b/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3AetherModelConverter.java index a771d2472b8e..08f6f3785779 100644 --- a/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3AetherModelConverter.java +++ b/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3AetherModelConverter.java @@ -50,6 +50,7 @@ public final class Maven3AetherModelConverter extends Maven3ModelConverter { result.setDependencies(convertArtifacts(dependencies, convertedArtifacts, localRepository)); result.setRemoteRepositories(convertRepositories(model.getRepositories())); + result.setRemotePluginRepositories(convertRepositories(model.getPluginRepositories())); result.setProfiles(convertProfiles(model.getProfiles())); result.setModules(model.getModules()); diff --git a/plugins/maven/maven40-server-impl/src/com/intellij/maven/server/m40/utils/Maven40AetherModelConverter.java b/plugins/maven/maven40-server-impl/src/com/intellij/maven/server/m40/utils/Maven40AetherModelConverter.java index 04bc246db4fa..dc71543f4a39 100644 --- a/plugins/maven/maven40-server-impl/src/com/intellij/maven/server/m40/utils/Maven40AetherModelConverter.java +++ b/plugins/maven/maven40-server-impl/src/com/intellij/maven/server/m40/utils/Maven40AetherModelConverter.java @@ -47,6 +47,7 @@ public final class Maven40AetherModelConverter extends Maven40ModelConverter { result.setDependencies(convertArtifacts(mavenProject.getArtifacts(), convertedArtifacts, localRepository)); result.setRemoteRepositories(convertAetherRepositories(mavenProject.getRemoteProjectRepositories())); + result.setRemotePluginRepositories(convertAetherRepositories(mavenProject.getRemotePluginRepositories())); result.setProfiles(convertProfiles(mavenProject.getModel().getProfiles())); result.setModules(mavenProject.getModules()); diff --git a/plugins/maven/maven40-server-impl/src/com/intellij/maven/server/m40/utils/Maven40ApiModelConverter.java b/plugins/maven/maven40-server-impl/src/com/intellij/maven/server/m40/utils/Maven40ApiModelConverter.java index 422206f775db..561fbd16ddec 100644 --- a/plugins/maven/maven40-server-impl/src/com/intellij/maven/server/m40/utils/Maven40ApiModelConverter.java +++ b/plugins/maven/maven40-server-impl/src/com/intellij/maven/server/m40/utils/Maven40ApiModelConverter.java @@ -46,6 +46,7 @@ public final class Maven40ApiModelConverter { result.setPlugins(convertPlugins(model)); result.setRemoteRepositories(convertRepositories(model.getRepositories())); + result.setRemotePluginRepositories(convertRepositories(model.getPluginRepositories())); result.setProfiles(convertProfiles(model.getProfiles())); result.setModules(model.getModules()); diff --git a/plugins/maven/maven40-server-impl/src/com/intellij/maven/server/m40/utils/Maven40ModelConverter.java b/plugins/maven/maven40-server-impl/src/com/intellij/maven/server/m40/utils/Maven40ModelConverter.java index c1615769c4cc..f91cab8462bd 100644 --- a/plugins/maven/maven40-server-impl/src/com/intellij/maven/server/m40/utils/Maven40ModelConverter.java +++ b/plugins/maven/maven40-server-impl/src/com/intellij/maven/server/m40/utils/Maven40ModelConverter.java @@ -49,6 +49,7 @@ public class Maven40ModelConverter { result.setPlugins(convertPlugins(model)); result.setRemoteRepositories(convertRepositories(model.getRepositories())); + result.setRemotePluginRepositories(convertRepositories(model.getPluginRepositories())); result.setProfiles(convertProfiles(model.getProfiles())); result.setModules(model.getModules()); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenPluginResolver.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenPluginResolver.kt index b7a93210f368..0169a23ede40 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenPluginResolver.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenPluginResolver.kt @@ -39,7 +39,7 @@ class MavenPluginResolver(private val myTree: MavenProjectsTree) { val mavenPluginIds = mavenPluginIdsToResolve.map { it.first } MavenLog.LOG.info("maven plugin resolution started: $mavenPluginIds") val forceUpdate = MavenProjectsManager.getInstance(myProject).forceUpdateSnapshots - val resolutionRequests = mavenPluginIdsToResolve.map { PluginResolutionRequest(it.first, it.second.remoteRepositories, false, emptyList()) } + val resolutionRequests = mavenPluginIdsToResolve.map { PluginResolutionRequest(it.first, it.second.remotePluginRepositories, false, emptyList()) } val resolutionResults = embedder.resolvePlugins(resolutionRequests, process, eventHandler, forceUpdate) val unresolvedPluginIds = resolutionResults.filter { !it.isResolved }.map { it.mavenPluginId }.toSet() MavenLog.LOG.info("maven plugin resolution finished, unresolved: $unresolvedPluginIds") diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProject.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProject.kt index 00b572aa7725..33bd80dfb0ba 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProject.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProject.kt @@ -921,6 +921,11 @@ class MavenProject(val file: VirtualFile) { return myState.remoteRepositories } + val remotePluginRepositories: List + get() { + return myState.remotePluginRepositories + } + fun getClassifierAndExtension(artifact: MavenArtifact, type: MavenExtraArtifactType): Pair { for (each: MavenImporter in MavenImporter.getSuitableImporters(this)) { val result: Pair? = each.getExtraArtifactClassifierAndExtension(artifact, type) @@ -1115,6 +1120,7 @@ class MavenProject(val file: VirtualFile) { val newUnresolvedArtifacts: MutableSet = HashSet() val newRepositories = LinkedHashSet() + val newPluginRepositories = LinkedHashSet() val newDependencies = LinkedHashSet() val newDependencyTree = LinkedHashSet() val newPluginInfos = LinkedHashSet() @@ -1124,6 +1130,7 @@ class MavenProject(val file: VirtualFile) { if (keepPreviousArtifacts) { newUnresolvedArtifacts.addAll(state.unresolvedArtifactIds) newRepositories.addAll(state.remoteRepositories) + newPluginRepositories.addAll(state.remotePluginRepositories) newDependencies.addAll(state.dependencies) newDependencyTree.addAll(state.dependencyTree) newExtensions.addAll(state.extensions) @@ -1143,11 +1150,13 @@ class MavenProject(val file: VirtualFile) { newUnresolvedArtifacts.addAll(unresolvedArtifactIds) newRepositories.addAll(model.remoteRepositories) + newPluginRepositories.addAll(model.remotePluginRepositories) newDependencyTree.addAll(model.dependencyTree) newDependencies.addAll(model.dependencies) newExtensions.addAll(model.extensions) val remoteRepositories = ArrayList(newRepositories) + val remotePluginRepositories = ArrayList(newPluginRepositories) val dependencies = ArrayList(newDependencies) val dependencyTree = ArrayList(newDependencyTree) val pluginInfos = ArrayList(newPluginInfos) @@ -1184,6 +1193,7 @@ class MavenProject(val file: VirtualFile) { testResources = build.testResources, unresolvedArtifactIds = newUnresolvedArtifacts, remoteRepositories = remoteRepositories, + remotePluginRepositories = remotePluginRepositories, dependencies = dependencies, dependencyTree = dependencyTree, pluginInfos = pluginInfos, diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectState.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectState.kt index 8cc4a3f43c9a..3cffa46b39d8 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectState.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectState.kt @@ -32,6 +32,7 @@ internal data class MavenProjectState( val dependencies: List = emptyList(), val dependencyTree: List = emptyList(), val remoteRepositories: List = emptyList(), + val remotePluginRepositories: List = emptyList(), val annotationProcessors: List = emptyList(), val modulesPathsAndNames: Map = emptyMap(), val modelMap: Map = emptyMap(), diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenEmbedderWrapper.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenEmbedderWrapper.kt index 0b64325b985e..4da8f00e9447 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenEmbedderWrapper.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenEmbedderWrapper.kt @@ -156,7 +156,7 @@ abstract class MavenEmbedderWrapper internal constructor(private val project: Pr forceUpdateSnapshots: Boolean): Collection { val mavenId = plugin.mavenId val dependencies = plugin.dependencies.map { MavenId(it.groupId, it.artifactId, it.version) } - val resolutionRequests = listOf(PluginResolutionRequest(mavenId, mavenProject.remoteRepositories, true, dependencies)) + val resolutionRequests = listOf(PluginResolutionRequest(mavenId, mavenProject.remotePluginRepositories, true, dependencies)) return runBlockingMaybeCancellable { resolvePlugins(resolutionRequests, null, MavenLogEventHandler, forceUpdateSnapshots) .flatMap { resolutionResult: PluginResolutionResponse -> resolutionResult.pluginDependencyArtifacts }.toSet()