don't create variables with wildcard type
[fedora-idea.git] / build / scripts / layouts.gant
blob9683c8be3b88f11fb2e389c3476bcc301b63b44a
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") {
7   layoutFull(deploy)
10 def module(String name) {
11   ant.module(name: name)
12   markUsed(name)
15 def module(String name, Closure init) {
16   ant.module(name: name, init)
17   markUsed(name)
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
23   if (module != null) {
24     module["used"] = true
25   }
28 private List platformImplementationModules() {
29   return [
30           "platform-impl",
31           "vcs-impl",
32           "lang-impl",
33           "testRunner",
34           "smRunner",
35           "xdebugger-impl",
36           "testFramework",
37           "xml",
38           "lvcs-impl",
39   ]
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(),
57           "notNull",
58           "platform-main",
59           "java-impl",
60           "compiler-impl",
61           "debugger-impl",
62           "dom-impl",
63           "execution-impl",
64           "jsp-spi",
65           "idea-ui"].flatten()
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/**/*")
73   }
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/**/*")
84     exclude(name: "tips")
85   }
87   layout(targetDirectory) {
88     dir("lib") {
89       jar("util.jar") { module("util") }
90       jar("idea-jsp-openapi.jar") { module("jsp-base-openapi") }
92       jar("openapi.jar") {
93         openapiModules.each { module it}
94       }
96       jar("annotations.jar") { module("annotations")}
97       jar("extensions.jar") { module("extensions")}
99       jar("idea.jar") {
100         implementationModules.each { module it}
101       }
103       jar("bootstrap.jar") { module("bootstrap")}
104       jar("resources.jar") {
105         module("resources")
106         module("platform-resources")
107         module("community-resources")
108       }
110       jar("idea_rt.jar") { module("java-runtime")}
112       jar("forms_rt.jar") {
113         module("forms_rt")
114         module("forms-compiler")
115       }
117       jar("resources_en.jar") {
118         module("resources-en")
119         module("platform-resources-en")
120       }
122       jar("icons.jar") { module("icons") }
123       jar("boot.jar") { module("boot") }
125       jar("javac2.jar") {
126         module("javac2")
127         module("forms-compiler")
128         module("forms_rt")
129         module("notNull")
130       }
132       fileset(dir: "$home/lib") {
133         include(name: "*.jar")
134       }
136       fileset(dir: "$home/lib/src") {
137         include(name: "trove4j_changes.txt")
138         include(name: "trove4j_src.jar")
139       }
141       dir("ant") {
142         fileset(dir: "$home/lib/ant") {
143           exclude(name: "**/src/**")
144         }
145       }
146     }
148     dir("plugins") {
149       def simplePlugins = ["commander", "copyright", "properties", "java-i18n"]
151       simplePlugins.each {
152         layoutPlugin it
153       }
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")
163       }
166       //layoutPlugin("maven") {
167       //  fileset(dir: "$home/svnPlugins/maven/lib")
168       //}
171       //layoutPlugin("git4idea") {
172       //  fileset(dir: "$home/svnPlugins/git4idea/lib", excludes: "**/trilead-ssh2-src.zip")
173       //}
175       //layoutPlugin("svn4idea") {
176       //  fileset(dir: "$home/svnPlugins/svn4idea/lib", excludes: "**/svnkitsrc.zip")
177       //}
180       //dir("junit") {
181       //  dir("lib") {
182       //    jar("junit-rt.jar") {
183       //      module("junit_rt")
184       //    }
185       //    jar("idea-junit.jar") {
186       //      noResources("junit")
187       //    }
188       //    resources("junit")
189       //  }
190       //}
193       dir("cvsIntegration") {
194         dir("lib") {
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")
203         }
204       }
207       dir("uiDesigner") {
208         dir("lib") {
209           jar("uiDesigner.jar") {
210             noResources("ui-designer")
211           }
212           resources("ui-designer")
213         }
214       }
216       //dir("testng") {
217       //  dir("lib") {
218       //    jar("testng.jar") {
219       //      noResources("testng")
220       //      noResources("testng_rt")
221       //    }
222       //
223       //    resources("testng")
224       //
225       //    fileset(dir: "$home/svnPlugins/testng/lib") {
226       //      include(name: "testng-jdk15.jar")
227       //    }
228       //  }
229       //
230       //  dir("lib-jdk14") {
231       //    fileset(dir: "$home/svnPlugins/testng/lib") {
232       //      include(name: "testng-jdk14.jar")
233       //    }
234       //  }
235       //}
238       //dir("Groovy") {
239       //  dir("lib") {
240       //    jar("Groovy.jar") {
241       //      module("jetgroovy") {
242       //        exclude(name: "standardDsls/**")
243       //      }
244       //    }
245       //
246       //    jar("groovy_rt.jar") {module("groovy-rt")}
247       //    dir("standardDsls") {
248       //      fileset(dir: "$home/svnPlugins/groovy/resources/standardDsls")
249       //    }
250       //
251       //    fileset(dir: "$home/svnPlugins/groovy/resources/conf")
252       //  }
253       //}
254     }
255   }
257   printUnusedModules()
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")
266     }
267   }
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) {
295   dir(pluginName) {
296     dir("lib") {
297       jar("${jarName}.jar") {
298         noResources(moduleName)
299       }
301       resources(moduleName)
302       custom()
303     }
304   }
307 private def resources(List<String> modules) {
308   jar("resources_en.jar") {
309     modules.each {
310       module(it) {
311         patternset(refid: "resources.included")
312       }
313     }
314   }
317 private def resources(String moduleName) {
318   jar("resources_en.jar") {
319     module(moduleName) {
320       patternset(refid: "resources.included")
321     }
322   }
325 private def noResources(String moduleName) {
326   module(moduleName) {
327     patternset(refid: "resources.excluded")
328   }
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")
338       classpath {
339         pathelement(location: util.output)
340       }
341     }
342   }