1 import org.jetbrains.jps.Module
2 import static org.jetbrains.jps.idea.IdeaProjectLoader.*
4 includeTargets << new File("${guessHome(this)}/build/scripts/utils.gant")
6 target('default' : "Developers update") {
10 def module(String name) {
11 ant.module(name: name)
15 def module(String name, Closure init) {
16 ant.module(name: name, init)
20 private def markUsed(String name) {
21 def module = project.modules[name]
22 // Can be null in "Developers update" since we are not actually loading modules.xml
28 private List platformImplementationModules() {
42 private List<String> platformApiModules() {
43 return ["platform-api", "lvcs-api", "lang-api", "vcs-api", "usageView", "xdebugger-api", "xml-openapi"]
46 def layoutFull(String targetDirectory) {
47 project.stage("layout to $targetDirectory")
49 //noinspection GroovyAssignabilityCheck
50 List<String> openapiModules = [platformApiModules(),
51 "openapi", "testFramework-java", "debugger-openapi", "compiler-openapi", "dom-openapi", "execution-openapi",
52 "jsp-openapi"/*, "jam-support-openapi",
53 "jam-support-openspi"*/].flatten()
55 //noinspection GroovyAssignabilityCheck
56 List<String> implementationModules = [platformImplementationModules(),
67 ant.patternset(id: "resources.included") {
68 include(name: "**/*.properties")
69 include(name: "fileTemplates/**/*")
70 include(name: "inspectionDescriptions/**/*")
71 include(name: "intentionDescriptions/**/*")
72 include(name: "tips/**/*")
75 ant.patternset(id: "resources.excluded") {
76 exclude(name: "**/*.properties")
77 exclude(name: "fileTemplates/**/*")
78 exclude(name: "fileTemplates")
79 exclude(name: "inspectionDescriptions/**/*")
80 exclude(name: "inspectionDescriptions")
81 exclude(name: "intentionDescriptions/**/*")
82 exclude(name: "intentionDescriptions")
83 exclude(name: "tips/**/*")
87 layout(targetDirectory) {
89 jar("util.jar") { module("util") }
90 jar("idea-jsp-openapi.jar") { module("jsp-base-openapi") }
93 openapiModules.each { module it}
96 jar("annotations.jar") { module("annotations")}
97 jar("extensions.jar") { module("extensions")}
100 implementationModules.each { module it}
103 jar("bootstrap.jar") { module("bootstrap")}
104 jar("resources.jar") {
106 module("platform-resources")
107 module("community-resources")
110 jar("idea_rt.jar") { module("java-runtime")}
112 jar("forms_rt.jar") {
114 module("forms-compiler")
117 jar("resources_en.jar") {
118 module("resources-en")
119 module("platform-resources-en")
122 jar("icons.jar") { module("icons") }
123 jar("boot.jar") { module("boot") }
127 module("forms-compiler")
132 fileset(dir: "$home/lib") {
133 include(name: "*.jar")
136 fileset(dir: "$home/lib/src") {
137 include(name: "trove4j_changes.txt")
138 include(name: "trove4j_src.jar")
142 fileset(dir: "$home/lib/ant") {
143 exclude(name: "**/src/**")
149 def simplePlugins = ["commander", "copyright", "properties", "java-i18n"]
155 layoutPlugin("ant", "ant", "antIntegration")
156 // layoutPlugin("InspectionGadgets", "InspectionGadgetsPlugin")
157 // layoutPlugin("IntelliLang", "IntelliLangJava")
158 // layoutPlugin("IntentionPowerPack", "IntentionPowerPackPlugin")
159 // layoutPlugin("ToString", "generate-tostring", "toString")
161 layoutPlugin("SpellChecker", "spellchecker", "spellchecker-core") {
162 fileset(dir: "$home/plugins/spellchecker/lib")
166 //layoutPlugin("maven") {
167 // fileset(dir: "$home/svnPlugins/maven/lib")
171 //layoutPlugin("git4idea") {
172 // fileset(dir: "$home/svnPlugins/git4idea/lib", excludes: "**/trilead-ssh2-src.zip")
175 //layoutPlugin("svn4idea") {
176 // fileset(dir: "$home/svnPlugins/svn4idea/lib", excludes: "**/svnkitsrc.zip")
182 // jar("junit-rt.jar") {
183 // module("junit_rt")
185 // jar("idea-junit.jar") {
186 // noResources("junit")
188 // resources("junit")
193 dir("cvsIntegration") {
195 jar("cvs_util.jar") {noResources("cvs-core")}
196 jar("cvsIntegration.jar") {noResources("cvs-plugin")}
197 jar("javacvs-src.jar") {noResources("javacvs-src")}
198 jar("smartcvs-src.jar") {noResources("smartcvs-src")}
200 resources(["cvs-core", "cvs-plugin", "javacvs-src", "smartcvs-src"])
202 fileset(dir: "${home}/plugins/cvs/lib")
209 jar("uiDesigner.jar") {
210 noResources("ui-designer")
212 resources("ui-designer")
218 // jar("testng.jar") {
219 // noResources("testng")
220 // noResources("testng_rt")
223 // resources("testng")
225 // fileset(dir: "$home/svnPlugins/testng/lib") {
226 // include(name: "testng-jdk15.jar")
230 // dir("lib-jdk14") {
231 // fileset(dir: "$home/svnPlugins/testng/lib") {
232 // include(name: "testng-jdk14.jar")
240 // jar("Groovy.jar") {
241 // module("jetgroovy") {
242 // exclude(name: "standardDsls/**")
246 // jar("groovy_rt.jar") {module("groovy-rt")}
247 // dir("standardDsls") {
248 // fileset(dir: "$home/svnPlugins/groovy/resources/standardDsls")
251 // fileset(dir: "$home/svnPlugins/groovy/resources/conf")
259 //reorder(targetDirectory)
262 def printUnusedModules() {
263 project.modules.values().each {Module m ->
264 if (m["used"] == null && hasSourceRoots(m)) {
265 project.warning("Module ${m.getName()} is not used in project layout")
270 boolean hasSourceRoots(Module module) {
271 !module.sourceRoots.isEmpty()
274 def layoutPlugin(String moduleName) {
275 layoutPlugin(moduleName, moduleName, {})
278 def layoutPlugin(String moduleName, Closure custom) {
279 layoutPlugin(moduleName, moduleName, custom)
282 def layoutPlugin(String pluginName, String moduleName) {
283 layoutPlugin(pluginName, moduleName, {})
286 def layoutPlugin(String pluginName, String moduleName, Closure custom) {
287 layoutPlugin(pluginName, moduleName, pluginName, custom)
290 def layoutPlugin(String pluginName, String moduleName, String jarName) {
291 layoutPlugin(pluginName, moduleName, jarName, {})
294 def layoutPlugin(String pluginName, String moduleName, String jarName, Closure custom) {
297 jar("${jarName}.jar") {
298 noResources(moduleName)
301 resources(moduleName)
307 private def resources(List<String> modules) {
308 jar("resources_en.jar") {
311 patternset(refid: "resources.included")
317 private def resources(String moduleName) {
318 jar("resources_en.jar") {
320 patternset(refid: "resources.included")
325 private def noResources(String moduleName) {
327 patternset(refid: "resources.excluded")
331 def reorder(String targetDirectory) {
332 if (isDefined("util")) {
333 ant.java(classname: "com.intellij.util.io.zip.ReorderJarsMain", fork: "true") {
334 arg(value: "$home/build/order.txt")
335 arg(value: targetDirectory)
336 arg(value: targetDirectory)
337 arg(value: "$home/lib")
339 pathelement(location: util.output)