summaryrefslogtreecommitdiffstats
path: root/build.xml
diff options
context:
space:
mode:
Diffstat (limited to 'build.xml')
-rw-r--r--build.xml271
1 files changed, 271 insertions, 0 deletions
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..d0d73f5
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,271 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<project name="Jar Jar Links" default="jar" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
+ <property file="${user.home}/build.properties" />
+ <property file="build.properties" />
+
+ <property name="javadoc.access" value="public"/>
+
+ <property name="compile.source" value="1.5"/>
+ <property name="compile.target" value="1.5"/>
+ <property name="compile.bootclasspath" value=""/>
+ <property name="compile.extdirs" value=""/>
+
+ <property name="compile.debug" value="true"/>
+ <property name="compile.deprecation" value="false"/>
+ <property name="compile.optimize" value="false"/>
+
+ <property name="src" location="src" />
+ <property name="build" location="build" />
+ <property name="dist" location="dist" />
+
+ <!-- define Maven coordinates -->
+ <property name="groupId" value="com.googlecode.jarjar" />
+ <property name="artifactId" value="jarjar" />
+ <property name="version" value="1.4"/>
+
+ <!-- define artifacts' name, which follows the convention of Maven -->
+ <property name="maven-jar" value="${dist}/${artifactId}-${version}.jar" />
+ <property name="maven-javadoc-jar" value="${dist}/${artifactId}-${version}-javadoc.jar" />
+ <property name="maven-sources-jar" value="${dist}/${artifactId}-${version}-sources.jar" />
+
+ <!-- defined maven snapshots and staging repository id and url -->
+ <property name="maven-snapshots-repository-id" value="sonatype-nexus-snapshots" />
+ <property name="maven-snapshots-repository-url" value="https://oss.sonatype.org/content/repositories/snapshots/" />
+ <property name="maven-staging-repository-id" value="sonatype-nexus-staging" />
+ <property name="maven-staging-repository-url" value="https://oss.sonatype.org/service/local/staging/deploy/maven2/" />
+
+
+ <property name="jarfile" value="dist/jarjar-${version}.jar"/>
+ <property name="jarfile.util" value="dist/jarjar-util-${version}.jar"/>
+ <property name="jarfile.mojo" value="dist/jarjar-plugin-${version}.jar"/>
+
+ <property name="test.jar" value="build/rejar.jar"/>
+
+ <target name="init">
+ <echo>bootclasspath ${compile.bootclasspath}</echo>
+ <tstamp/>
+ <path id="path.build">
+ <fileset dir="lib" includes="**/*.jar"/>
+ </path>
+ <path id="path.run">
+ <path refid="path.build"/>
+ <pathelement path="build/main"/>
+ </path>
+ <path id="path.test">
+ <path refid="path.run"/>
+ <pathelement path="build/test"/>
+ </path>
+ </target>
+
+ <macrodef name="compile">
+ <attribute name="module"/>
+ <attribute name="refid"/>
+ <attribute name="bootclasspath" default=""/>
+ <sequential>
+ <mkdir dir="build/@{module}"/>
+ <copy todir="build/@{module}">
+ <fileset dir="src/@{module}" excludes="**/*.java"/>
+ </copy>
+ <javac includeantruntime="true" srcdir="src/@{module}" destdir="build/@{module}"
+ source="${compile.source}"
+ target="${compile.target}" bootclasspath="@{bootclasspath}" extdirs="${compile.extdirs}"
+ debug="${compile.debug}" optimize="${compile.optimize}" deprecation="${compile.deprecation}">
+ <classpath refid="@{refid}"/>
+ <compilerarg value="-Xlint"/>
+ </javac>
+ </sequential>
+ </macrodef>
+
+ <target name="compile" depends="init" description="Compile">
+ <compile module="main" refid="path.build" bootclasspath="${compile.bootclasspath}"/>
+ <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" classpathref="path.run"/>
+ </target>
+
+ <target name="compile-test" depends="compile" description="Compile tests">
+ <compile module="test" refid="path.run"/>
+ </target>
+
+ <target name="clean" description="Clean">
+ <delete dir="build"/>
+ <delete dir="dist"/>
+ <delete dir="dist/javadoc"/>
+ </target>
+
+ <target name="jar" depends="compile" description="Create Jar">
+ <mkdir dir="dist"/>
+ <jarjar jarfile="${jarfile}">
+ <fileset dir="build/main"/>
+ <zipfileset src="lib/asm-4.0.jar"/>
+ <zipfileset src="lib/asm-commons-4.0.jar">
+ <include name="org/objectweb/asm/commons/Remap*.class"/>
+ <include name="org/objectweb/asm/commons/LocalVariablesSorter.class"/>
+ </zipfileset>
+ <keep pattern="com.tonicsystems.jarjar.Main"/>
+ <keep pattern="com.tonicsystems.jarjar.JarJarTask"/>
+ <rule pattern="com.tonicsystems.jarjar.util.**" result="com.tonicsystems.jarjar.ext_util.@1"/>
+ <rule pattern="org.objectweb.asm.**" result="com.tonicsystems.jarjar.asm.@1"/>
+ <manifest>
+ <attribute name="Main-Class" value="com.tonicsystems.jarjar.Main"/>
+ <attribute name="Implementation-Version" value="${version}"/>
+ </manifest>
+ </jarjar>
+ </target>
+
+ <target name="jar-util" depends="compile" description="Create utility Jar">
+ <mkdir dir="dist"/>
+ <jar jarfile="${jarfile.util}">
+ <fileset dir="build/main" includes="com/tonicsystems/jarjar/util/**"/>
+ </jar>
+ </target>
+
+ <target name="dist" depends="jar,dist-src,javadoc" description="generate the distribution">
+ <copy file="${dist}/jarjar-src-${version}.zip" tofile="${maven-sources-jar}" />
+ <jar jarfile="${maven-javadoc-jar}">
+ <fileset dir="${dist}/javadoc" />
+ </jar>
+ </target>
+
+ <!-- before this, update project version (both build.xml and pom.xml) from SNAPSHOT to RELEASE -->
+ <target name="stage" depends="dist" description="deploy release version to Maven staging repository">
+ <!-- sign and deploy the main artifact -->
+ <artifact:mvn>
+ <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.3:sign-and-deploy-file" />
+ <arg value="-Durl=${maven-staging-repository-url}" />
+ <arg value="-DrepositoryId=${maven-staging-repository-id}" />
+ <arg value="-DpomFile=pom.xml" />
+ <arg value="-Dfile=${maven-jar}" />
+ <arg value="-Pgpg" />
+ </artifact:mvn>
+
+ <!-- sign and deploy the sources artifact -->
+ <artifact:mvn>
+ <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.3:sign-and-deploy-file" />
+ <arg value="-Durl=${maven-staging-repository-url}" />
+ <arg value="-DrepositoryId=${maven-staging-repository-id}" />
+ <arg value="-DpomFile=pom.xml" />
+ <arg value="-Dfile=${maven-sources-jar}" />
+ <arg value="-Dclassifier=sources" />
+ <arg value="-Pgpg" />
+ </artifact:mvn>
+
+ <!-- sign and deploy the javadoc artifact -->
+ <artifact:mvn>
+ <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.3:sign-and-deploy-file" />
+ <arg value="-Durl=${maven-staging-repository-url}" />
+ <arg value="-DrepositoryId=${maven-staging-repository-id}" />
+ <arg value="-DpomFile=pom.xml" />
+ <arg value="-Dfile=${maven-javadoc-jar}" />
+ <arg value="-Dclassifier=javadoc" />
+ <arg value="-Pgpg" />
+ </artifact:mvn>
+ </target>
+
+ <target name="dist-src" depends="compile" description="Create source distribution">
+ <mkdir dir="${dist}"/>
+ <zip destfile="${dist}/jarjar-src-${version}.zip">
+ <zipfileset dir="src" excludes="**/*.save" prefix="jarjar-${version}/src"/>
+ <zipfileset dir="lib" prefix="jarjar-${version}/lib"/>
+ <zipfileset dir="maven" prefix="jarjar-${version}/maven"/>
+ <zipfileset dir="." includes="build.xml,COPYING" prefix="jarjar-${version}"/>
+ </zip>
+ </target>
+
+ <target name="mojo" depends="jar" description="Create Maven plugin">
+ <mkdir dir="dist"/>
+ <copy todir="dist/maven">
+ <fileset dir="maven"/>
+ <filterset>
+ <filter token="VERSION" value="${version}"/>
+ </filterset>
+ </copy>
+ <jar jarfile="${jarfile.mojo}">
+ <zipfileset src="${jarfile}"/>
+ <zipfileset dir="dist/maven" prefix="META-INF/maven" includes="plugin.xml"/>
+ <zipfileset
+ dir="dist/maven"
+ prefix="META-INF/maven/com.tonicsystems.jarjar/jarjar-plugin"
+ includes="pom.xml,pom.properties"/>
+ </jar>
+ </target>
+
+ <target name="test" depends="junit,test-rejar,test-manifest,test-enum" description="Run tests"/>
+
+ <target name="junit" depends="compile-test">
+ <junit haltonfailure="on">
+ <!-- <jvmarg value="-Xint"/> -->
+ <!-- <jvmarg value="-Xprof"/> -->
+ <!-- <jvmarg value="-server"/> -->
+ <formatter type="plain" usefile="false"/>
+ <classpath refid="path.test"/>
+ <batchtest>
+ <fileset dir="src/test" includes="**/*Test.java"/>
+ </batchtest>
+ </junit>
+ </target>
+
+ <target name="test-rejar" depends="jar">
+ <taskdef name="jarjar2" classname="com.tonicsystems.jarjar.JarJarTask" classpath="${jarfile}"/>
+ <delete file="${test.jar}"/>
+ <jarjar2 jarfile="${test.jar}">
+ <fileset dir="build/main"/>
+ <zipfileset src="lib/asm-4.0.jar"/>
+ <zipfileset src="lib/asm-commons-4.0.jar"/>
+ <rule pattern="org.objectweb.asm.**" result="com.tonicsystems.jarjar.asm.@1"/>
+ </jarjar2>
+ <delete file="${test.jar}"/>
+ </target>
+
+ <target name="test-enum" depends="compile">
+ <delete file="build/enumtest.jar"/>
+ <jarjar jarfile="build/enumtest.jar" verbose="true">
+ <zipfileset src="src/test/enumtest.jar"/>
+ <rule pattern="foo.**" result="bar.@1"/>
+ </jarjar>
+ <java classpath="build/enumtest.jar" classname="bar.EnumTest"/>
+ <!-- TODO: check output -->
+ <!-- <delete file="build/enumtest.jar"/> -->
+ </target>
+
+ <target name="test-manifest" depends="compile">
+ <delete>
+ <fileset dir="build" includes="manifest*.jar"/>
+ </delete>
+ <jar jarfile="build/manifest1.jar">
+ <manifest>
+ <attribute name="Built-By" value="Chris"/>
+ <attribute name="Specification-Title" value="Example"/>
+ </manifest>
+ </jar>
+ <jar jarfile="build/manifest2.jar">
+ <manifest>
+ <attribute name="Built-By" value="CJN"/>
+ <attribute name="Implementation-Title" value="common"/>
+ </manifest>
+ </jar>
+ <jar jarfile="build/manifest3.jar" filesetmanifest="merge">
+ <zipfileset src="build/manifest1.jar"/>
+ <zipfileset src="build/manifest2.jar"/>
+ </jar>
+ <jarjar jarfile="build/manifest4.jar" filesetmanifest="merge">
+ <zipfileset src="build/manifest1.jar"/>
+ <zipfileset src="build/manifest2.jar"/>
+ </jarjar>
+ <!-- TODO: check manifest contents here -->
+ </target>
+
+ <!-- TODO: reference ant javadocs -->
+ <target name="javadoc" depends="compile" description="Generate the javadoc">
+ <mkdir dir="dist/javadoc"/>
+ <javadoc
+ sourcepath="${src}/main"
+ destdir="${dist}/javadoc"
+ access="${javadoc.access}"
+ failonerror="true"
+ packagenames="com.tonicsystems.jarjar.*"
+ classpathref="path.run"
+ Author="true"
+ Version="true"
+ Use="true"
+ />
+ </target>
+</project>