mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
build scripts: added option to skip building product distributions and build non-bundled plugins only
This commit is contained in:
@@ -94,6 +94,8 @@ abstract class BuildContext {
|
||||
*/
|
||||
abstract void executeStep(String stepMessage, String stepId, Closure step)
|
||||
|
||||
abstract boolean shouldBuildDistributions()
|
||||
|
||||
abstract boolean shouldBuildDistributionForOS(String os)
|
||||
|
||||
static BuildContext createContext(AntBuilder ant, JpsGantProjectBuilder projectBuilder, JpsProject project, JpsGlobal global,
|
||||
|
||||
@@ -38,6 +38,11 @@ class BuildOptions {
|
||||
static final String OS_WINDOWS = "windows"
|
||||
static final String OS_MAC = "mac"
|
||||
static final String OS_ALL = "all"
|
||||
/**
|
||||
* If this value is set no distributions of the product will be produced, only {@link ProductModulesLayout#pluginModulesToPublish non-bundled plugins}
|
||||
* will be built.
|
||||
*/
|
||||
static final String OS_NONE = "none"
|
||||
|
||||
/**
|
||||
* Pass comma-separated names of build steps (see below) to 'intellij.build.skip.build.steps' system property to skip them when building locally.
|
||||
|
||||
+6
-1
@@ -270,9 +270,14 @@ class BuildContextImpl extends BuildContext {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean shouldBuildDistributions() {
|
||||
options.targetOS.toLowerCase() != BuildOptions.OS_NONE
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean shouldBuildDistributionForOS(String os) {
|
||||
options.targetOS.toLowerCase() in [BuildOptions.OS_ALL, os]
|
||||
shouldBuildDistributions() && options.targetOS.toLowerCase() in [BuildOptions.OS_ALL, os]
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+40
-31
@@ -248,39 +248,48 @@ idea.fatal.error.notification=disabled
|
||||
compileModules(buildContext.productProperties.productLayout.includedPluginModules + distributionJARsBuilder.platformModules +
|
||||
buildContext.productProperties.additionalModulesToCompile, buildContext.productProperties.modulesToCompileTests)
|
||||
buildContext.messages.block("Build platform and plugin JARs") {
|
||||
distributionJARsBuilder.buildJARs()
|
||||
distributionJARsBuilder.buildAdditionalArtifacts()
|
||||
}
|
||||
if (buildContext.productProperties.scrambleMainJar) {
|
||||
scramble()
|
||||
}
|
||||
|
||||
layoutShared()
|
||||
|
||||
def propertiesFile = patchIdeaPropertiesFile()
|
||||
List<BuildTaskRunnable<String>> tasks = [
|
||||
createDistributionForOsTask("win", { BuildContext context ->
|
||||
context.windowsDistributionCustomizer?.with { new WindowsDistributionBuilder(context, it, propertiesFile, patchedApplicationInfo) }
|
||||
}),
|
||||
createDistributionForOsTask("linux", { BuildContext context ->
|
||||
context.linuxDistributionCustomizer?.with { new LinuxDistributionBuilder(context, it, propertiesFile) }
|
||||
}),
|
||||
createDistributionForOsTask("mac", { BuildContext context ->
|
||||
context.macDistributionCustomizer?.with { new MacDistributionBuilder(context, it, propertiesFile) }
|
||||
})
|
||||
]
|
||||
|
||||
List<String> paths = runInParallel(tasks).findAll { it != null }
|
||||
|
||||
if (buildContext.productProperties.buildCrossPlatformDistribution) {
|
||||
if (paths.size() == 3) {
|
||||
buildContext.executeStep("Build cross-platform distribution", BuildOptions.CROSS_PLATFORM_DISTRIBUTION_STEP) {
|
||||
def crossPlatformBuilder = new CrossPlatformDistributionBuilder(buildContext)
|
||||
crossPlatformBuilder.buildCrossPlatformZip(paths[0], paths[1], paths[2])
|
||||
}
|
||||
if (buildContext.shouldBuildDistributions()) {
|
||||
distributionJARsBuilder.buildJARs()
|
||||
distributionJARsBuilder.buildAdditionalArtifacts()
|
||||
}
|
||||
else {
|
||||
buildContext.messages.info("Skipping building cross-platform distribution because some OS-specific distributions were skipped")
|
||||
buildContext.messages.info("Skipped building product distributions because 'intellij.build.target.os' property is set to '$BuildOptions.OS_NONE'")
|
||||
distributionJARsBuilder.buildNonBundledPlugins()
|
||||
}
|
||||
}
|
||||
|
||||
if (buildContext.shouldBuildDistributions()) {
|
||||
if (buildContext.productProperties.scrambleMainJar) {
|
||||
scramble()
|
||||
}
|
||||
|
||||
layoutShared()
|
||||
|
||||
def propertiesFile = patchIdeaPropertiesFile()
|
||||
List<BuildTaskRunnable<String>> tasks = [
|
||||
createDistributionForOsTask("win", { BuildContext context ->
|
||||
context.windowsDistributionCustomizer?.with { new WindowsDistributionBuilder(context, it, propertiesFile, patchedApplicationInfo) }
|
||||
}),
|
||||
createDistributionForOsTask("linux", { BuildContext context ->
|
||||
context.linuxDistributionCustomizer?.with { new LinuxDistributionBuilder(context, it, propertiesFile) }
|
||||
}),
|
||||
createDistributionForOsTask("mac", { BuildContext context ->
|
||||
context.macDistributionCustomizer?.with { new MacDistributionBuilder(context, it, propertiesFile) }
|
||||
})
|
||||
]
|
||||
|
||||
List<String> paths = runInParallel(tasks).findAll { it != null }
|
||||
|
||||
if (buildContext.productProperties.buildCrossPlatformDistribution) {
|
||||
if (paths.size() == 3) {
|
||||
buildContext.executeStep("Build cross-platform distribution", BuildOptions.CROSS_PLATFORM_DISTRIBUTION_STEP) {
|
||||
def crossPlatformBuilder = new CrossPlatformDistributionBuilder(buildContext)
|
||||
crossPlatformBuilder.buildCrossPlatformZip(paths[0], paths[1], paths[2])
|
||||
}
|
||||
}
|
||||
else {
|
||||
buildContext.messages.info("Skipping building cross-platform distribution because some OS-specific distributions were skipped")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+8
-3
@@ -143,7 +143,8 @@ class DistributionJARsBuilder {
|
||||
|
||||
void buildJARs() {
|
||||
buildLib()
|
||||
buildPlugins()
|
||||
buildBundledPlugins()
|
||||
buildNonBundledPlugins()
|
||||
|
||||
def loadingOrderFilePath = buildContext.productProperties.productLayout.classesLoadingOrderFilePath
|
||||
if (loadingOrderFilePath != null) {
|
||||
@@ -235,13 +236,17 @@ class DistributionJARsBuilder {
|
||||
usedModules.addAll(layoutBuilder.usedModules)
|
||||
}
|
||||
|
||||
private void buildPlugins() {
|
||||
def ant = buildContext.ant
|
||||
private void buildBundledPlugins() {
|
||||
def productLayout = buildContext.productProperties.productLayout
|
||||
def layoutBuilder = createLayoutBuilder()
|
||||
buildPlugins(layoutBuilder, getPluginsByModules(productLayout.bundledPluginModules), "$buildContext.paths.distAll/plugins")
|
||||
usedModules.addAll(layoutBuilder.usedModules)
|
||||
}
|
||||
|
||||
void buildNonBundledPlugins() {
|
||||
def ant = buildContext.ant
|
||||
def productLayout = buildContext.productProperties.productLayout
|
||||
def layoutBuilder = createLayoutBuilder()
|
||||
buildContext.executeStep("Build non-bundled plugins", BuildOptions.NON_BUNDLED_PLUGINS_STEP) {
|
||||
def pluginsToPublish = getPluginsByModules(productLayout.pluginModulesToPublish)
|
||||
if (buildContext.productProperties.setPluginAndIDEVersionInPluginXml) {
|
||||
|
||||
Reference in New Issue
Block a user