diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/CompilationContext.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/CompilationContext.kt index 0c8aace6dbb6..93e0e4fad1ff 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/CompilationContext.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/CompilationContext.kt @@ -75,6 +75,9 @@ interface CompilationTasks { */ fun compileModules(moduleNames: Collection?, includingTestsInModules: List? = emptyList()) + /** + * [compileModules] is called if required + */ fun buildProjectArtifacts(artifactNames: Set) fun resolveProjectDependencies() diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildTasksImpl.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildTasksImpl.kt index e57f2259fd7c..4495d5a0c24e 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildTasksImpl.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildTasksImpl.kt @@ -573,10 +573,6 @@ private fun compilePlatformAndPluginModules(pluginsToPublish: Set, compilationTasks.compileModules( distState.getModulesForPluginsToPublish() + listOf("intellij.idea.community.build.tasks", "intellij.platform.images.build", "intellij.tools.launcherGenerator")) - - // we need this to ensure that all libraries which may be used in the distribution are resolved, - // even if product modules don't depend on them (e.g. JUnit5) - compilationTasks.resolveProjectDependencies() compilationTasks.buildProjectArtifacts(distState.getIncludedProjectArtifacts()) return distState } diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/CompilationTasksImpl.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/CompilationTasksImpl.kt index e69c8870c9c3..0e54cade0411 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/CompilationTasksImpl.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/CompilationTasksImpl.kt @@ -8,24 +8,21 @@ import org.jetbrains.intellij.build.impl.compilation.CompiledClasses class CompilationTasksImpl(private val context: CompilationContext) : CompilationTasks { override fun compileModules(moduleNames: Collection?, includingTestsInModules: List?) { + resolveProjectDependencies() context.messages.block("Compiling modules") { - resolveProjectDependencies() CompiledClasses.reuseOrCompile(context, moduleNames, includingTestsInModules) } } override fun buildProjectArtifacts(artifactNames: Set) { - if (artifactNames.isEmpty()) { - return - } - try { - resolveProjectDependencies() - CompiledClasses.reuseOrCompile(context) - val buildIncludedModules = !context.options.useCompiledClassesFromProjectOutput - JpsCompilationRunner(context).buildArtifacts(artifactNames, buildIncludedModules) - } - catch (e: Throwable) { - context.messages.error("Building project artifacts failed with exception: $e", e) + if (artifactNames.isNotEmpty()) { + val jps = JpsCompilationRunner(context) + if (!context.options.useCompiledClassesFromProjectOutput) { + compileModules(jps.getModulesIncludedInArtifacts(artifactNames)) + } + context.messages.block("Building project artifacts $artifactNames") { + jps.buildArtifacts(artifactNames, buildIncludedModules = false) + } } } diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JpsCompilationRunner.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JpsCompilationRunner.kt index 04499d45cc4c..278a5ab899ee 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JpsCompilationRunner.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JpsCompilationRunner.kt @@ -159,6 +159,9 @@ internal class JpsCompilationRunner(private val context: CompilationContext) { resolveProjectDependencies = false) } + fun getModulesIncludedInArtifacts(artifactNames: Collection): Collection = + getModulesIncludedInArtifacts(getArtifactsWithIncluded(artifactNames)) + private fun getModulesIncludedInArtifacts(artifacts: Collection): Set { val modulesSet: MutableSet = LinkedHashSet() for (artifact in artifacts) { @@ -172,7 +175,7 @@ internal class JpsCompilationRunner(private val context: CompilationContext) { return modulesSet } - private fun getArtifactsWithIncluded(artifactNames: Set): Set { + private fun getArtifactsWithIncluded(artifactNames: Collection): Set { val artifacts = JpsArtifactService.getInstance().getArtifacts(context.project).filter { it.name in artifactNames } return ArtifactSorter.addIncludedArtifacts(artifacts) }