From 523b2946a5ad6564fbad65cca1ea81d8d26bb7a1 Mon Sep 17 00:00:00 2001 From: nik Date: Tue, 16 Apr 2019 12:57:59 +0300 Subject: [PATCH] build scripts: publish modules which required to build IntelliJ IDEA from sources as Maven artifacts (IDEA-194151) Newly introduced 'intellij.tools.jps.buildScriptDependencies' module contains all dependencies which are required to invoke build scripts for IntelliJ-based IDEs. The build scripts was updated to support generation of Maven artifacts from modules without sources. antlayout.jar was rebuilt from sources to include changes in JarContainer. --- .idea/modules.xml | 1 + .../build/IdeaCommunityProperties.groovy | 1 + build/lib/jps/antlayout.jar | Bin 21679 -> 21474 bytes jps/antLayout/intellij.tools.jps.antTasks.iml | 5 ++--- .../antlayout/datatypes/JarContainer.java | 4 ++++ .../intellij.tools.jps.build.standalone.iml | 2 +- .../build/impl/MavenArtifactsBuilder.groovy | 15 ++++++++++----- ...llij.tools.jps.buildScriptDependencies.iml | 15 +++++++++++++++ 8 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 platform/build-scripts/intellij.tools.jps.buildScriptDependencies.iml diff --git a/.idea/modules.xml b/.idea/modules.xml index ae599362c22c..aa7251843c6f 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -687,6 +687,7 @@ + diff --git a/build/groovy/org/jetbrains/intellij/build/IdeaCommunityProperties.groovy b/build/groovy/org/jetbrains/intellij/build/IdeaCommunityProperties.groovy index b19fc90de331..ef2699e9d11f 100644 --- a/build/groovy/org/jetbrains/intellij/build/IdeaCommunityProperties.groovy +++ b/build/groovy/org/jetbrains/intellij/build/IdeaCommunityProperties.groovy @@ -37,6 +37,7 @@ class IdeaCommunityProperties extends BaseIdeaProperties { productLayout.classesLoadingOrderFilePath = "$home/build/order.txt" mavenArtifacts.forIdeModules = true + mavenArtifacts.additionalModules = ["intellij.tools.jps.buildScriptDependencies"] versionCheckerConfig = CE_CLASS_VERSIONS } diff --git a/build/lib/jps/antlayout.jar b/build/lib/jps/antlayout.jar index 56a2d9c0e64682540eebdba9984c98b0f9106e71..9bd055ccd6f6a74f6ba3a33b31a11f5982cb44f2 100644 GIT binary patch delta 2629 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 XeS)>rFmNpaKpXyPDgr>2t90}a%~;4# delta 2978 zcmZ`)2|QG58$WYqj6Ind(=fKmma!XqmWt14#@Jd&WR#m_EHM-xP3kLr-MGFZEhf?^b{R#s9#ruSw;`+mQ=~fB+qw>LRH-u(2wR+<| z^^?_k!ofD15Yw>zd)OQEGc;Bv=P{G1V-#iHVi2IbCtXr1&_kCW4huryM-;0J07wCV z&Q?9hOHvyxdM8R6V|oJ^j!=oD3D}5Jx!H=?#@#egQ7i8Op+fDT3b}Q$_5A zOY;g_70vMc_B$ugk#0%66Lf{_UTRx?S+lT|e@rma-j@_0Lt5<;D<8GVH?(Y6Sg)*c zL(W8<(-X15R%>AE%ubFl`r1P*`W`=X^w~bEgqR&0-kzO0tZ;AAsr7~B;KAbk{pEzl z>VtdrXJ`y=qW}HYfvzzHN0eyyIW{pL?!h}B0Ds>76-jN#i7G?>UcVh);`K9xOx>1= zFi@YTLRAc98jFS@RiS1)6!J0W5Q;%Q%B^XOODdYBphyB4&=BKL7D)y&@x)e1uarj? zs>)SDB@mq;5@QiM=U@!gdE>aJH%9v4HzFeU*oi;5Q}L=g-P0cf zjh{EB*gxrPLqAI{%uBn`^RTT3TW>y9=hRU!E@+TXZ69npS6& zbmG4uV)_$3?(QQkl-+tX$aU_XUY}di^0B%Sd~BGexydPRjZ#X)gEAxGhI8{rE!!C` zI|s7gBtMO(j;qbmwuFr2luX~MI*n^H-6nB`xyD|H9c$j3P+>p^gMIp_M{Gs}E<=*a zx|2lG${5R8{oj_Tmelq?*^O}ux}+G&?>6L@G-_5UpWlqZ2ENw}Tfr4B=U*&J)u0tr z2%Lw{5hH)0ZdN<eugoPt4+D4+xv|F3c!P^70YXjXJ z`OEKYMu%?;@M)DzW?65GRd|?Wv|}vO*5(3*r)Q!pK_F6E-J`<;9`a*b7H-P057yRn|QN(yf`CLpp(Fh2quK!ADcu4<5uA( zSuN)i+D;z7U7JDvkdu}Y8x}go2zNbIev=h1n11x8^h&&CNZb$mO>#lXFzScTj zW5sp@5A|CLw=T;CZ$v)=OFg$}#j~hGcjH@1vPKe&-(7ejlfT){{&9a+>&H{44=glm zzLO2MYdp~$$eTQq%mrWTN~&GIRjs>KwZV?vb^~qHAMiflx-&0nDq1+Gac8xQtK~FU zc-eW_;fC#A7p{I+sq4+4KIJ5Jht%wOwUmyf13ar^%%+*HW6a|j3q_Qjw81E2UjUbBjdDex{4K!pDql87UJJ3{85z0i0HYsGDP!Q^v$INs54DV1U%TR?=gV_fP6Fnn2UjfHNSwB zAd<&obUz+(@!eIdK)`k0MCiGP6k^$__~IrbI2AA8R9K5y*3*T-%ON^dS+o@d?AUir zCkqCjlm-A(F>oyf2Ah8acE)i``0(atu-nN9rL`Yp4 z3vF>vbD~7c_G~^%q4zi`=K&CUqq-!8sjiHml6lbWDzU*(ih$mVyKo0k3 d82OjzcR6IwP$Wpe$pip3_}&DUcO6~y_kY!L?U(=n diff --git a/jps/antLayout/intellij.tools.jps.antTasks.iml b/jps/antLayout/intellij.tools.jps.antTasks.iml index 11a70982363f..3c5ffcbcfae8 100644 --- a/jps/antLayout/intellij.tools.jps.antTasks.iml +++ b/jps/antLayout/intellij.tools.jps.antTasks.iml @@ -7,7 +7,6 @@ - + - - + \ No newline at end of file diff --git a/jps/antLayout/src/jetbrains/antlayout/datatypes/JarContainer.java b/jps/antLayout/src/jetbrains/antlayout/datatypes/JarContainer.java index c9bf8bef7388..8f50b5724637 100644 --- a/jps/antLayout/src/jetbrains/antlayout/datatypes/JarContainer.java +++ b/jps/antLayout/src/jetbrains/antlayout/datatypes/JarContainer.java @@ -56,6 +56,10 @@ public class JarContainer extends ZipContainer { ((Jar) task).setFilesetmanifest(config); } + public void setWhenmanifestonly(Zip.WhenEmpty we) { + ((Jar)task).setWhenmanifestonly(we); + } + public void addConfiguredManifest(Manifest newManifest) throws ManifestException { ((Jar) task).addConfiguredManifest(newManifest); } diff --git a/jps/standalone-builder/intellij.tools.jps.build.standalone.iml b/jps/standalone-builder/intellij.tools.jps.build.standalone.iml index 9e85120cc6cf..bd9dfde44b24 100644 --- a/jps/standalone-builder/intellij.tools.jps.build.standalone.iml +++ b/jps/standalone-builder/intellij.tools.jps.build.standalone.iml @@ -11,7 +11,7 @@ - + diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/MavenArtifactsBuilder.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/MavenArtifactsBuilder.groovy index ed802fcacc09..0f6466f8083b 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/MavenArtifactsBuilder.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/MavenArtifactsBuilder.groovy @@ -64,15 +64,20 @@ class MavenArtifactsBuilder { modulesToPublish.each { aModule, artifactData -> dir(artifactData.coordinates.directoryPath) { ant.fileset(file: pomXmlFiles[aModule]) - jar(artifactData.coordinates.getFileName("", "jar")) { - module(aModule.name) + def javaSourceRoots = aModule.getSourceRoots(JavaSourceRootType.SOURCE).toList() + def javaResourceRoots = aModule.getSourceRoots(JavaResourceRootType.RESOURCE).toList() + def hasSources = !(javaSourceRoots.isEmpty() && javaResourceRoots.isEmpty()) + ant.jar(name: artifactData.coordinates.getFileName("", "jar"), duplicate: "fail", whenmanifestonly: "create") { + if (hasSources) { + module(aModule.name) + } } - if (publishSourcesFilter.test(aModule, buildContext)) { + if (publishSourcesFilter.test(aModule, buildContext) && hasSources) { zip(artifactData.coordinates.getFileName("sources", "jar")) { - aModule.getSourceRoots(JavaSourceRootType.SOURCE).each { root -> + javaSourceRoots.each { root -> ant.zipfileset(dir: root.file.absolutePath, prefix: root.properties.packagePrefix.replace('.', '/')) } - aModule.getSourceRoots(JavaResourceRootType.RESOURCE).each { root -> + javaResourceRoots.each { root -> ant.zipfileset(dir: root.file.absolutePath, prefix: root.properties.relativeOutputPath) } } diff --git a/platform/build-scripts/intellij.tools.jps.buildScriptDependencies.iml b/platform/build-scripts/intellij.tools.jps.buildScriptDependencies.iml new file mode 100644 index 000000000000..f4b6b06ddf4e --- /dev/null +++ b/platform/build-scripts/intellij.tools.jps.buildScriptDependencies.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file