diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/classPath/classpath.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/classPath/classpath.kt index 660806b2707b..2f6dd6b06ef8 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/classPath/classpath.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/classPath/classpath.kt @@ -99,13 +99,15 @@ internal fun generateClassPathByLayoutReport(libDir: Path, entries: List, ): Set { val classPathResult = mutableSetOf() for (pluginEntity in pluginEntities) { val pluginLayout = pluginEntity.layout - val classPathModules = getEmbeddedContentModulesOfPluginsWithUseIdeaClassloader(context, pluginLayout.mainModule) + val cacheContainer = platformLayout.descriptorCacheContainer.forPlugin(pluginEntity.dir) + val classPathModules = getEmbeddedContentModulesOfPluginsWithUseIdeaClassloader(context, pluginLayout.mainModule, cacheContainer) for (distributionEntry in pluginEntity.distribution) { if (distributionEntry is ModuleOwnedFileEntry && distributionEntry.owner?.moduleName in classPathModules) { classPathResult.add(distributionEntry.path) @@ -122,9 +124,11 @@ internal fun generateCoreClasspathFromPlugins( internal fun getEmbeddedContentModulesOfPluginsWithUseIdeaClassloader( context: BuildContext, pluginMainModule: String, + cacheContainer: ScopedCachedDescriptorContainer?, ): Set { val pluginModule = context.findRequiredModule(pluginMainModule) - val pluginXmlContent = getUnprocessedPluginXmlContent(pluginModule, context).decodeToString() + val pluginXmlBytes = cacheContainer?.getCachedFileData(PLUGIN_XML_RELATIVE_PATH) ?: getUnprocessedPluginXmlContent(pluginModule, context) + val pluginXmlContent = pluginXmlBytes.decodeToString() val rootElement = JDOMUtil.load(pluginXmlContent) if (rootElement.getAttribute("use-idea-classloader")?.value?.toBoolean() != true) { return emptySet() diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/dev/IdeBuilder.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/dev/IdeBuilder.kt index 94ef6f5a1786..d850bcac9a81 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/dev/IdeBuilder.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/dev/IdeBuilder.kt @@ -235,7 +235,8 @@ internal suspend fun buildProduct(request: BuildRequest, createProductProperties launch { val platformClasspath = platformLayoutResultDeferred.await().coreClassPath val pluginDistributionEntities = pluginDistributionEntriesDeferred.await().pluginEntries - val coreClasspathFromPlugins = generateCoreClasspathFromPlugins(context, pluginDistributionEntities) + val platformLayoutAwaited = platformLayout.await() + val coreClasspathFromPlugins = generateCoreClasspathFromPlugins(platformLayoutAwaited, context, pluginDistributionEntities) val classPath = platformClasspath + coreClasspathFromPlugins if (request.writeCoreClasspath) { diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.kt index 5995fb0caa39..4bd403c95aa6 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.kt @@ -138,7 +138,7 @@ internal suspend fun buildDistribution( ) val platformItems = buildPlatformJob.await() - context.bootClassPathJarNames = generateCoreClassPath(context, platformItems, bundledPluginItems) + context.bootClassPathJarNames = generateCoreClassPath(platformLayout, context, platformItems, bundledPluginItems) ContentReport(platform = platformItems, bundledPlugins = bundledPluginItems, nonBundledPlugins = buildNonBundledPlugins.await()) } @@ -167,6 +167,7 @@ internal suspend fun buildDistribution( } private fun generateCoreClassPath( + platformLayout: PlatformLayout, context: BuildContext, platformDistribution: List, bundledPluginsDistribution: List, @@ -181,7 +182,7 @@ private fun generateCoreClassPath( skipNioFs = isMultiRoutingFileSystemEnabledForProduct(context.productProperties.platformPrefix) ).map { libDir.relativize(it).toString() } val pluginsDir = context.paths.distAllDir.resolve("plugins") - val coreClassPathFromPlugins = generateCoreClasspathFromPlugins(context, bundledPluginsDistribution).map { pluginsDir.resolve(it).toString() } + val coreClassPathFromPlugins = generateCoreClasspathFromPlugins(platformLayout, context, bundledPluginsDistribution).map { pluginsDir.resolve(it).toString() } return platformClassPath + coreClassPathFromPlugins } diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/PlatformModules.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/PlatformModules.kt index e0c5de723fdc..d87174dfc396 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/PlatformModules.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/PlatformModules.kt @@ -520,7 +520,7 @@ private suspend fun computeImplicitRequiredModules( private fun computeContentModulesPluginsWhichUseIdeaClassloader(context: BuildContext): Set { val bundledPlugins = getPluginLayoutsByJpsModuleNames(modules = context.getBundledPluginModules(), productLayout = context.productProperties.productLayout) - val pluginContents = bundledPlugins.flatMap { getEmbeddedContentModulesOfPluginsWithUseIdeaClassloader(context, it.mainModule) }.toSet() + val pluginContents = bundledPlugins.flatMap { getEmbeddedContentModulesOfPluginsWithUseIdeaClassloader(context, it.mainModule, cacheContainer = null) }.toSet() return pluginContents }