build scripts: fix building updater-full.jar

Move code which build updater-full.jar to groovy scripts to automatically compute all dependencies, also get rid of jarjar task which isn't necessary here (see discussion at https://github.com/JetBrains/intellij-community/pull/703).
This commit is contained in:
nik
2018-01-25 17:15:55 +03:00
parent c11ebe3042
commit 3e08d113e6
5 changed files with 39 additions and 12 deletions
+5 -12
View File
@@ -28,12 +28,14 @@
<macrodef name="call_gant">
<attribute name="script" />
<attribute name="target" default="default"/>
<sequential>
<java failonerror="true" jar="${project.home}/lib/ant/lib/ant-launcher.jar" fork="true">
<jvmarg line="-Xmx812m -XX:MaxPermSize=152m"/>
<sysproperty key="jna.nosys" value="true" />
<sysproperty key="java.awt.headless" value="true"/>
<sysproperty key="gant.script" value="@{script}"/>
<sysproperty key="gant.target" value="@{target}"/>
<syspropertyset refid="intellij.build.properties"/>
<arg value="-f"/>
<arg value="${project.home}/build/gant.xml"/>
@@ -49,17 +51,8 @@
<call_gant script="${project.home}/build/scripts/tests_in_community.gant"/>
</target>
<!-- The build task creates an updater.jar in ${out.dir}. This task bundles the updater and its dependencies into a single jar -->
<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" classpath="${project.home}/build/lib/jarjar-1.0.jar"/>
<target name="fullupdater" depends="build">
<condition property="out.dir" value="${intellij.build.output.root}" else="${project.home}/out">
<isset property="intellij.build.output.root"/>
</condition>
<jarjar jarfile="${out.dir}/updater-full.jar">
<zipfileset src="${out.dir}/updater.jar" />
<zipfileset src="lib/log4j.jar" />
<zipfileset src="lib/jna.jar" />
<zipfileset src="lib/jna-platform.jar" />
</jarjar>
<!-- Creates an updater-full.jar in ${intellij.build.output.root}/artifacts, it includes 'intellij.platform.updater' module with all its dependencies -->
<target name="fullupdater" depends="init">
<call_gant script="${project.home}/build/scripts/idea_community.gant" target="updater-full"/>
</target>
</project>
@@ -32,6 +32,12 @@ class IdeaCommunityBuilder {
BuildTasks.create(buildContext).compileProjectAndTests(["intellij.platform.jps.build"])
}
void buildFullUpdater() {
def tasks = BuildTasks.create(buildContext)
tasks.compileModules(["updater"])
tasks.buildFullUpdaterJar()
}
void buildIntelliJCore() {
def builder = new IntelliJCoreArtifactsBuilder(buildContext)
builder.compileModules()
+5
View File
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.jetbrains.intellij.build.BuildOptions
import org.jetbrains.intellij.build.IdeaCommunityBuilder
import org.jetbrains.jps.idea.IdeaProjectLoader
@@ -23,6 +24,10 @@ target(compile: "Compile project") {
new IdeaCommunityBuilder(home).compileModules()
}
target('updater-full': 'Build updater-full.jar which includes IDE updater with its dependencies') {
new IdeaCommunityBuilder(home).buildFullUpdater()
}
target('default': 'The default target') {
def options = new BuildOptions()
options.buildNumber = null //we cannot provide consistent build number for IDEA Community if it's built separately so use *.SNAPSHOT number to avoid confusion
@@ -50,6 +50,11 @@ abstract class BuildTasks {
abstract void buildUpdaterJar()
/**
* Builds updater-full.jar artifact which includes 'intellij.platform.updater' module with all its dependencies
*/
abstract void buildFullUpdaterJar()
abstract void buildUnpackedDistribution(String targetDirectory)
static BuildTasks create(BuildContext context) {
@@ -7,6 +7,7 @@ import org.jetbrains.intellij.build.*
import org.jetbrains.jps.model.artifact.JpsArtifactService
import org.jetbrains.jps.model.java.JavaResourceRootType
import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.jps.model.java.JpsJavaExtensionService
import org.jetbrains.jps.model.library.JpsOrderRootType
import org.jetbrains.jps.model.module.JpsModule
@@ -547,6 +548,23 @@ idea.fatal.error.notification=disabled
}
}
@Override
void buildFullUpdaterJar() {
String updaterModule = "intellij.platform.updater"
def libraryFiles = JpsJavaExtensionService.dependencies(buildContext.findRequiredModule(updaterModule)).productionOnly().runtimeOnly().libraries.collectMany {
it.getFiles(JpsOrderRootType.COMPILED)
}
buildContext.messages.info("Files: $libraryFiles")
new LayoutBuilder(buildContext, false).layout(buildContext.paths.artifacts) {
jar("updater-full.jar") {
module(updaterModule)
libraryFiles.each { file ->
ant.zipfileset(src: file.absolutePath)
}
}
}
}
@Override
void buildUnpackedDistribution(String targetDirectory) {
buildContext.paths.distAll = targetDirectory