| <?xml version="1.0" encoding="UTF-8"?> |
| <project name="robolectric" default="test"> |
| |
| <!-- The build.properties file can be created by you and is never touched |
| by the 'android' tool. This is the place to change some of the default property values |
| used by the Ant rules. |
| Here are some properties you may want to change/update: |
| |
| application.package |
| the name of your application package as defined in the manifest. Used by the |
| 'uninstall' rule. |
| source.dir |
| the name of the source directory. Default is 'src'. |
| out.dir |
| the name of the output directory. Default is 'bin'. |
| |
| Properties related to the SDK location or the project target should be updated |
| using the 'android' tool with the 'update' action. |
| |
| This file is an integral part of the build system for your application and |
| should be checked in in Version Control Systems. |
| |
| --> |
| <property file="build.properties"/> |
| |
| <!-- The default.properties file is created and updated by the 'android' tool, as well |
| as ADT. |
| This file is an integral part of the build system for your application and |
| should be checked in in Version Control Systems. --> |
| <property file="default.properties"/> |
| |
| <condition property="isWindows"> <os family="windows" /> </condition> |
| |
| <target name="findAndroidWindows" if="isWindows"> |
| <echo message="Finding the Android version in windows"/> |
| <exec executable="./find-android.bat"/> |
| </target> |
| <target name="findAndroidUnix" unless="isWindows"> |
| <echo message="Finding the Android version in *nix"/> |
| <exec executable="./find-android.sh"/> |
| </target> |
| <property file="local.properties"/> |
| |
| <!-- Custom Android task to deal with the project target, and import the proper rules. |
| This requires ant 1.6.0 or above. --> |
| <path id="android.antlibs"> |
| <pathelement path="${sdk.dir}/tools/lib/anttasks.jar"/> |
| <pathelement path="${sdk.dir}/tools/lib/sdklib.jar"/> |
| <pathelement path="${sdk.dir}/tools/lib/androidprefs.jar"/> |
| <pathelement path="${sdk.dir}/tools/lib/apkbuilder.jar"/> |
| <pathelement path="${sdk.dir}/tools/lib/jarutils.jar"/> |
| </path> |
| |
| <path id="android.target.classpath"> |
| <pathelement path="${sdk.dir}/platforms/android-16/android.jar"/> |
| <pathelement path="${sdk.dir}/add-ons/addon_google_apis_google_inc_16/libs/maps.jar"/> |
| <pathelement path="${sdk.dir}/add-ons/addon-google_apis-google_inc_-16/libs/maps.jar"/> |
| <pathelement path="${sdk.dir}/add-ons/addon-google_apis-google-16/libs/maps.jar"/> |
| <pathelement path="${sdk.dir}/extras/android/support/v4/android-support-v4.jar"/> |
| <pathelement path="${sdk.dir}/android-compatibility/v4/android-support-v4.jar"/> |
| </path> |
| |
| <property name="main.absolute.dir" location="${main.dir}"/> |
| <property name="out.main.dir" value="${out.absolute.dir}/mainClasses"/> |
| <property name="out.main.absolute.dir" value="${out.main.dir}"/> |
| <property name="main.external.libs.dir" value="lib/main"/> |
| <property name="main.external.libs.absolute.dir" location="${main.external.libs.dir}"/> |
| |
| <property name="test.absolute.dir" location="${test.dir}"/> |
| <property name="out.test.dir" value="${out.absolute.dir}/testClasses"/> |
| <property name="out.test.absolute.dir" value="${out.test.dir}"/> |
| <property name="test.external.libs.dir" value="lib/test"/> |
| <property name="test.external.libs.absolute.dir" location="${test.external.libs.dir}"/> |
| |
| <property name="publish.dir" location="${out.absolute.dir}/publish"/> |
| |
| <property name="pages.dir" value="pages"/> |
| <property name="downloads.dir" value="${pages.dir}/downloads"/> |
| <property name="javadoc.out.dir" value="${pages.dir}/javadoc"/> |
| |
| <property name="base.package" value="com.xtremelabs.robolectric"/> |
| |
| <property environment="env"/> |
| <condition property="build.number" value="${env.BUILD_NUMBER}" else="unknown"> |
| <isset property="env.BUILD_NUMBER"/> |
| </condition> |
| |
| <target name="compile" |
| description="compile module source" |
| depends="findAndroidUnix, findAndroidWindows"> |
| <mkdir dir="${out.main.absolute.dir}"/> |
| |
| <javac encoding="ascii" source="1.6" target="1.6" debug="true" extdirs="" |
| destdir="${out.main.absolute.dir}" |
| verbose="${verbose}" |
| classpath="${extensible.classpath}" |
| includeantruntime="false"> |
| <src path="${main.absolute.dir}"/> |
| <classpath> |
| <pathelement path="${out.main.absolute.dir}"/> |
| <path refid="android.target.classpath"/> |
| <fileset dir="${main.external.libs.absolute.dir}" includes="*.jar"/> |
| </classpath> |
| </javac> |
| </target> |
| |
| <target name="jar" description="create the robolectric jar" depends="compile"> |
| <mkdir dir="${target.dir}"/> |
| <jar destfile="${target.dir}/robolectric.jar"> |
| <fileset dir="${out.main.absolute.dir}" includes="**/*.class"/> |
| </jar> |
| </target> |
| |
| <target name="jar-all" description="create the robolectric jar including all dependencies" depends="jar"> |
| <mkdir dir="${target.dir}/staging"/> |
| <unjar dest="${target.dir}/staging" > |
| <fileset dir="${main.external.libs.absolute.dir}" > |
| <exclude name="*src.jar" /> |
| <exclude name="junit*.jar" /> |
| <exclude name="hamcrest*.jar" /> |
| </fileset> |
| </unjar> |
| <unjar dest="${target.dir}/staging" src="${target.dir}/robolectric.jar"/> |
| <jar destfile="${target.dir}/robolectric-all.jar" basedir="${target.dir}/staging"/> |
| <delete dir="${target.dir}/staging"/> |
| </target> |
| |
| <target name="source-jar" description="create a jar file that includes all of the source code"> |
| <mkdir dir="${target.dir}"/> |
| <jar destfile="${target.dir}/robolectric-src.jar" basedir="${main.absolute.dir}"/> |
| </target> |
| |
| <target name="compile.tests" depends="compile" |
| description="compile module source; test classes" unless="skip.tests"> |
| <mkdir dir="${out.test.absolute.dir}"/> |
| |
| <javac encoding="ascii" source="1.6" target="1.6" debug="true" extdirs="" |
| destdir="${out.test.absolute.dir}" |
| verbose="${verbose}" |
| classpath="${extensible.classpath}" |
| includeantruntime="false"> |
| <src path="${test.absolute.dir}"/> |
| <classpath> |
| <pathelement path="${out.main.absolute.dir}"/> |
| <pathelement path="${out.test.absolute.dir}"/> |
| <path refid="android.target.classpath"/> |
| <fileset dir="${main.external.libs.absolute.dir}" includes="*.jar"/> |
| <fileset dir="${test.external.libs.absolute.dir}" includes="*.jar"/> |
| </classpath> |
| </javac> |
| </target> |
| |
| <target name="clean" description="cleanup module"> |
| <delete dir="${out.absolute.dir}"/> |
| <delete dir="${out.test.absolute.dir}"/> |
| <delete dir="${tmp.dir}"/> |
| <delete dir="${target.dir}"/> |
| </target> |
| |
| <target name="test" depends="compile.tests" description="test all"> |
| <mkdir dir="${basedir}/out/reports/tests"/> |
| <junit showoutput="true" failureproperty="junit.failure"> |
| <formatter type="plain" usefile="false" if="junit.console.out"/> |
| <formatter type="plain"/> |
| <formatter type="xml"/> |
| <batchtest todir="${basedir}/out/reports/tests"> |
| <fileset dir="${test.absolute.dir}"> |
| <include name="**/*Test.java"/> |
| </fileset> |
| </batchtest> |
| <classpath> |
| <pathelement path="${out.main.absolute.dir}"/> |
| <pathelement path="${out.test.absolute.dir}"/> |
| <fileset dir="${main.external.libs.dir}" includes="*.jar"/> |
| <fileset dir="${test.external.libs.dir}" includes="*.jar"/> |
| <path refid="android.target.classpath"/> |
| </classpath> |
| </junit> |
| <fail if="junit.failure" message="Unit test(s) failed. See reports!"/> |
| </target> |
| |
| <target name="check-for-pages-dir-setup"> |
| <condition property="pages.dir.exists"> |
| <available file="${pages.dir}" type="dir"/> |
| </condition> |
| </target> |
| |
| <target name="check-for-pages-dir" depends="check-for-pages-dir-setup" unless="pages.dir.exists"> |
| <echo message="do you need a 'pages' symlink?"/> |
| </target> |
| |
| <target name="snapshot" description="update most recent version of robolectric as jars" depends="clean, test, jar-all, source-jar, check-for-pages-dir" if="pages.dir.exists"> |
| <copy todir="${downloads.dir}"> |
| <fileset dir="${target.dir}" includes="robolectric*.jar"/> |
| </copy> |
| <exec executable="./update-downloads.rb"/> |
| </target> |
| |
| <target name="gen-javadoc" description="generate javadoc for the public API" depends="check-for-pages-dir" if="pages.dir.exists"> |
| <mkdir dir="${javadoc.out.dir}" /> |
| <javadoc |
| packagenames="${base.package}.*" |
| access="protected" |
| defaultexcludes="yes" |
| windowtitle="Robolectric API" |
| sourcepath="${main.absolute.dir}" |
| overview="${main.absolute.dir}/overview.html" |
| destdir="${javadoc.out.dir}"> |
| <classpath> |
| <pathelement path="${out.main.absolute.dir}"/> |
| <path refid="android.target.classpath"/> |
| <fileset dir="${main.external.libs.absolute.dir}" includes="*.jar"/> |
| </classpath> |
| <doctitle><![CDATA[<h1>Robolectric<br/>API Documentation</h1>]]></doctitle> |
| </javadoc> |
| </target> |
| |
| <target name="maven-install-jars" description="Install the jar files that Maven can't find for itself"> |
| <exec executable="mvn"> |
| <arg line="install:install-file -DgroupId=com.google.android.maps -DartifactId=maps -Dversion=10_r2 -Dpackaging=jar -Dfile=${sdk.dir}/add-ons/addon_google_apis_google_inc_10/libs/maps.jar" /> |
| </exec> |
| <exec executable="mvn"> |
| <arg line="install:install-file -DgroupId=com.google.android.maps -DartifactId=maps -Dversion=10_r2 -Dpackaging=jar -Dfile=${sdk.dir}/add-ons/addon-google_apis-google_inc_-10/libs/maps.jar" /> |
| </exec> |
| <exec executable="mvn"> |
| <arg line="install:install-file -DgroupId=com.google.android.maps -DartifactId=maps -Dversion=10_r2 -Dpackaging=jar -Dfile=${sdk.dir}/add-ons/addon-google_apis-google-10/libs/maps.jar" /> |
| </exec> |
| </target> |
| |
| <!-- used by travis-ci --> |
| <target name="prepare-travis-ci" description="Prepare for travis ci build"> |
| <mkdir dir="tmp"/> |
| <get src="http://dl.google.com/android/android-sdk_r20.0.3-linux.tgz" dest="tmp" skipexisting="true"/> |
| <untar src="tmp/android-sdk_r20.0.3-linux.tgz" compression="gzip" dest="tmp/sdk"/> |
| <echo file="tmp/install-sdk">#!/bin/sh -e |
| ANDROID="tmp/sdk/android-sdk-linux/tools/android" |
| chmod +x $ANDROID |
| SDKS=$($ANDROID list sdk --all | awk \ |
| '/SDK Platform.* API 10/ || /Google APIs, Android API 10, revision 2/ \ |
| { s=s "," int($1) } \ |
| END { print substr(s, 2, length(s)) }' \ |
| ) |
| $ANDROID update sdk --no-ui --all --filter $SDKS |
| </echo> |
| <chmod file="tmp/install-sdk" perm="u+x"/> |
| <exec executable="tmp/install-sdk"/> |
| <propertyfile file="local.properties"> |
| <entry key="sdk.dir" value="${basedir}/tmp/sdk/android-sdk-linux/"/> |
| </propertyfile> |
| <exec executable="mvn"> |
| <arg line="install:install-file -DgroupId=com.google.android.maps -DartifactId=maps -Dversion=10_r2 -Dpackaging=jar -Dfile=tmp/sdk/android-sdk-linux/add-ons/addon-google_apis-google-10/libs/maps.jar"/> |
| </exec> |
| </target> |
| </project> |