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.
This commit is contained in:
nik
2019-04-16 13:08:11 +03:00
parent a4df78acf6
commit 523b2946a5
8 changed files with 34 additions and 9 deletions
+1
View File
@@ -687,6 +687,7 @@
<module fileurl="file://$PROJECT_DIR$/tools/index-tools/intellij.tools.index.iml" filepath="$PROJECT_DIR$/tools/index-tools/intellij.tools.index.iml" />
<module fileurl="file://$PROJECT_DIR$/jps/antLayout/intellij.tools.jps.antTasks.iml" filepath="$PROJECT_DIR$/jps/antLayout/intellij.tools.jps.antTasks.iml" />
<module fileurl="file://$PROJECT_DIR$/jps/standalone-builder/intellij.tools.jps.build.standalone.iml" filepath="$PROJECT_DIR$/jps/standalone-builder/intellij.tools.jps.build.standalone.iml" />
<module fileurl="file://$PROJECT_DIR$/platform/build-scripts/intellij.tools.jps.buildScriptDependencies.iml" filepath="$PROJECT_DIR$/platform/build-scripts/intellij.tools.jps.buildScriptDependencies.iml" />
<module fileurl="file://$PROJECT_DIR$/platform/testFramework/bootstrap/intellij.tools.testsBootstrap.iml" filepath="$PROJECT_DIR$/platform/testFramework/bootstrap/intellij.tools.testsBootstrap.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/ui-designer-core/intellij.uiDesigner.iml" filepath="$PROJECT_DIR$/plugins/ui-designer-core/intellij.uiDesigner.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/changeReminder/intellij.vcs.changeReminder.iml" filepath="$PROJECT_DIR$/plugins/changeReminder/intellij.vcs.changeReminder.iml" />
@@ -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
}
Binary file not shown.
@@ -7,7 +7,6 @@
</content>
<orderEntry type="jdk" jdkName="IDEA jdk" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Ant" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Ant" level="project" />
</component>
</module>
</module>
@@ -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);
}
@@ -11,7 +11,7 @@
<orderEntry type="module" module-name="intellij.platform.jps.build" exported="" />
<orderEntry type="module" module-name="intellij.platform.jps.model" />
<orderEntry type="library" name="cli-parser" level="project" />
<orderEntry type="library" name="Ant" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Ant" level="project" />
<orderEntry type="module" module-name="intellij.platform.jps.model.serialization" exported="" />
<orderEntry type="library" scope="PROVIDED" name="gant-groovy" level="project" />
<orderEntry type="library" name="Log4J" level="project" />
@@ -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)
}
}
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="intellij.tools.jps.build.standalone" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.groovy.jps" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.groovy.rt" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.guiForms.jps" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.tools.jps.antTasks" scope="RUNTIME" />
<orderEntry type="library" scope="RUNTIME" name="gant-groovy" level="project" />
<orderEntry type="library" scope="RUNTIME" name="gson" level="project" />
</component>
</module>