diff --git a/build.xml b/build.xml index a7ec9e7f2aae..14d3523fde1f 100644 --- a/build.xml +++ b/build.xml @@ -28,12 +28,14 @@ + + @@ -49,17 +51,8 @@ - - - - - - - - - - - - + + + diff --git a/build/groovy/org/jetbrains/intellij/build/IdeaCommunityBuilder.groovy b/build/groovy/org/jetbrains/intellij/build/IdeaCommunityBuilder.groovy index 01aa250216c7..57993b9ac6e6 100644 --- a/build/groovy/org/jetbrains/intellij/build/IdeaCommunityBuilder.groovy +++ b/build/groovy/org/jetbrains/intellij/build/IdeaCommunityBuilder.groovy @@ -32,6 +32,12 @@ class IdeaCommunityBuilder { BuildTasks.create(buildContext).compileProjectAndTests(["intellij.platform.jps.build"]) } + void buildFullUpdater() { + def tasks = BuildTasks.create(buildContext) + tasks.compileModules(["updater"]) + tasks.buildFullUpdaterJar() + } + void buildIntelliJCore() { def builder = new IntelliJCoreArtifactsBuilder(buildContext) builder.compileModules() diff --git a/build/scripts/idea_community.gant b/build/scripts/idea_community.gant index 996a4114d12e..268078b725b3 100644 --- a/build/scripts/idea_community.gant +++ b/build/scripts/idea_community.gant @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import org.jetbrains.intellij.build.BuildOptions import org.jetbrains.intellij.build.IdeaCommunityBuilder import org.jetbrains.jps.idea.IdeaProjectLoader @@ -23,6 +24,10 @@ target(compile: "Compile project") { new IdeaCommunityBuilder(home).compileModules() } +target('updater-full': 'Build updater-full.jar which includes IDE updater with its dependencies') { + new IdeaCommunityBuilder(home).buildFullUpdater() +} + target('default': 'The default target') { def options = new BuildOptions() options.buildNumber = null //we cannot provide consistent build number for IDEA Community if it's built separately so use *.SNAPSHOT number to avoid confusion 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 28e3d5703566..78040fcc2bc3 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/BuildTasks.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/BuildTasks.groovy @@ -50,6 +50,11 @@ abstract class BuildTasks { abstract void buildUpdaterJar() + /** + * Builds updater-full.jar artifact which includes 'intellij.platform.updater' module with all its dependencies + */ + abstract void buildFullUpdaterJar() + abstract void buildUnpackedDistribution(String targetDirectory) static BuildTasks create(BuildContext context) { 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 d570c36c129c..d23f73718d56 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 @@ -7,6 +7,7 @@ import org.jetbrains.intellij.build.* import org.jetbrains.jps.model.artifact.JpsArtifactService import org.jetbrains.jps.model.java.JavaResourceRootType import org.jetbrains.jps.model.java.JavaSourceRootType +import org.jetbrains.jps.model.java.JpsJavaExtensionService import org.jetbrains.jps.model.library.JpsOrderRootType import org.jetbrains.jps.model.module.JpsModule @@ -547,6 +548,23 @@ idea.fatal.error.notification=disabled } } + @Override + void buildFullUpdaterJar() { + String updaterModule = "intellij.platform.updater" + def libraryFiles = JpsJavaExtensionService.dependencies(buildContext.findRequiredModule(updaterModule)).productionOnly().runtimeOnly().libraries.collectMany { + it.getFiles(JpsOrderRootType.COMPILED) + } + buildContext.messages.info("Files: $libraryFiles") + new LayoutBuilder(buildContext, false).layout(buildContext.paths.artifacts) { + jar("updater-full.jar") { + module(updaterModule) + libraryFiles.each { file -> + ant.zipfileset(src: file.absolutePath) + } + } + } + } + @Override void buildUnpackedDistribution(String targetDirectory) { buildContext.paths.distAll = targetDirectory