blob: a473114de76e8fd1ab0a6c475921bde63fbd42dc [file] [log] [blame]
/*
* Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.jetbrains.jps.model.java.JpsJavaClasspathKind
import org.jetbrains.jps.model.module.JpsLibraryDependency
import org.jetbrains.jps.model.library.JpsOrderRootType
import org.jetbrains.jps.util.JpsPathUtil
import static org.jetbrains.jps.idea.IdeaProjectLoader.guessHome
includeTargets << new File("${guessHome(this)}/build/scripts/utils.gant")
target('default': "Developers update") {
def patchedDescriptorDir = patchAppDescriptor(deploy)
layoutFull(home, deploy, patchedDescriptorDir)
ant.delete(dir: patchedDescriptorDir)
}
String appInfoFileName() {
return "idea/AndroidStudioApplicationInfo.xml"
}
String patchAppDescriptor(String targetDirectory) {
def patchedDirectory = "${targetDirectory}/../patched"
ant.delete(dir: patchedDirectory)
layout(patchedDirectory) {
module("adt-branding") {
include(name: appInfoFileName())
}
}
ant.replace(file: "$patchedDirectory/${appInfoFileName()}", token: "__BUILD_NUMBER__", value: "AI-$snapshot")
ant.replace(file: "$patchedDirectory/${appInfoFileName()}", token: "__BUILD_DATE__", value: new Date().format("yyyyMMddHHmm"))
return patchedDirectory
}
def layoutFull(String home, String targetDirectory, String patchedDescriptorDir = null) {
projectBuilder.stage("layout to $targetDirectory")
List<String> jpsCommonModules = ["jps-model-impl", "jps-model-serialization"]
List<String> openapiModules = [platformApiModules,
"compiler-openapi",
"debugger-openapi",
"dom-openapi",
"execution-openapi",
"java-analysis-api",
"java-indexing-api",
"java-psi-api",
"jsp-openapi",
"jsp-base-openapi",
"openapi",
"remote-servers-java-api",
"testFramework-java",
].flatten()
List<String> implementationModules = [platformImplementationModules,
"compiler-impl",
"debugger-impl",
"dom-impl",
"duplicates-analysis",
"execution-impl",
"external-system-impl",
"idea-ui",
"java-analysis-impl",
"java-indexing-impl",
"java-impl",
"java-psi-impl",
"java-structure-view",
"jsp-spi",
"manifest",
"platform-main",
"remote-servers-java-impl",
"structuralsearch",
"structuralsearch-java",
"testFramework",
"tests_bootstrap",
"typeMigration",
"ui-designer-core"
].flatten()
implementationModules.removeAll(jpsCommonModules) //todo[nik] remove jps modules from platformImplementationModules instead and update layouts of minor IDEs accordingly
ant.patternset(id: "resources.included") {
include(name: "**/*.properties")
include(name: "fileTemplates/**/*")
include(name: "inspectionDescriptions/**/*")
include(name: "intentionDescriptions/**/*")
include(name: "tips/**/*")
}
ant.patternset(id: "resources.excluded") {
exclude(name: "**/*.properties")
exclude(name: "fileTemplates/**/*")
exclude(name: "fileTemplates")
exclude(name: "inspectionDescriptions/**/*")
exclude(name: "inspectionDescriptions")
exclude(name: "intentionDescriptions/**/*")
exclude(name: "intentionDescriptions")
exclude(name: "tips/**/*")
exclude(name: "tips")
}
def info = layout(targetDirectory) {
dir("lib") {
dir("rt") {
fileset(dir: "${home}/lib/rt", includesfile: "${home}/lib/rt/required_for_dist.txt")
jar("jps-plugin-system.jar") {
module("jps-plugin-system")
}
}
dir("libpty") {
fileset(dir: "$home/lib/libpty") {
exclude(name: "readme.txt")
}
}
jar("util.jar") {
module("util")
module("util-rt")
}
jar("openapi.jar") {
openapiModules.each { module it}
}
jar("annotations.jar") { module("annotations")}
jar("jdkAnnotations.jar") {
fileset(dir: "${home}/java/jdkAnnotations")
}
jar("extensions.jar") { module("extensions")}
jar("idea.jar") {
implementationModules.each { module it}
}
jar("bootstrap.jar") { module("bootstrap") }
jar("jps-launcher.jar") { module("jps-launcher") }
jar("resources.jar") {
module("colorSchemes")
module("resources")
module("platform-resources")
module("community-resources")
module("adt-branding") {
if (patchedDescriptorDir != null) {
exclude(name: appInfoFileName())
}
}
if (patchedDescriptorDir != null) {
fileset(dir: patchedDescriptorDir)
}
}
jar("idea_rt.jar") { module("java-runtime")}
jar("forms_rt.jar") {
module("forms_rt")
module("forms-compiler")
}
jar("resources_en.jar") {
module("resources-en")
module("platform-resources-en")
}
jar("icons.jar") { module("icons") }
jar("boot.jar") { module("boot") }
jar("javac2.jar") {
module("javac2")
module("forms-compiler")
module("forms_rt")
module("instrumentation-util")
}
jar("jps-model.jar") {
jpsCommonModules.each { module it }
}
jar("jps-server.jar") {
module("jps-builders")
}
fileset(dir: "$home/jps/lib") {
include(name: "optimizedFileManager.jar")
}
fileset(dir: "$home/lib", includesfile: "${home}/lib/required_for_dist.txt")
fileset(dir: "$home/lib/src") {
include(name: "trove4j_changes.txt")
include(name: "trove4j_src.jar")
}
fileset(dir: "$home/xml/relaxng/lib", includes: "*.jar")
dir("ant") {
fileset(dir: "$home/lib/ant") {
exclude(name: "**/src/**")
}
}
}
layoutCommunityPlugins(home)
dir("plugins") {
dir("javaFX") {
dir("lib") {
jar("javaFX.jar") {
noResources("javaFX")
noResources("javaFX-CE")
}
resources(["javaFX", "javaFX-CE"])
jar("javaFX-jps-plugin.jar") {
module("javaFX-jps-plugin")
}
jar("common-javaFX-plugin.jar") {
module("common-javaFX-plugin")
}
}
fileset(dir: "${home}/plugins/javaFX/FxBuilderEmbedder/lib", includes: "embedder.jar");
}
}
dir("plugins") {
dir("IntelliLang") {
dir("lib") {
jar("IntelliLang.jar") {
module("IntelliLang")
module("IntelliLang-java")
module("IntelliLang-xml")
}
jar("intellilang-jps-plugin.jar") {
module("intellilang-jps-plugin")
}
}
}
}
}
printUnusedModules(info.usedModules)
//reorder(targetDirectory)
}
public def layoutCommunityPlugins(String home) {
layoutAndroid()
layoutGoogle()
dir("plugins") {
def simplePlugins = ["commander", "copyright", "java-i18n", "hg4idea", "github"] //, "tasks-time-tracking"]
simplePlugins.each {
layoutPlugin it
}
// ant not needed in AS
// layoutPlugin("ant", "ant", "antIntegration") {
// jar("ant-jps-plugin.jar") {
// module("ant-jps-plugin")
// }
// }
// uiDesigner not needed in AS
// layoutPlugin("uiDesigner", "ui-designer", "uiDesigner") {
// dir("jps") {
// jar("ui-designer-jps-plugin.jar") {
// module("ui-designer-jps-plugin")
// }
// }
// }
pluginDir("properties") {
dir("lib") {
jar("properties.jar") {
module("properties-psi-api")
module("properties-psi-impl")
module("properties")
}
}
}
layoutPlugin("maven") {
jar("maven-jps-plugin.jar") {
module("maven-jps-plugin")
}
jar("maven-server-api.jar") {
module("maven-server-api")
}
jar("maven2-server-impl.jar") {
module("maven2-server-impl")
}
jar("maven3-server-impl.jar") {
module("maven3-server-impl")
}
jar("artifact-resolver-m2.jar") {
module("maven-artifact-resolver-m2")
}
jar("artifact-resolver-m3.jar") {
module("maven-artifact-resolver-m3")
module("maven-artifact-resolver-m2") {
include(name: 'org/jetbrains/idea/maven/artifactResolver/common/*')
}
}
jar("artifact-resolver-m31.jar") {
module("maven-artifact-resolver-m31")
module("maven-artifact-resolver-m2") {
include(name: 'org/jetbrains/idea/maven/artifactResolver/common/*')
}
}
dir("maven3") {
fileset(dir: "$home/plugins/maven/maven3-server-impl/lib") {include(name: "*.jar")}
fileset(dir: "$home/plugins/maven/maven3-server-impl/lib/maven3/lib") {include(name: "*.jar")}
fileset(dir: "$home/plugins/maven/maven3-server-impl/lib/maven3/boot")
}
dir("maven2") {
fileset(dir: "$home/lib/") { include(name: "jaxb*.jar")}
fileset(dir: "$home/plugins/maven/maven2-server-impl/lib")
}
fileset(dir: "$home/plugins/maven/lib") {exclude(name: "plexus-utils-*") }
fileset(dir: "$home/plugins/maven/maven-server-api/lib")
}
layoutPlugin("gradle") {
jar("gradle-jps-plugin.jar") {
module("gradle-jps-plugin")
}
jar("gradle-tooling-extension-api.jar") {
module("gradle-tooling-extension-api")
}
jar("gradle-tooling-extension-impl.jar") {
module("gradle-tooling-extension-impl")
}
fileset(dir: "$home/plugins/gradle/lib") { include(name: "*.jar") }
// add kryo lib
fileset(dir: "$home/lib/") {
include(name: "kryo-*.jar")
include(name: "reflectasm-*.jar")
include(name: "objenesis-*.jar")
include(name: "minlog-*.jar")
}
}
layoutPlugin("git4idea") {
jar("git4idea-rt.jar") {
module("git4idea-rt")
}
jar("remote-servers-git.jar") {
module("remote-servers-git")
}
fileset(dir: "$home/plugins/git4idea/lib") {
include(name: "trilead-ssh2.jar")
}
fileset(dir: "$home/plugins/git4idea/lib/ini4j") {
include(name: "ini4j*.jar")
exclude(name: "ini4j*sources.jar")
}
}
layoutPlugin("svn4idea") {
fileset(dir: "$home/plugins/svn4idea/lib", excludes: "**/svnkitsrc.zip")
}
layoutPlugin("junit", "junit", "idea-junit") {
jar("junit-rt.jar") {
module("junit_rt")
}
}
// ByteCodeViewer not needed in AS
// pluginDir("ByteCodeViewer") {
// dir("lib") {
// jar("byteCodeViewer.jar") {
// noResources("ByteCodeViewer")
// }
// }
// }
pluginDir("cvsIntegration") {
dir("lib") {
jar("cvs_util.jar") {noResources("cvs-core")}
jar("cvsIntegration.jar") {noResources("cvs-plugin")}
jar("javacvs-src.jar") {noResources("javacvs-src")}
jar("smartcvs-src.jar") {noResources("smartcvs-src")}
resources(["cvs-core", "cvs-plugin", "javacvs-src", "smartcvs-src"])
fileset(dir: "${home}/plugins/cvs/lib")
}
}
pluginDir("testng") {
dir("lib") {
jar("testng-plugin.jar") {
noResources("testng")
noResources("testng_rt")
}
resources("testng")
fileset(dir: "$home/plugins/testng/lib") {
include(name: "testng.jar")
}
}
}
// xpath not needed in AS
// layoutPlugin("xpath") {
// dir("rt") {
// jar("xslt-rt.jar") {module("xslt-rt")}
// }
// }
// xslt-debugger not needed in AS
// layoutPlugin("xslt-debugger") {
// jar("xslt-debugger-engine.jar") {
// module("xslt-debugger-engine") {
// excludes: "lib"
// }
// }
// fileset(dir: "$home/plugins/xslt-debugger/engine/lib") {
// include(name: "**/rmi-stubs.jar")
// }
// dir("rt") {
// jar("xslt-debugger-engine-impl.jar") {
// module("xslt-debugger-engine-impl") {
// exclude(name: "lib")
// exclude(name: "**/*.jar")
// exclude(name: "**/*.html")
// }
// }
// fileset(dir: "$home/plugins/xslt-debugger/engine/impl/lib") {
// include(name: "**/*.jar")
// exclude(name: "**/rmi-stubs.jar")
// include(name: "**/*.html")
// }
// }
// }
pluginDir("Groovy") {
dir("lib") {
jar("Groovy.jar") {
module("jetgroovy")
module("groovy-psi") {
exclude(name: "standardDsls/**")
}
module("structuralsearch-groovy")
}
//layout of groovy jars must be consistent with GroovyBuilder.getGroovyRtRoot method
jar("groovy-jps-plugin.jar") {
module("groovy-jps-plugin")
module("groovy-rt-constants")
}
jar("groovy_rt.jar") {
module("groovy_rt")
module("groovy-rt-constants")
}
dir("standardDsls") {
fileset(dir: "$home/plugins/groovy/groovy-psi/resources/standardDsls")
}
dir("agent") {
fileset(dir: "${home}/plugins/groovy/hotswap") {
include(name: "gragent.jar")
}
}
fileset(dir: "$home/plugins/groovy/groovy-psi/resources/conf")
}
}
pluginDir("tasks") {
dir("lib") {
jar("tasks-api.jar") { module("tasks-api") }
jar("jira.jar") { module("jira") }
jar("tasks-core.jar") { module("tasks-core") }
jar("jira.jar") { module("jira") }
jar("tasks-java.jar") { moduleOptional("tasks-java") }
fileset(dir: "${home}/plugins/tasks/tasks-core/lib") {
include(name: "**/*.jar")
}
}
}
// devkit not needed in AS
// layoutPlugin("devkit") {
// jar("devkit-jps-plugin.jar") {
// module("devkit-jps-plugin")
// }
// fileset(dir: "${home}/plugins/devkit/lib") {
// include(name: "**/*.jar")
// }
// }
// eclipse not needed in AS
// layoutPlugin("eclipse") {
// jar("eclipse-jps-plugin.jar") {
// module("eclipse-jps-plugin")
// }
// jar("common-eclipse-util.jar") {
// module("common-eclipse-util")
// }
// }
layoutPlugin("terminal") {
fileset(dir: "$home/plugins/terminal/lib") {
include(name: "*.jar")
include(name: "*.in")
}
}
layoutPlugin("editorconfig") {
fileset(dir: "$home/plugins/editorconfig/lib") {
include(name: "**/*.jar")
}
}
pluginDir("coverage") {
dir("lib") {
jar("coverage.jar") {
noResources("coverage-common")
noResources("coverage")
}
jar("coverage_rt.jar") {
noResources("coverage_rt")
}
jar("resources_en.jar") {
module("coverage-common") {
patternset(refid: "resources.included")
}
module("coverage") {
patternset(refid: "resources.included")
}
}
fileset(dir: "${home}/plugins/coverage-common/lib") {
exclude(name: "finder.jar")
exclude(name: "**/coverage-src.zip")
}
fileset(dir: "${home}/plugins/coverage/lib", excludes: "**/jacoco_src.zip")
}
}
layoutPlugin("java-decompiler")
}
}
def layoutGoogle() {
dir("plugins") {
layoutPlugin("google-cloud-tools") {
jar("google-cloud-tools.jar") {
module("google-cloud-tools")
}
dir("templates") {
fileset(dir: "${home}/../studio/google/cloud/tools/resources/templates")
}
dir("clientTemplates") {
fileset(dir: "${home}/../studio/google/cloud/tools/resources/clientTemplates")
}
fileset(dir: "${home}/../studio/google/cloud/tools/lib") {
include(name: "**/*.jar")
}
}
layoutPlugin("google-login") {
jar("google-login.jar") {
module("google-login")
}
fileset(dir: "${home}/../studio/google/cloud/tools/login/lib") {
include(name: "**/*.jar")
}
// Additional libraries that need to be manually copied, see how freemarker
// is copied by the Android plugin
fileset(file: "${home}/../../prebuilts/tools/common/google-api-java-client/1.8.0-rc/google-api-java-client-min-repackaged.jar")
}
}
}
private Set<String> findModuleDependencies(List<String> modules) {
Set<String> paths = new HashSet<String>();
modules.each {
m = findModule(it)
m.getDependenciesList().getDependencies().each {
projectBuilder.stage("looking at dependency " + it);
if (it instanceof JpsLibraryDependency) { // only want library dependencies (and not other modules)
lib = it.getLibrary()
if (lib != null) {
libroots = lib.getRoots(JpsOrderRootType.COMPILED) // only want compile (and not test)
libroots.each {
paths.addAll(JpsPathUtil.urlToFile(it.getUrl()).getAbsolutePath());
projectBuilder.stage("Module: " + m.getName() + ", Dependency: " + it.getUrl());
}
}
}
}
}
return paths;
}
// Obtain the absolute path to the NOTICE file corresponding to the given jar file.
// The NOTICE file is assumed to be present in the same folder as the jar file. It is an error if it is missing
private File getNoticeFileForJar(String jarPath) {
File parentFile = new File(jarPath).getParentFile()
File notice = new File(parentFile, "NOTICE")
if (!notice.exists()) {
notice = new File(parentFile, "NOTICE.txt")
}
if (!notice.exists()) {
notice = new File(parentFile, "LICENSE.txt")
}
if (!notice.exists()) {
notice = new File(parentFile, "LICENSE")
}
return notice
}
private void appendToFile(File to, File from) {
if (from.exists()) {
to.append(from.getName() + ":\n")
to.append(from.getText("UTF-8"), "UTF-8")
projectBuilder.stage("Appending NOTICE file: " + from.getAbsolutePath())
} else {
projectBuilder.stage("Skipping non-existent NOTICE file: " + from.getAbsolutePath())
}
}
def layoutPlugin(String moduleName) {
layoutPlugin(moduleName, moduleName, {})
}
def layoutPlugin(String moduleName, Closure custom) {
layoutPlugin(moduleName, moduleName, custom)
}
def layoutPlugin(String pluginName, String moduleName) {
layoutPlugin(pluginName, moduleName, {})
}
def layoutPlugin(String pluginName, String moduleName, Closure custom) {
layoutPlugin(pluginName, moduleName, pluginName, custom)
}
def layoutPlugin(String pluginName, String moduleName, String jarName) {
layoutPlugin(pluginName, moduleName, jarName, {})
}
def layoutPlugin(String pluginName, String moduleName, String jarName, Closure custom) {
if (isDefined("pluginFilter")) {
if (!pluginFilter.contains(moduleName) && !pluginFilter.contains(pluginName)) return
}
dir(pluginName) {
dir("lib") {
jar("${jarName}.jar") {
noResources(moduleName)
}
resources(moduleName)
custom()
}
}
}
def pluginDir(String dirName, Closure initializer) {
if (isDefined("pluginFilter")) {
if (!pluginFilter.contains(dirName)) return
}
dir(dirName) {
initializer()
}
}
private def resources(List<String> modules) {
jar("resources_en.jar") {
modules.each {
module(it) {
patternset(refid: "resources.included")
}
}
}
}
private def resources(String moduleName) {
jar("resources_en.jar") {
module(moduleName) {
patternset(refid: "resources.included")
}
}
}
private def noResources(String moduleName) {
module(moduleName) {
patternset(refid: "resources.excluded")
}
}
def moduleOptional(String name) {
if (isDefined("pluginFilter")) {
if (!pluginFilter.contains(name)) return
}
module(name)
}
def moduleOptional(String name, Closure init) {
if (isDefined("pluginFilter")) {
if (!pluginFilter.contains(name)) return
}
module(name, init)
}
def reorder(String home, String targetDirectory) {
if (findModule("util") != null) {
ant.java(classname: "com.intellij.util.io.zip.ReorderJarsMain", fork: "true") {
arg(value: "$home/build/order.txt")
arg(value: targetDirectory)
arg(value: targetDirectory)
arg(value: "$home/lib")
classpath {
pathelement(location: projectBuilder.moduleOutput(findModule("util")))
pathelement(location: projectBuilder.moduleOutput(findModule("util-rt")))
pathelement(location: "$home/lib/jna.jar")
pathelement(location: "$home/lib/trove4j.jar")
}
}
}
}
def layoutAndroid() {
dir("plugins") {
def androidModule = "android"
dir(androidModule) {
dir("lib") {
jar("android.jar") {
module("ui-designer-core") {
patternset(refid: "resources.excluded")
}
noResources(androidModule)
}
jar("resources_en.jar") {
module(androidModule) {
patternset(refid: "resources.included")
}
module("ui-designer-core") {
patternset(refid: "resources.included")
}
}
fileset(dir: "${home}/../adt/idea/android/lib") {
include(name: "**/*.jar")
}
jar("androidAnnotations.jar") {
fileset(dir: "${home}/../adt/idea/android/annotations")
}
// Add Additional libraries that the Android plugin depends on that come from TOOLS_PREBUILTS.
// Note: This is a HACK: rather than encoding the full path, we should really query
// the project model for the classpath just like we do for the androidModules' dependencies
// below
// Also see similar issue in Google Cloud Login plugin
fileset(file: "${home}/../../prebuilts/tools/common/m2/repository/org/freemarker/freemarker/2.3.20/freemarker-2.3.20.jar")
androidModules = [
"assetstudio",
"common",
"ddmlib",
"draw9patch",
"dvlib",
"layoutlib-api",
"lint-api",
"lint-checks",
"manifest-merger",
"ninepatch",
"perflib",
"sdk-common",
"sdklib"
]
androidModules.each { moduleName ->
jar("${moduleName}.jar") {
module(moduleName)
}
}
// copy over dependencies of all android modules
androidModuleDeps = findModuleDependencies(androidModules)
androidModuleDeps.each {
fileset(file: it)
}
// Create a single NOTICE file with the contents of all the NOTICES of the dependencies.
// I couldn't figure out the right ant commands to be able to change the name of the file
// when copying, so we'll just call it by its final name (NOTICE)
File noticeFile = new File(System.getProperty("java.io.tmpdir") + File.separator + "NOTICE")
noticeFile.deleteOnExit()
androidModuleDeps.each {
appendToFile(noticeFile, getNoticeFileForJar(it))
}
appendToFile(noticeFile, new File("${home}/../../prebuilts/tools/common/m2/repository/org/freemarker/freemarker/2.3.20/NOTICE"))
fileset(file: noticeFile.getPath())
jar("android-common.jar") {
module("android-common")
}
jar("android-rt.jar") {
module("android-rt")
}
dir("jps") {
jar("android-jps-plugin.jar") { module("android-jps-plugin") }
jar("android-gradle-jps.jar") { module("android-gradle-jps") }
}
dir("device-art-resources") {
fileset(dir: "${home}/../adt/idea/android/device-art-resources")
}
dir("templates") {
fileset(dir: "${home}/../base/templates") {
include(name: "activities/**")
include(name: "gradle/**")
include(name: "other/**")
include(name: "gradle-projects/**")
}
}
}
}
}
}
def layoutJps(String home, String targetDir, String buildNumber, Closure additionalJars) {
layout(targetDir) {
zip("standalone-jps-${buildNumber}.zip") {
jar("util.jar") {
module("annotations")
module("util-rt")
module("util")
}
jar("jps-launcher.jar") {
module("jps-launcher")
}
jar("jps-model.jar") {
module("jps-model-api")
module("jps-model-impl")
module("jps-model-serialization")
}
jar("jps-builders.jar") {
module("forms_rt")
module("forms-compiler")
module("instrumentation-util")
module("jps-builders")
module("jps-standalone-builder")
module("java-runtime")
}
jar("jps-plugin-system.jar") {
module("jps-plugin-system")
}
jar("groovy-jps-plugin.jar") {
module("groovy-jps-plugin")
module("groovy-rt-constants")
}
jar("groovy_rt.jar") {
module("groovy_rt")
}
jar("ui-designer-jps-plugin.jar") { module("ui-designer-jps-plugin") }
jar("maven-jps-plugin.jar") { module("maven-jps-plugin") }
jar("gradle-jps-plugin.jar") { module("gradle-jps-plugin") }
fileset(dir: "$home/plugins/maven/maven3-server-impl/lib/maven3/lib") {include(name: "plexus-utils-*.jar")}
jar("eclipse-jps-plugin.jar") {
module("common-eclipse-util")
module("eclipse-jps-plugin")
}
jar("devkit-jps-plugin.jar") { module("devkit-jps-plugin") }
jar("intellilang-jps-plugin.jar") { module("intellilang-jps-plugin") }
fileset(dir: "$home/lib") {
include(name: "jdom.jar")
include(name: "jna.jar")
include(name: "trove4j.jar")
include(name: "asm-all.jar")
include(name: "nanoxml-*.jar")
include(name: "protobuf-*.jar")
include(name: "cli-parser-*.jar")
include(name: "log4j.jar")
include(name: "jgoodies-forms.jar")
include(name: "ecj*.jar")
include(name: "jsr166e.jar")
}
fileset(dir: "$home/jps/lib") {
include(name: "optimizedFileManager.jar")
}
jar("ant-jps-plugin.jar") { module("ant-jps-plugin") }
additionalJars()
}
jar("jps-build-test-${buildNumber}.jar") {
moduleTests("jps-builders")
moduleTests("jps-model-tests")
moduleTests("jps-serialization-tests")
}
}
}
def layout_core(String home, String target) {
layout(target) {
jar("intellij-core.jar") {
module("util-rt")
module("util")
module("core-api")
module("core-impl")
module("boot")
module("extensions")
module("java-psi-api")
module("java-psi-impl")
}
jar("annotations.jar") {
module("annotations")
}
jar("intellij-core-analysis.jar") {
analysisApiModules.each { module it; }
analysisImplModules.each { module it; }
}
fileset(dir: "$home/lib") {
include(name: "guava-17.0.jar")
include(name: "picocontainer.jar")
include(name: "trove4j.jar")
include(name: "asm.jar")
include(name: "asm-commons.jar")
include(name: "cli-parser-1.1.jar")
include(name: "snappy-in-java-0.3.jar")
include(name: "jayatana-1.2.4.jar")
}
}
}