254 lines
12 KiB
XML
254 lines
12 KiB
XML
<?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>
|