From b5a37db99c68b108b2f12633f837f0dcd7f55e9f Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 4 Aug 2016 12:03:58 +0300 Subject: [PATCH] build scripts: added @CompileStatic to classes which don't call a lot of AntBuilder dynamic methods --- .../intellij/build/BuildContext.groovy | 3 ++- .../intellij/build/BuildMessageLogger.groovy | 3 +++ .../intellij/build/BuildOptions.groovy | 2 ++ .../jetbrains/intellij/build/BuildTasks.groovy | 2 ++ .../build/CommunityLibraryLicenses.groovy | 5 ++++- .../build/CommunityRepositoryModules.groovy | 2 ++ .../build/IdeaCommunityProperties.groovy | 7 ++++++- .../intellij/build/JvmArchitecture.groovy | 3 +++ .../build/LinuxDistributionCustomizer.groovy | 3 +++ .../jetbrains/intellij/build/LogMessage.groovy | 3 +++ .../build/MacDistributionCustomizer.groovy | 3 +++ .../intellij/build/MacHostProperties.groovy | 3 +++ .../intellij/build/ProductModulesLayout.groovy | 2 ++ .../intellij/build/ProductProperties.groovy | 3 +++ .../intellij/build/ScrambleTool.groovy | 3 +++ .../jetbrains/intellij/build/SignTool.groovy | 3 +++ .../build/WindowsDistributionCustomizer.groovy | 4 ++++ .../intellij/build/impl/AntTaskLogger.groovy | 2 ++ .../intellij/build/impl/BuildContextImpl.groovy | 17 +++++++++++++---- .../build/impl/BuildMessagesImpl.groovy | 12 +++++++----- .../intellij/build/impl/BuildUtils.groovy | 2 ++ .../build/impl/BundledJreManager.groovy | 6 +++++- .../build/impl/ConsoleBuildMessageLogger.groovy | 4 +++- .../intellij/build/impl/JdkUtils.groovy | 4 +++- .../impl/LibraryLicensesListGenerator.groovy | 4 +++- .../build/impl/NsisFileListGenerator.groovy | 2 ++ .../impl/TeamCityBuildMessageLogger.groovy | 6 +++--- .../build/impl/VmOptionsGenerator.groovy | 2 ++ 28 files changed, 96 insertions(+), 19 deletions(-) diff --git a/build/groovy/org/jetbrains/intellij/build/BuildContext.groovy b/build/groovy/org/jetbrains/intellij/build/BuildContext.groovy index a2c3cf50f697..0b86b0ba302b 100644 --- a/build/groovy/org/jetbrains/intellij/build/BuildContext.groovy +++ b/build/groovy/org/jetbrains/intellij/build/BuildContext.groovy @@ -15,7 +15,7 @@ */ package org.jetbrains.intellij.build -import org.codehaus.gant.GantBuilder +import groovy.transform.CompileStatic import org.jetbrains.intellij.build.impl.BuildContextImpl import org.jetbrains.intellij.build.impl.BundledJreManager import org.jetbrains.jps.gant.JpsGantProjectBuilder @@ -26,6 +26,7 @@ import org.jetbrains.jps.model.module.JpsModule /** * @author nik */ +@CompileStatic abstract class BuildContext { AntBuilder ant BuildMessages messages diff --git a/build/groovy/org/jetbrains/intellij/build/BuildMessageLogger.groovy b/build/groovy/org/jetbrains/intellij/build/BuildMessageLogger.groovy index 1fc814a363c9..1cbca682f56a 100644 --- a/build/groovy/org/jetbrains/intellij/build/BuildMessageLogger.groovy +++ b/build/groovy/org/jetbrains/intellij/build/BuildMessageLogger.groovy @@ -15,9 +15,12 @@ */ package org.jetbrains.intellij.build +import groovy.transform.CompileStatic + /** * @author nik */ +@CompileStatic abstract class BuildMessageLogger { abstract void processMessage(LogMessage message) } \ No newline at end of file diff --git a/build/groovy/org/jetbrains/intellij/build/BuildOptions.groovy b/build/groovy/org/jetbrains/intellij/build/BuildOptions.groovy index 224347f11aed..000a2c178f76 100644 --- a/build/groovy/org/jetbrains/intellij/build/BuildOptions.groovy +++ b/build/groovy/org/jetbrains/intellij/build/BuildOptions.groovy @@ -16,10 +16,12 @@ package org.jetbrains.intellij.build import com.intellij.util.SystemProperties +import groovy.transform.CompileStatic /** * @author nik */ +@CompileStatic class BuildOptions { /** * By default build scripts compile project classes to a special output directory (to not interfere with the default project output if diff --git a/build/groovy/org/jetbrains/intellij/build/BuildTasks.groovy b/build/groovy/org/jetbrains/intellij/build/BuildTasks.groovy index ca8510415a64..42998ca72128 100644 --- a/build/groovy/org/jetbrains/intellij/build/BuildTasks.groovy +++ b/build/groovy/org/jetbrains/intellij/build/BuildTasks.groovy @@ -15,12 +15,14 @@ */ package org.jetbrains.intellij.build +import groovy.transform.CompileStatic import org.jetbrains.intellij.build.impl.BuildTasksImpl import org.jetbrains.intellij.build.impl.PluginLayout /** * @author nik */ +@CompileStatic abstract class BuildTasks { /** * Build sources.zip archive containing the project source files keeping the original layout diff --git a/build/groovy/org/jetbrains/intellij/build/CommunityLibraryLicenses.groovy b/build/groovy/org/jetbrains/intellij/build/CommunityLibraryLicenses.groovy index d1d98336339b..c00643ffdf82 100644 --- a/build/groovy/org/jetbrains/intellij/build/CommunityLibraryLicenses.groovy +++ b/build/groovy/org/jetbrains/intellij/build/CommunityLibraryLicenses.groovy @@ -15,12 +15,15 @@ */ package org.jetbrains.intellij.build +import groovy.transform.CompileStatic + import static org.jetbrains.intellij.build.LibraryLicense.jetbrainsLibrary import static org.jetbrains.intellij.build.LibraryLicense.libraryLicense /** * @author nik */ +@CompileStatic class CommunityLibraryLicenses { public static final List LICENSES_LIST = [ libraryLicense(name: "aether-api-0.9.0.M2.jar", version: "0.9.0.M2", libraryNames: ["aether-api-0.9.0.M2.jar"], @@ -363,5 +366,5 @@ class CommunityLibraryLicenses { jetbrainsLibrary("tcServiceMessages"), jetbrainsLibrary("optimizedFileManager.jar"), jetbrainsLibrary("KotlinJavaRuntime") - ] + ] as List } \ No newline at end of file diff --git a/build/groovy/org/jetbrains/intellij/build/CommunityRepositoryModules.groovy b/build/groovy/org/jetbrains/intellij/build/CommunityRepositoryModules.groovy index dab0cb97491a..62db10155347 100644 --- a/build/groovy/org/jetbrains/intellij/build/CommunityRepositoryModules.groovy +++ b/build/groovy/org/jetbrains/intellij/build/CommunityRepositoryModules.groovy @@ -33,6 +33,7 @@ package org.jetbrains.intellij.build +import groovy.transform.CompileStatic import org.jetbrains.intellij.build.impl.PluginLayout import static org.jetbrains.intellij.build.impl.PluginLayout.plugin @@ -40,6 +41,7 @@ import static org.jetbrains.intellij.build.impl.PluginLayout.plugin /** * @author nik */ +@CompileStatic class CommunityRepositoryModules { static List PLATFORM_API_MODULES = [ "analysis-api", diff --git a/build/groovy/org/jetbrains/intellij/build/IdeaCommunityProperties.groovy b/build/groovy/org/jetbrains/intellij/build/IdeaCommunityProperties.groovy index df741e51f26d..76eb804e2fcb 100644 --- a/build/groovy/org/jetbrains/intellij/build/IdeaCommunityProperties.groovy +++ b/build/groovy/org/jetbrains/intellij/build/IdeaCommunityProperties.groovy @@ -15,21 +15,26 @@ */ package org.jetbrains.intellij.build +import groovy.transform.CompileDynamic +import groovy.transform.CompileStatic + /** * @author nik */ +@CompileStatic class IdeaCommunityProperties extends ProductProperties { IdeaCommunityProperties(String home) { baseFileName = "idea" platformPrefix = "Idea" productCode = "IC" applicationInfoModule = "community-resources" - additionalIDEPropertiesFilePaths = ["$home/build/conf/ideaCE.properties"] + additionalIDEPropertiesFilePaths = ["$home/build/conf/ideaCE.properties".toString()] toolsJarRequired = true buildCrossPlatformDistribution = true } @Override + @CompileDynamic void copyAdditionalFiles(BuildContext buildContext, String targetDirectory) { buildContext.ant.copy(todir: targetDirectory) { fileset(file: "$buildContext.paths.communityHome/LICENSE.txt") diff --git a/build/groovy/org/jetbrains/intellij/build/JvmArchitecture.groovy b/build/groovy/org/jetbrains/intellij/build/JvmArchitecture.groovy index 015a8b4e868b..09229d4fda39 100644 --- a/build/groovy/org/jetbrains/intellij/build/JvmArchitecture.groovy +++ b/build/groovy/org/jetbrains/intellij/build/JvmArchitecture.groovy @@ -15,9 +15,12 @@ */ package org.jetbrains.intellij.build +import groovy.transform.CompileStatic + /** * @author nik */ +@CompileStatic enum JvmArchitecture { x32(""), x64("64") diff --git a/build/groovy/org/jetbrains/intellij/build/LinuxDistributionCustomizer.groovy b/build/groovy/org/jetbrains/intellij/build/LinuxDistributionCustomizer.groovy index c8fdb2b44a56..d0f5fe650271 100644 --- a/build/groovy/org/jetbrains/intellij/build/LinuxDistributionCustomizer.groovy +++ b/build/groovy/org/jetbrains/intellij/build/LinuxDistributionCustomizer.groovy @@ -15,9 +15,12 @@ */ package org.jetbrains.intellij.build +import groovy.transform.CompileStatic + /** * @author nik */ +@CompileStatic abstract class LinuxDistributionCustomizer { /** * Path to a 128x128 png product icon for Linux distribution diff --git a/build/groovy/org/jetbrains/intellij/build/LogMessage.groovy b/build/groovy/org/jetbrains/intellij/build/LogMessage.groovy index 7878ead26697..9901c4dd0362 100644 --- a/build/groovy/org/jetbrains/intellij/build/LogMessage.groovy +++ b/build/groovy/org/jetbrains/intellij/build/LogMessage.groovy @@ -15,9 +15,12 @@ */ package org.jetbrains.intellij.build +import groovy.transform.CompileStatic + /** * @author nik */ +@CompileStatic class LogMessage { enum Kind { ERROR, WARNING, INFO, PROGRESS, BLOCK_STARTED, BLOCK_FINISHED diff --git a/build/groovy/org/jetbrains/intellij/build/MacDistributionCustomizer.groovy b/build/groovy/org/jetbrains/intellij/build/MacDistributionCustomizer.groovy index ae4a5e88304a..5eff3d062cbc 100644 --- a/build/groovy/org/jetbrains/intellij/build/MacDistributionCustomizer.groovy +++ b/build/groovy/org/jetbrains/intellij/build/MacDistributionCustomizer.groovy @@ -15,9 +15,12 @@ */ package org.jetbrains.intellij.build +import groovy.transform.CompileStatic + /** * @author nik */ +@CompileStatic abstract class MacDistributionCustomizer { /** * Path to icns file containing product icon bundle for Mac OS distribution diff --git a/build/groovy/org/jetbrains/intellij/build/MacHostProperties.groovy b/build/groovy/org/jetbrains/intellij/build/MacHostProperties.groovy index 114b6c026481..ff3c6a06878b 100644 --- a/build/groovy/org/jetbrains/intellij/build/MacHostProperties.groovy +++ b/build/groovy/org/jetbrains/intellij/build/MacHostProperties.groovy @@ -15,6 +15,8 @@ */ package org.jetbrains.intellij.build +import groovy.transform.CompileStatic + /** * @author nik @@ -40,6 +42,7 @@ package org.jetbrains.intellij.build * 7. Set environment variable VERSIONER_PERL_PREFER_32_BIT to "true" * http://apple.stackexchange.com/questions/83109/macosx-10-8-and-32-bit-perl-modules */ +@CompileStatic public class MacHostProperties { /** * Mac host host name. diff --git a/build/groovy/org/jetbrains/intellij/build/ProductModulesLayout.groovy b/build/groovy/org/jetbrains/intellij/build/ProductModulesLayout.groovy index b50770a0ce6f..d8addb07a4e0 100644 --- a/build/groovy/org/jetbrains/intellij/build/ProductModulesLayout.groovy +++ b/build/groovy/org/jetbrains/intellij/build/ProductModulesLayout.groovy @@ -33,11 +33,13 @@ package org.jetbrains.intellij.build +import groovy.transform.CompileStatic import org.jetbrains.intellij.build.impl.PluginLayout /** * @author nik */ +@CompileStatic class ProductModulesLayout { /** * Name of the main product JAR file. Outputs of {@link #platformImplementationModules} will be packed into it. diff --git a/build/groovy/org/jetbrains/intellij/build/ProductProperties.groovy b/build/groovy/org/jetbrains/intellij/build/ProductProperties.groovy index d32f749a3be8..90fda8d57452 100644 --- a/build/groovy/org/jetbrains/intellij/build/ProductProperties.groovy +++ b/build/groovy/org/jetbrains/intellij/build/ProductProperties.groovy @@ -15,9 +15,12 @@ */ package org.jetbrains.intellij.build +import groovy.transform.CompileStatic + /** * @author nik */ +@CompileStatic public abstract class ProductProperties { /** * Base name for script files (*.bat, *.sh, *.exe), usually a shortened product name in lower case (e.g. 'idea' for IntelliJ IDEA, 'datagrip' for DataGrip) diff --git a/build/groovy/org/jetbrains/intellij/build/ScrambleTool.groovy b/build/groovy/org/jetbrains/intellij/build/ScrambleTool.groovy index a885565770f6..79be332a4cea 100644 --- a/build/groovy/org/jetbrains/intellij/build/ScrambleTool.groovy +++ b/build/groovy/org/jetbrains/intellij/build/ScrambleTool.groovy @@ -15,12 +15,15 @@ */ package org.jetbrains.intellij.build +import groovy.transform.CompileStatic + /** * Implement this interfaces and pass the implementation to {@link BuildContext#createContext} method to support scrambling the product * JAR files. * * @author nik */ +@CompileStatic interface ScrambleTool { /** * @return list of modules used by the tool which need to be compiled before {@link #scramble} method is invoked diff --git a/build/groovy/org/jetbrains/intellij/build/SignTool.groovy b/build/groovy/org/jetbrains/intellij/build/SignTool.groovy index 7302fd27cfe0..eb3b93bbc48f 100644 --- a/build/groovy/org/jetbrains/intellij/build/SignTool.groovy +++ b/build/groovy/org/jetbrains/intellij/build/SignTool.groovy @@ -30,11 +30,14 @@ */ package org.jetbrains.intellij.build +import groovy.transform.CompileStatic + /** * Implement this interfaces and pass the implementation to {@link BuildContext#createContext} method to sign the product's *.exe files. * * @author nik */ +@CompileStatic interface SignTool { /** * @param path absolute path (with '/' as a separator) to *.exe file to be signed diff --git a/build/groovy/org/jetbrains/intellij/build/WindowsDistributionCustomizer.groovy b/build/groovy/org/jetbrains/intellij/build/WindowsDistributionCustomizer.groovy index cfd30127d203..c5513b7218d0 100644 --- a/build/groovy/org/jetbrains/intellij/build/WindowsDistributionCustomizer.groovy +++ b/build/groovy/org/jetbrains/intellij/build/WindowsDistributionCustomizer.groovy @@ -14,9 +14,13 @@ * limitations under the License. */ package org.jetbrains.intellij.build + +import groovy.transform.CompileStatic + /** * @author nik */ +@CompileStatic abstract class WindowsDistributionCustomizer { /** * Path to 256x256 *.ico file for Windows distribution diff --git a/build/groovy/org/jetbrains/intellij/build/impl/AntTaskLogger.groovy b/build/groovy/org/jetbrains/intellij/build/impl/AntTaskLogger.groovy index e992cedac79d..41a7b35c2336 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/AntTaskLogger.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/AntTaskLogger.groovy @@ -15,6 +15,7 @@ */ package org.jetbrains.intellij.build.impl +import groovy.transform.CompileStatic import org.apache.tools.ant.BuildEvent import org.apache.tools.ant.BuildListener import org.apache.tools.ant.Project @@ -24,6 +25,7 @@ import org.jetbrains.intellij.build.BuildMessages /** * @author nik */ +@CompileStatic class AntTaskLogger implements BuildListener { BuildMessages defaultHandler private final Map threadHandlers = [:] diff --git a/build/groovy/org/jetbrains/intellij/build/impl/BuildContextImpl.groovy b/build/groovy/org/jetbrains/intellij/build/impl/BuildContextImpl.groovy index 2a4566630430..9d2af87553f1 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/BuildContextImpl.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/BuildContextImpl.groovy @@ -17,6 +17,8 @@ package org.jetbrains.intellij.build.impl import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.util.text.StringUtil +import groovy.transform.CompileDynamic +import groovy.transform.CompileStatic import org.jetbrains.intellij.build.* import org.jetbrains.jps.gant.JpsGantProjectBuilder import org.jetbrains.jps.model.JpsGlobal @@ -26,9 +28,11 @@ import org.jetbrains.jps.model.module.JpsModule import org.jetbrains.jps.model.serialization.JpsModelSerializationDataService import org.jetbrains.jps.model.serialization.JpsProjectLoader import org.jetbrains.jps.util.JpsPathUtil + /** * @author nik */ +@CompileStatic class BuildContextImpl extends BuildContext { private final JpsGlobal global private final boolean underTeamCity @@ -124,10 +128,7 @@ class BuildContextImpl extends BuildContext { def classesOutput = "$paths.buildOutputRoot/$classesDirName" List outputDirectoriesToKeep = [] if (options.pathToCompiledClassesArchive != null) { - messages.block("Unpack compiled classes archive") { - FileUtil.delete(new File(classesOutput)) - ant.unzip(src: options.pathToCompiledClassesArchive, dest: classesOutput) - } + unpackCompiledClasses(messages, classesOutput, options) outputDirectoriesToKeep.add(classesDirName) } if (options.incrementalCompilation) { @@ -148,6 +149,14 @@ class BuildContextImpl extends BuildContext { return outputDirectoriesToKeep } + @CompileDynamic + private static void unpackCompiledClasses(BuildMessages messages, String classesOutput, BuildOptions options) { + messages.block("Unpack compiled classes archive") { + FileUtil.delete(new File(classesOutput)) + ant.unzip(src: options.pathToCompiledClassesArchive, dest: classesOutput) + } + } + private static void checkOptions(BuildOptions options, BuildMessages messages) { if (options.useCompiledClassesFromProjectOutput && options.incrementalCompilation) { messages.warning("'${BuildOptions.USE_COMPILED_CLASSES_PROPERTY}' is specified, so 'incremental compilation' option will be ignored") diff --git a/build/groovy/org/jetbrains/intellij/build/impl/BuildMessagesImpl.groovy b/build/groovy/org/jetbrains/intellij/build/impl/BuildMessagesImpl.groovy index 80a5284aa0bb..01680a8d3bf6 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/BuildMessagesImpl.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/BuildMessagesImpl.groovy @@ -15,6 +15,7 @@ */ package org.jetbrains.intellij.build.impl +import groovy.transform.CompileStatic import org.apache.tools.ant.BuildException import org.apache.tools.ant.DefaultLogger import org.apache.tools.ant.Project @@ -31,9 +32,10 @@ import java.util.function.Function /** * @author nik */ +@CompileStatic class BuildMessagesImpl implements BuildMessages { private final BuildMessageLogger logger - private final Function loggerFactory + private final Closure loggerFactory private final AntTaskLogger antTaskLogger private final BuildMessagesImpl parentInstance private final List forkedInstances = [] @@ -47,9 +49,9 @@ class BuildMessagesImpl implements BuildMessages { BuildInfoPrinter buildInfoPrinter = underTeamCity ? new TeamCityBuildInfoPrinter() : new DefaultBuildInfoPrinter() builder.buildInfoPrinter = buildInfoPrinter disableAntLogging(antProject) - Function loggerFactory = underTeamCity ? TeamCityBuildMessageLogger.FACTORY : ConsoleBuildMessageLogger.FACTORY + Closure loggerFactory = underTeamCity ? TeamCityBuildMessageLogger.FACTORY : ConsoleBuildMessageLogger.FACTORY def antTaskLogger = new AntTaskLogger() - def messages = new BuildMessagesImpl(loggerFactory.apply(null), loggerFactory, antTaskLogger, null) + def messages = new BuildMessagesImpl(loggerFactory(null), loggerFactory, antTaskLogger, null) antTaskLogger.defaultHandler = messages antProject.addBuildListener(antTaskLogger) antProject.addReference(key, messages) @@ -67,7 +69,7 @@ class BuildMessagesImpl implements BuildMessages { } } - private BuildMessagesImpl(BuildMessageLogger logger, Function loggerFactory, AntTaskLogger antTaskLogger, + private BuildMessagesImpl(BuildMessageLogger logger, Closure loggerFactory, AntTaskLogger antTaskLogger, BuildMessagesImpl parentInstance) { this.logger = logger this.loggerFactory = loggerFactory @@ -125,7 +127,7 @@ class BuildMessagesImpl implements BuildMessages { @Override BuildMessages forkForParallelTask(String taskName) { - def forked = new BuildMessagesImpl(loggerFactory.apply(taskName), loggerFactory, antTaskLogger, this) + def forked = new BuildMessagesImpl(loggerFactory(taskName), loggerFactory, antTaskLogger, this) forkedInstances << forked return forked } diff --git a/build/groovy/org/jetbrains/intellij/build/impl/BuildUtils.groovy b/build/groovy/org/jetbrains/intellij/build/impl/BuildUtils.groovy index 8fffab2864ee..721d1afbc864 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/BuildUtils.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/BuildUtils.groovy @@ -17,6 +17,7 @@ package org.jetbrains.intellij.build.impl import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.util.text.StringUtil +import groovy.transform.CompileStatic import org.apache.tools.ant.Main import org.apache.tools.ant.Project import org.codehaus.gant.GantBinding @@ -24,6 +25,7 @@ import org.codehaus.gant.GantBinding /** * @author nik */ +@CompileStatic class BuildUtils { static void addToClassPath(String path, AntBuilder ant) { def classLoader = (GroovyClassLoader)BuildUtils.class.classLoader diff --git a/build/groovy/org/jetbrains/intellij/build/impl/BundledJreManager.groovy b/build/groovy/org/jetbrains/intellij/build/impl/BundledJreManager.groovy index a4f87a270ad4..b1c8fe0a73a6 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/BundledJreManager.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/BundledJreManager.groovy @@ -16,12 +16,15 @@ package org.jetbrains.intellij.build.impl import com.intellij.openapi.util.SystemInfo +import groovy.transform.CompileDynamic +import groovy.transform.CompileStatic import org.jetbrains.intellij.build.BuildContext import org.jetbrains.intellij.build.JvmArchitecture /** * @author nik */ +@CompileStatic class BundledJreManager { private final BuildContext buildContext String baseDirectoryForJre @@ -62,6 +65,7 @@ class BundledJreManager { return findJreArchive("mac")?.absolutePath } + @CompileDynamic private String extractJre(String osDirName, JvmArchitecture arch = JvmArchitecture.x64, JreVendor vendor = JreVendor.JetBrains) { String vendorSuffix = vendor == JreVendor.Oracle ? ".oracle" : "" String targetDir = "$baseDirectoryForJre/jre.$osDirName$arch.fileSuffix$vendorSuffix" @@ -98,7 +102,7 @@ class BundledJreManager { def jdkDir = new File(buildContext.paths.projectHome, "build/jdk/$osDirName") String suffix = arch == JvmArchitecture.x32 ? "_x86" : "_x64" String prefix = buildContext.productProperties.toolsJarRequired ? vendor.jreWithToolsJarNamePrefix : vendor.jreNamePrefix - def jdkFiles = jdkDir.listFiles().findAll { it.name.startsWith(prefix) && it.name.endsWith("${suffix}.tar.gz") } + Collection jdkFiles = jdkDir.listFiles()?.findAll { it.name.startsWith(prefix) && it.name.endsWith("${suffix}.tar.gz") } ?: [] as List if (jdkFiles.size() > 1) { buildContext.messages.warning("Cannot extract $osDirName JRE: several matching files are found ($jdkFiles)") return null diff --git a/build/groovy/org/jetbrains/intellij/build/impl/ConsoleBuildMessageLogger.groovy b/build/groovy/org/jetbrains/intellij/build/impl/ConsoleBuildMessageLogger.groovy index 2c9ea9985e4d..69b8285e401e 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/ConsoleBuildMessageLogger.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/ConsoleBuildMessageLogger.groovy @@ -15,6 +15,7 @@ */ package org.jetbrains.intellij.build.impl +import groovy.transform.CompileStatic import org.jetbrains.intellij.build.BuildMessageLogger import org.jetbrains.intellij.build.LogMessage @@ -23,8 +24,9 @@ import java.util.function.Function /** * @author nik */ +@CompileStatic class ConsoleBuildMessageLogger extends BuildMessageLogger { - public static final Function FACTORY = { new ConsoleBuildMessageLogger(it) } + public static final Closure FACTORY = { String taskName -> new ConsoleBuildMessageLogger(taskName) } private final String parallelTaskId private int indent private static final PrintStream out = BuildUtils.realSystemOut diff --git a/build/groovy/org/jetbrains/intellij/build/impl/JdkUtils.groovy b/build/groovy/org/jetbrains/intellij/build/impl/JdkUtils.groovy index 1e457e28fa71..a75ca1fc4220 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/JdkUtils.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/JdkUtils.groovy @@ -17,6 +17,7 @@ package org.jetbrains.intellij.build.impl import com.intellij.openapi.util.SystemInfo import com.intellij.util.SystemProperties +import groovy.transform.CompileStatic import org.jetbrains.intellij.build.BuildMessages import org.jetbrains.jps.model.JpsGlobal import org.jetbrains.jps.model.java.JdkVersionDetector @@ -26,6 +27,7 @@ import org.jetbrains.jps.model.library.JpsOrderRootType /** * @author nik */ +@CompileStatic class JdkUtils { public static void defineJdk(JpsGlobal global, String jdkName, String jdkHomePath) { def sdk = JpsJavaExtensionService.instance.addJavaSdk(global, jdkName, jdkHomePath) @@ -36,7 +38,7 @@ class JdkUtils { } public static String computeJdkHome(BuildMessages messages, String propertyName, String defaultDir, String envVarName) { - def jdkDir = System.getProperty(propertyName) + String jdkDir = System.getProperty(propertyName) if (jdkDir != null) { return jdkDir } diff --git a/build/groovy/org/jetbrains/intellij/build/impl/LibraryLicensesListGenerator.groovy b/build/groovy/org/jetbrains/intellij/build/impl/LibraryLicensesListGenerator.groovy index bc625a824b11..a5e4f42f14b0 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/LibraryLicensesListGenerator.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/LibraryLicensesListGenerator.groovy @@ -15,6 +15,7 @@ */ package org.jetbrains.intellij.build.impl +import groovy.transform.CompileStatic import org.jetbrains.intellij.build.LibraryLicense import org.jetbrains.jps.gant.JpsGantProjectBuilder import org.jetbrains.jps.model.JpsProject @@ -27,6 +28,7 @@ import org.jetbrains.jps.model.module.JpsModule /** * @author nik */ +@CompileStatic class LibraryLicensesListGenerator { private final JpsGantProjectBuilder projectBuilder private final JpsProject project @@ -54,7 +56,7 @@ class LibraryLicensesListGenerator { void generateLicensesTable(String filePath, Set usedModulesNames) { projectBuilder.info("Generating licenses table") projectBuilder.info("Used modules: $usedModulesNames") - Set usedModules = project.modules.findAll { usedModulesNames.contains(it.name) } + Set usedModules = project.modules.findAll { usedModulesNames.contains(it.name) } as Set Map usedLibraries = [:] usedModules.each { JpsModule module -> JpsJavaExtensionService.dependencies(module).includedIn(JpsJavaClasspathKind.PRODUCTION_RUNTIME).getLibraries().each { item -> diff --git a/build/groovy/org/jetbrains/intellij/build/impl/NsisFileListGenerator.groovy b/build/groovy/org/jetbrains/intellij/build/impl/NsisFileListGenerator.groovy index ed77faee2806..92b618827e5f 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/NsisFileListGenerator.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/NsisFileListGenerator.groovy @@ -31,11 +31,13 @@ package org.jetbrains.intellij.build.impl import com.intellij.openapi.util.io.FileUtil +import groovy.transform.CompileStatic import java.util.regex.Pattern /** * @author nik */ +@CompileStatic class NsisFileListGenerator { private final Map> directoryToFiles = [:] private final List filesRelativePaths = [] diff --git a/build/groovy/org/jetbrains/intellij/build/impl/TeamCityBuildMessageLogger.groovy b/build/groovy/org/jetbrains/intellij/build/impl/TeamCityBuildMessageLogger.groovy index 0ccb05118bbf..061dd68814f7 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/TeamCityBuildMessageLogger.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/TeamCityBuildMessageLogger.groovy @@ -15,18 +15,18 @@ */ package org.jetbrains.intellij.build.impl +import groovy.transform.CompileStatic import org.jetbrains.intellij.build.BuildMessageLogger import org.jetbrains.intellij.build.LogMessage -import java.util.function.Function - /** * todo[nik] this is replacement for BuildInfoPrinter. BuildInfoPrinter should be deleted after we move its remaining methods to this class. * * @author nik */ +@CompileStatic class TeamCityBuildMessageLogger extends BuildMessageLogger { - public static final Function FACTORY = { new TeamCityBuildMessageLogger(it) } + public static final Closure FACTORY = { String taskName -> new TeamCityBuildMessageLogger(taskName) } private static final PrintStream out = BuildUtils.realSystemOut private final String parallelTaskId diff --git a/build/groovy/org/jetbrains/intellij/build/impl/VmOptionsGenerator.groovy b/build/groovy/org/jetbrains/intellij/build/impl/VmOptionsGenerator.groovy index f09c091339de..30f1d7652e08 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/VmOptionsGenerator.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/VmOptionsGenerator.groovy @@ -15,11 +15,13 @@ */ package org.jetbrains.intellij.build.impl +import groovy.transform.CompileStatic import org.jetbrains.intellij.build.JvmArchitecture /** * @author nik */ +@CompileStatic class VmOptionsGenerator { private static final String COMMON_VM_OPTIONS = "-XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea " + "-Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true " +