2 This build script compiles IntelliJ IDEA. Options include:
3 -Dout=/path/to/out/dir, defaults to ${basedir}/out
4 -Dbuild=123, defaults to SNAPSHOT
5 -Dtestpatterns=com.foo.*, defaults to empty string
6 -Dproduct=foo, defaults to idea
8 <project name="IntelliJ IDEA Community Edition" default="all">
9 <property name="project.home" value="${basedir}"/>
11 <condition property="out.dir" value="${out}" else="${project.home}/out">
12 <isset property="out" />
15 <condition property="build.number" value="${build}" else="SNAPSHOT">
16 <isset property="build" />
19 <condition property="test.patterns" value="${testpatterns}"
20 else="org.jetbrains.android.*;com.android.tools.idea.*;com.google.gct.*;com.intellij.android.*">
21 <isset property="testpatterns" />
24 <condition property="product.name" value="${product}" else="idea">
25 <isset property="product" />
28 <property name="tmp.dir" value="${out.dir}/tmp"/>
30 <target name="cleanup">
31 <delete dir="${out.dir}" failonerror="false"/>
35 <mkdir dir="${out.dir}"/>
36 <mkdir dir="${tmp.dir}"/>
37 <ant dir="build" antfile="download_kotlin.xml"/>
40 <macrodef name="call_gant">
41 <attribute name="script" />
43 <java failonerror="true" jar="${project.home}/lib/ant/lib/ant-launcher.jar" fork="true">
44 <jvmarg line="-Xmx612m -XX:MaxPermSize=152m"/>
45 <jvmarg value="-Djna.nosys=true" />
46 <jvmarg value="-Dout=${out.dir}" />
47 <jvmarg value="-DbuildNumber=${build.number}" />
48 <jvmarg value="-Didea.test.patterns=${test.patterns}" />
49 <jvmarg value="-Dproduct=${product.name}" />
50 <sysproperty key="java.awt.headless" value="true"/>
51 <arg line=""-Dgant.script=@{script}""/>
52 <arg line=""-Dteamcity.build.tempDir=${tmp.dir}""/>
53 <arg line=""-Didea.test.group=ALL_EXCLUDE_DEFINED""/>
55 <arg value="${project.home}/build/gant.xml"/>
60 <target name="build" depends="init">
61 <call_gant script="${project.home}/build/scripts/dist.gant"/>
64 <target name="test" depends="init">
65 <call_gant script="${project.home}/build/scripts/tests.gant"/>
68 <!-- The build task creates an updater.jar in ${out.dir}. This task bundles the updater and its dependencies into a single jar -->
69 <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" classpath="${project.home}/build/lib/jarjar-1.0.jar"/>
70 <target name="fullupdater" depends="build">
71 <jarjar jarfile="${out.dir}/updater-full.jar">
72 <zipfileset src="${out.dir}/updater.jar" />
73 <zipfileset src="lib/log4j.jar" />
74 <zipfileset src="lib/jna.jar" />
75 <zipfileset src="lib/jna-utils.jar" />
79 <target name="all" depends="cleanup,build"/>