From 2d57e53ff08eeb69c0735f086205221430c67280 Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Thu, 19 Jan 2017 21:15:02 +0300 Subject: [PATCH] Ability to specify separate versions for non-bundled plugins --- .../build/impl/DistributionJARsBuilder.groovy | 17 +++++++++++------ .../intellij/build/impl/PluginLayout.groovy | 6 ++++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.groovy index f1c136aa5ffd..f298e65bca34 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.groovy @@ -260,7 +260,8 @@ class DistributionJARsBuilder { } def patchedPluginXmlDir = "$buildContext.paths.temp/patched-plugin-xml/$plugin.mainModule" ant.copy(file: pluginXmlPath, todir: "$patchedPluginXmlDir/META-INF") - setPluginVersionAndSince("$patchedPluginXmlDir/META-INF/plugin.xml", buildContext.buildNumber, + setPluginVersionAndSince("$patchedPluginXmlDir/META-INF/plugin.xml", getPluginVersion(plugin), + buildContext.buildNumber, productLayout.prepareCustomPluginRepositoryForPublishedPlugins, productLayout.pluginModulesWithRestrictedCompatibleBuildRange.contains(plugin.mainModule)) layoutBuilder.patchModuleOutput(plugin.mainModule, patchedPluginXmlDir) @@ -272,7 +273,7 @@ class DistributionJARsBuilder { def nonBundledPluginsArtifacts = "$buildContext.paths.artifacts/plugins" pluginsToPublish.each { plugin -> def directory = plugin.directoryName - String suffix = productLayout.prepareCustomPluginRepositoryForPublishedPlugins ? "" : "-${buildContext.buildNumber}" + String suffix = productLayout.prepareCustomPluginRepositoryForPublishedPlugins ? "" : "-${getPluginVersion(plugin)}" ant.zip(destfile: "$nonBundledPluginsArtifacts/$directory${suffix}.zip") { zipfileset(dir: "$pluginsToPublishDir/$directory", prefix: directory) } @@ -283,6 +284,10 @@ class DistributionJARsBuilder { } } + private String getPluginVersion(PluginLayout plugin) { + return plugin.version != null ? plugin.version : buildContext.buildNumber + } + private List getPluginsByModules(Collection modules) { def allNonTrivialPlugins = buildContext.productProperties.productLayout.allNonTrivialPlugins def allOptionalModules = allNonTrivialPlugins.collectMany {it.optionalModules} @@ -453,10 +458,10 @@ class DistributionJARsBuilder { new LayoutBuilder(buildContext.ant, buildContext.project, COMPRESS_JARS) } - private void setPluginVersionAndSince(String pluginXmlPath, String buildNumber, boolean setExactNumberInUntilBuild, boolean useRestrictedCompatibleBuildRange) { + private void setPluginVersionAndSince(String pluginXmlPath, String version, String buildNumber, boolean setExactNumberInUntilBuild, boolean useRestrictedCompatibleBuildRange) { buildContext.ant.replaceregexp(file: pluginXmlPath, match: "[\\d.]*", - replace: "${buildNumber}") + replace: "${version}") def sinceBuild def untilBuild if (!setExactNumberInUntilBuild && buildNumber.matches(/(\d+\.)+\d+/)) { @@ -481,12 +486,12 @@ class DistributionJARsBuilder { replace: "\\s*<\\!\\[CDATA\\[\\s*Plugin version: \\\$\\{version\\}", - replace: "\n\n") ? "" : "" if (!text.contains("")) { - file.text = text.replace(anchor, "${anchor}\n ${buildNumber}") + file.text = text.replace(anchor, "${anchor}\n ${version}") text = file.text } if (!text.contains(" optionalModules = new LinkedHashSet<>() private boolean doNotCreateSeparateJarForLocalizableResources + String version private PluginLayout(String mainModule) { this.mainModule = mainModule @@ -48,6 +49,7 @@ class PluginLayout extends BaseLayout { body.delegate = spec body() layout.directoryName = spec.directoryName + layout.version = spec.version spec.withModule(mainModuleName, spec.mainJarName) if (layout.doNotCreateSeparateJarForLocalizableResources) { layout.modulesWithLocalizableResourcesInCommonJar.clear() @@ -80,6 +82,10 @@ class PluginLayout extends BaseLayout { * Name of the main plugin JAR file */ String mainJarName + /** + * Version of the plugin if it differs from the global build number + */ + String version PluginLayoutSpec(PluginLayout layout) { super(layout)