[maven] IDEA-368469 get rid of MavenEmbeddersManager.FOR_POST_PROCESSING usages

GitOrigin-RevId: e6721eb3b77da7dfd9020a6e121559ea71dc01a7
This commit is contained in:
Dmitry Kichinsky
2025-03-04 17:18:46 +00:00
committed by intellij-monorepo-bot
parent da3332a58b
commit 8b08093bda
4 changed files with 29 additions and 75 deletions
@@ -20,10 +20,7 @@ import org.jetbrains.idea.maven.buildtool.MavenEventHandler
import org.jetbrains.idea.maven.importing.workspaceModel.WorkspaceModuleImporter
import org.jetbrains.idea.maven.model.MavenExplicitProfiles
import org.jetbrains.idea.maven.model.MavenId
import org.jetbrains.idea.maven.project.MavenEmbeddersManager
import org.jetbrains.idea.maven.project.MavenProject
import org.jetbrains.idea.maven.project.MavenProjectBundle
import org.jetbrains.idea.maven.project.MavenProjectsManager
import org.jetbrains.idea.maven.project.*
import org.jetbrains.idea.maven.server.MavenGoalExecutionRequest
import org.jetbrains.idea.maven.utils.MavenLog
import org.jetbrains.idea.maven.utils.MavenUtil
@@ -40,7 +37,12 @@ import java.util.*
import java.util.jar.JarEntry
import java.util.jar.JarFile
import java.util.jar.JarOutputStream
import kotlin.io.copyTo
import kotlin.io.extension
import kotlin.io.path.pathString
import kotlin.io.relativeTo
import kotlin.io.walkTopDown
import kotlin.use
internal class MavenShadePluginConfigurator : MavenWorkspaceConfigurator {
private val externalSource = ExternalProjectSystemRegistry.getInstance().getSourceById(WorkspaceModuleImporter.EXTERNAL_SOURCE_ID)
@@ -251,9 +253,7 @@ internal class MavenShadeFacetGeneratePostTaskConfigurator : MavenAfterImportCon
val projectsTree = projectsManager.projectsTree
val projectRoot = projectsTree.findRootProject(shadedMavenProjects.keys.first()) // assume there's only one root project
val baseDir = MavenUtil.getBaseDir(projectRoot.directoryFile).toString()
val embeddersManager = projectsManager.embeddersManager
val syncConsole = projectsManager.syncConsole
val embedder = embeddersManager.getEmbedder(MavenEmbeddersManager.FOR_POST_PROCESSING, baseDir)
val userProperties = Properties()
userProperties["skipTests"] = "true"
@@ -270,7 +270,11 @@ internal class MavenShadeFacetGeneratePostTaskConfigurator : MavenAfterImportCon
runBlockingMaybeCancellable {
withBackgroundProgress(project, MavenProjectBundle.message("maven.generating.uber.jars", text), true) {
reportRawProgress { reporter ->
embedder.executeGoal(listOf(request), "package", reporter, syncConsole)
val mavenEmbedderWrappers = MavenEmbedderWrappersImpl(project)
mavenEmbedderWrappers.use {
val embedder = mavenEmbedderWrappers.getEmbedder(baseDir)
embedder.executeGoal(listOf(request), "package", reporter, syncConsole)
}
}
}
}
@@ -319,23 +323,23 @@ internal class MavenShadeFacetRemapPostTaskConfigurator : MavenAfterImportConfig
}
val projectsManager = MavenProjectsManager.getInstance(project)
val projectsTree = projectsManager.projectsTree
val embeddersManager = projectsManager.embeddersManager
val projectRoots = shadedMavenProjectsAndDependencies.map { projectsTree.findRootProject(it) }.toSet()
val baseDirsToMavenProjects = MavenUtil.groupByBasedir(projectRoots, projectsTree)
for (baseDir in baseDirsToMavenProjects.keySet()) {
doCompile(project, embeddersManager, baseDirsToMavenProjects[baseDir], baseDir, projectsManager.syncConsole)
doCompile(project, baseDirsToMavenProjects[baseDir], baseDir, projectsManager.syncConsole)
}
}
private fun doCompile(project: Project,
embeddersManager: MavenEmbeddersManager,
mavenProjects: Collection<MavenProject>,
baseDir: String, mavenEventHandler: MavenEventHandler) {
val embedder = embeddersManager.getEmbedder(MavenEmbeddersManager.FOR_POST_PROCESSING, baseDir)
try {
val mavenEmbedderWrappers = MavenEmbedderWrappersImpl(project)
mavenEmbedderWrappers.use {
val embedder = mavenEmbedderWrappers.getEmbedder(baseDir)
val requests = mavenProjects.map { MavenGoalExecutionRequest(File(it.path), MavenExplicitProfiles.NONE) }.toList()
val names = mavenProjects.map { it.displayName }
val text = StringUtil.shortenPathWithEllipsis(StringUtil.join(names, ", "), 200)
@@ -347,9 +351,6 @@ internal class MavenShadeFacetRemapPostTaskConfigurator : MavenAfterImportConfig
}
}
}
finally {
embeddersManager.release(embedder)
}
}
private fun remapUberJar(mavenProject: MavenProject, shadingData: MavenProjectShadingData) {
@@ -11,7 +11,7 @@ import org.jetbrains.idea.maven.indices.archetype.MavenCatalog
import org.jetbrains.idea.maven.indices.archetype.MavenCatalog.System.DefaultLocal
import org.jetbrains.idea.maven.model.MavenArchetype
import org.jetbrains.idea.maven.model.MavenId
import org.jetbrains.idea.maven.project.MavenEmbeddersManager
import org.jetbrains.idea.maven.project.MavenEmbedderWrappersImpl
import org.jetbrains.idea.maven.project.MavenProjectsManager
import org.jetbrains.idea.maven.server.MavenEmbedderWrapper
import org.jetbrains.idea.maven.utils.MavenLog
@@ -21,7 +21,6 @@ import java.io.IOException
import java.net.URL
import java.nio.file.Files
import java.nio.file.Path
import java.util.function.Function
@Service(Service.Level.PROJECT)
class MavenArchetypeManager(private val myProject: Project) {
@@ -143,10 +142,9 @@ class MavenArchetypeManager(private val myProject: Project) {
groupId: String, artifactId: String,
version: String, url: String?,
): Map<String, String>? {
val map: Map<String, String>? =
executeWithMavenEmbedderWrapperNullable<Map<String, String>?> {
it.resolveAndGetArchetypeDescriptor(groupId, artifactId, version, mutableListOf(), url)
}
val map: Map<String, String>? = executeWithMavenEmbedderWrapper {
it.resolveAndGetArchetypeDescriptor(groupId, artifactId, version, mutableListOf(), url)
}
if (map != null) addToLocalIndex(groupId, artifactId, version)
return map
}
@@ -163,30 +161,16 @@ class MavenArchetypeManager(private val myProject: Project) {
private fun <R> executeWithMavenEmbedderWrapper(function: (MavenEmbedderWrapper) -> R): R {
val projectsManager = MavenProjectsManager.getInstance(myProject)
val manager = projectsManager.embeddersManager
var baseDir = ""
val projects = projectsManager.rootProjects
if (!projects.isEmpty()) {
baseDir = getBaseDir(projects[0]!!.directoryFile).toString()
}
val mavenEmbedderWrapper = manager.getEmbedder(MavenEmbeddersManager.Companion.FOR_POST_PROCESSING, baseDir)
try {
val mavenEmbedderWrappers = MavenEmbedderWrappersImpl(myProject)
mavenEmbedderWrappers.use {
val mavenEmbedderWrapper = mavenEmbedderWrappers.getEmbedder(baseDir)
return function(mavenEmbedderWrapper)
}
finally {
manager.release(mavenEmbedderWrapper)
}
}
private fun <R> executeWithMavenEmbedderWrapperNullable(function: Function<MavenEmbedderWrapper, R?>): R? {
val manager = MavenProjectsManager.getInstance(myProject).embeddersManager
val mavenEmbedderWrapper = manager.getEmbedder(MavenEmbeddersManager.Companion.FOR_POST_PROCESSING, "")
try {
return function.apply(mavenEmbedderWrapper)
}
finally {
manager.release(mavenEmbedderWrapper)
}
}
companion object {
@@ -80,7 +80,6 @@ import org.jetbrains.idea.maven.model.MavenConstants
import org.jetbrains.idea.maven.model.MavenConstants.MODEL_VERSION_4_0_0
import org.jetbrains.idea.maven.model.MavenId
import org.jetbrains.idea.maven.model.MavenProjectProblem
import org.jetbrains.idea.maven.model.MavenRemoteRepository
import org.jetbrains.idea.maven.project.*
import org.jetbrains.idea.maven.server.MavenDistributionsCache
import org.jetbrains.idea.maven.server.MavenServerConnector
@@ -1925,34 +1924,6 @@ object MavenUtil {
return JdkUtil.checkForJdk(sdkRoot.toNioPath(), isWindowsProjectRoot)
}
fun getRemoteResolvedRepositories(project: Project): Set<MavenRemoteRepository> {
val projectsManager = MavenProjectsManager.getInstance(project)
val repositories = projectsManager.getRemoteRepositories()
val embeddersManager = projectsManager.getEmbeddersManager()
var baseDir = project.getBasePath()
val projects = projectsManager.getRootProjects()
if (!projects.isEmpty()) {
baseDir = getBaseDir(projects.get(0)!!.directoryFile).toString()
}
if (null == baseDir) {
baseDir = ""
}
val embedderWrapper = embeddersManager.getEmbedder(MavenEmbeddersManager.FOR_POST_PROCESSING, baseDir)
try {
val resolvedRepositories = embedderWrapper.resolveRepositories(repositories)
return if (resolvedRepositories.isEmpty()) repositories else resolvedRepositories
}
catch (e: Exception) {
MavenLog.LOG.warn("resolve remote repo error", e)
}
finally {
embeddersManager.release(embedderWrapper)
}
return repositories
}
@JvmStatic
fun isMavenizedModule(m: Module): Boolean {
try {
@@ -8,7 +8,7 @@ import com.intellij.pom.java.LanguageLevel
import kotlinx.coroutines.runBlocking
import org.jetbrains.idea.maven.model.MavenArtifactNode
import org.jetbrains.idea.maven.model.MavenPlugin
import org.jetbrains.idea.maven.project.MavenEmbeddersManager
import org.jetbrains.idea.maven.project.MavenEmbedderWrappersTestImpl
import org.jetbrains.idea.maven.project.MavenProject
import org.jetbrains.idea.maven.project.MavenProjectsManager
import org.jetbrains.idea.maven.utils.MavenJDOMUtil
@@ -682,13 +682,11 @@ class MavenProjectTest : MavenMultiVersionImportingTestCase() {
importProjectAsync()
val repositories = projectsManager.getRemoteRepositories()
val embeddersManager = projectsManager.embeddersManager
val mavenEmbedderWrapper = embeddersManager.getEmbedder(
MavenEmbeddersManager.FOR_POST_PROCESSING,
MavenUtil.getBaseDir(projectPom).toString())
val repoIds = mavenEmbedderWrapper.resolveRepositories(repositories).map { it.id }.toSet()
embeddersManager.release(mavenEmbedderWrapper)
val mavenEmbedderWrappers = MavenEmbedderWrappersTestImpl(project)
val repoIds = mavenEmbedderWrappers.use {
val mavenEmbedderWrapper = mavenEmbedderWrappers.getEmbedder(MavenUtil.getBaseDir(projectPom).toString())
mavenEmbedderWrapper.resolveRepositories(repositories).map { it.id }.toSet()
}
val project = MavenProjectsManager.getInstance(project).findProject(projectPom)
assertNotNull(project)