From c3e2e504bd1443c0d1ac790e34c04eda3bd3385a Mon Sep 17 00:00:00 2001 From: Mikhail Filippov Date: Wed, 7 Dec 2016 16:45:05 +0300 Subject: [PATCH] build scripts: added method to compile modules for product (cherry picked from commit 63c2372, IDEA-CR-16653) --- .../intellij/build/BuildTasks.groovy | 32 +++++++++++++++---- .../intellij/build/impl/BuildTasksImpl.groovy | 9 ++++++ 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/BuildTasks.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/BuildTasks.groovy index dc56e6436be0..a00f3171f520 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/BuildTasks.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/BuildTasks.groovy @@ -44,6 +44,8 @@ abstract class BuildTasks { */ abstract void buildDistributions() + abstract void compileModules() + abstract void compileProjectAndTests(List includingTestsInModules) abstract void compileModules(List moduleNames, List includingTestsInModules = []) @@ -63,18 +65,36 @@ abstract class BuildTasks { * @param groovyRootRelativePaths paths to root folders containing {@code productPropertiesClassName} and required classes, relative to project home * @param communityHomeRelativePath path to a directory containing sources from idea/community Git repository relative to project home */ - @CompileDynamic - static void buildProduct(String productPropertiesClassName, List groovyRootRelativePaths, String communityHomeRelativePath, Script gantScript, + static void buildProduct(String productPropertiesClassName, List groovyRootRelativePaths, + String communityHomeRelativePath, Script gantScript, ProprietaryBuildTools proprietaryBuildTools = ProprietaryBuildTools.DUMMY) { + BuildContext context = createBuildContextFromProduct(productPropertiesClassName, groovyRootRelativePaths, + communityHomeRelativePath, gantScript, proprietaryBuildTools) + create(context).buildDistributions() + } + + static void compileModulesFromProduct(String productPropertiesClassName, List groovyRootRelativePaths, + String communityHomeRelativePath, Script gantScript, + ProprietaryBuildTools proprietaryBuildTools = ProprietaryBuildTools.DUMMY) { + BuildContext context = createBuildContextFromProduct(productPropertiesClassName, groovyRootRelativePaths, + communityHomeRelativePath, gantScript, proprietaryBuildTools) + + create(context).compileModules() + } + + @CompileDynamic + static BuildContext createBuildContextFromProduct(String productPropertiesClassName, List groovyRootRelativePaths, + String communityHomeRelativePath, Script gantScript, + ProprietaryBuildTools proprietaryBuildTools = ProprietaryBuildTools.DUMMY) { String projectHome = IdeaProjectLoader.guessHome(gantScript) - GantBinding binding = (GantBinding)gantScript.binding + GantBinding binding = (GantBinding) gantScript.binding groovyRootRelativePaths.each { BuildUtils.addToClassPath("$projectHome/$it", binding.ant) } binding.includeTool << JpsGantTool ProductProperties productProperties = (ProductProperties) Class.forName(productPropertiesClassName).constructors[0].newInstance(projectHome) - def context = BuildContext.createContext(binding.ant, binding.projectBuilder, binding.project, binding.global, - "$projectHome/$communityHomeRelativePath", projectHome, productProperties, proprietaryBuildTools) - create(context).buildDistributions() + BuildContext context = BuildContext.createContext(binding.ant, binding.projectBuilder, binding.project, binding.global, + "$projectHome/$communityHomeRelativePath", projectHome, productProperties, proprietaryBuildTools) + return context } } \ No newline at end of file diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy index 3712630d1006..fa2d0b58788c 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy @@ -239,6 +239,15 @@ idea.fatal.error.notification=disabled } } + @Override + void compileModules() { + checkProductProperties() + def patchedApplicationInfo = patchApplicationInfo() + def distributionJARsBuilder = new DistributionJARsBuilder(buildContext, patchedApplicationInfo) + compileModules(buildContext.productProperties.productLayout.includedPluginModules + distributionJARsBuilder.platformModules + + buildContext.productProperties.additionalModulesToCompile, buildContext.productProperties.modulesToCompileTests) + } + @Override void buildDistributions() { checkProductProperties()