def utilJarProjects = [':platform:util',':platform:util-rt'] def jpsModelJarProjects = [':jps:model-api',':jps:model-impl',':jps:model-serialization'] def extensionsJarProjects = [':platform:extensions'] def platformApiProjects = [":platform:analysis-api", ":platform:core-api", ":platform:editor-ui-api", ":platform:indexing-api", ":platform:lang-api", ":platform:platform-api", ":platform:projectModel-api", ":xml:xml-psi-api"] def platformImplProjects =[":platform:core-impl"] def intellijCoreProjects = [":java:java-psi-impl",":java:java-psi-api",":platform:core-impl",":platform:core-api",":platform:util-rt",":platform:util",":platform:extensions"] apply plugin: 'base' subprojects { apply plugin: 'java' } task utilJar(type: Jar,dependsOn: utilJarProjects.collect{ it+":jar"}) { baseName = 'util' from files(utilJarProjects.collect{ project(it).sourceSets.main.output }) destinationDir=new File('dist/') } task jpsModelJar(type: Jar,dependsOn: jpsModelJarProjects.collect{ it+":jar"}) { baseName = 'jps-model' from files(jpsModelJarProjects.collect{ project(it).sourceSets.main.output }) destinationDir=new File('dist/') } task extensionsJar(type: Jar,dependsOn: extensionsJarProjects.collect{ it+":jar"}) { baseName = 'jps-model' from files(extensionsJarProjects.collect{ project(it).sourceSets.main.output }) destinationDir=new File('dist/') } task platformApiJar(type: Jar,dependsOn: platformApiProjects.collect{ it+":jar"}) { baseName = 'platform-api' from files(platformApiProjects.collect{ project(it).sourceSets.main.output }) destinationDir=new File('dist/') } task platformImplJar(type: Jar,dependsOn: platformImplProjects.collect{ it+":jar"}) { baseName = 'platform-impl' from files(platformImplProjects.collect{ project(it).sourceSets.main.output }) destinationDir=new File('dist/') } task IntellijCoreJar(type: Jar,dependsOn: intellijCoreProjects.collect{ it+":jar"}) { baseName = 'intellij-core' from files(intellijCoreProjects.collect{ project(it).sourceSets.main.output }) destinationDir=new File('dist/') } task dist(dependsOn: [utilJar,jpsModelJar,extensionsJar,platformApiJar,platformImplJar,IntellijCoreJar]){ println("Build Completed, Fat jars in dist/") } clean { subprojects.each { it.afterEvaluate { def cleanTask = it.tasks.findByName('clean') if (cleanTask) { dependsOn(cleanTask) } } } delete 'dist' }