From 8ad67faa60ba2a66be816f386a929014d8d0e9d7 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Mon, 27 Mar 2023 20:20:30 +0200 Subject: [PATCH] Resolve also transitive dependencies for compilerPluginClasspath in maven This allows to depend on actual compiler plugin instead of embedding it into maven compiler plugin. ^KT-52811 In Progress --- .../kotlin/maven/KotlinCompileMojoBase.java | 15 ++++++++++++++- .../kotlin/maven/kapt/KaptJVMCompilerMojo.java | 3 --- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinCompileMojoBase.java b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinCompileMojoBase.java index 47aea69eb03..5ae03c7434e 100644 --- a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinCompileMojoBase.java +++ b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinCompileMojoBase.java @@ -10,8 +10,10 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.ArrayUtil; import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; import org.apache.maven.artifact.resolver.ArtifactResolutionResult; +import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Dependency; import org.apache.maven.model.Plugin; import org.apache.maven.model.PluginExecution; @@ -52,6 +54,9 @@ public abstract class KotlinCompileMojoBase e @Component protected RepositorySystem system; + @Parameter(defaultValue = "${session}", readonly = true, required = true) + protected MavenSession session; + /** * The source directories containing the sources to be compiled. */ @@ -282,9 +287,17 @@ public abstract class KotlinCompileMojoBase e List files = new ArrayList<>(); + ArtifactRepository localRepo = session == null ? null : session.getLocalRepository(); + List remoteRepos = session == null ? null : session.getRequest().getRemoteRepositories(); for (Dependency dependency : mojoExecution.getPlugin().getDependencies()) { Artifact artifact = system.createDependencyArtifact(dependency); - ArtifactResolutionResult resolved = system.resolve(new ArtifactResolutionRequest().setArtifact(artifact)); + + ArtifactResolutionRequest request = new ArtifactResolutionRequest().setArtifact(artifact); + if (localRepo != null) request.setLocalRepository(localRepo); + if (remoteRepos != null) request.setRemoteRepositories(remoteRepos); + if (localRepo != null || remoteRepos != null) request.setResolveTransitively(true); + + ArtifactResolutionResult resolved = system.resolve(request); for (Artifact resolvedArtifact : resolved.getArtifacts()) { File file = resolvedArtifact.getFile(); diff --git a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/kapt/KaptJVMCompilerMojo.java b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/kapt/KaptJVMCompilerMojo.java index 6cfdf53eec1..7fcbe566dea 100644 --- a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/kapt/KaptJVMCompilerMojo.java +++ b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/kapt/KaptJVMCompilerMojo.java @@ -74,9 +74,6 @@ public class KaptJVMCompilerMojo extends K2JVMCompileMojo { @Component private ArtifactHandlerManager artifactHandlerManager; - @Parameter(defaultValue = "${session}", readonly = true, required = true) - private MavenSession session; - @Component private ResolutionErrorHandler resolutionErrorHandler;