Skip to content

Instantly share code, notes, and snippets.

@ayush
Created May 23, 2011 11:53
Show Gist options
  • Save ayush/986591 to your computer and use it in GitHub Desktop.
Save ayush/986591 to your computer and use it in GitHub Desktop.
Scala, Ivy, Ant and ScalaTest: a simple library project build file
<?xml version="1.0"?>
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="mylib" default="publish" basedir=".">
<property name="revision" value="0.1"/>
<property name="sources.dir" value="src/main/java"/>
<property name="docs.dir" value="docs"/>
<property name="core.lib.dir" value="lib/core"/>
<property name="base.build.dir" value="build"/>
<property name="build.dir" value="build/core-classes"/>
<property name="distrib.dir" value="build/distrib"/>
<property name="test.lib.dir" value="lib/test"/>
<property name="test.sources.dir" value="src/test/java"/>
<property name="test.build.dir" value="build/test-classes"/>
<property name="scala.lib.dir" value="lib/scala-lang"/>
<target name="init">
<path id="build.classpath">
<pathelement location="${build.dir}"/>
<fileset dir="${core.lib.dir}">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${scala.lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<path id="test.build.classpath">
<pathelement location="${build.dir}"/>
<pathelement location="${test.build.dir}"/>
<fileset dir="${test.lib.dir}">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${scala.lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<taskdef resource="scala/tools/ant/antlib.xml">
<classpath>
<fileset dir="${scala.lib.dir}">
<include name="**/*.jar"/>
</fileset>
</classpath>
</taskdef>
<taskdef name="scalatest" classname="org.scalatest.tools.ScalaTestAntTask">
<classpath refid="test.build.classpath"/>
</taskdef>
</target>
<target name="build" depends="resolve, init">
<mkdir dir="${build.dir}"/>
<mkdir dir="${distrib.dir}"/>
<scalac srcdir="${sources.dir}"
destdir="${build.dir}"
classpathref="build.classpath">
<include name="**/*.scala"/>
</scalac>
<jar destfile="${distrib.dir}/${ant.project.name}.jar">
<fileset dir="${build.dir}">
<include name="**/*.class"/>
</fileset>
</jar>
</target>
<target name="docs" depends="init">
<mkdir dir="${docs.dir}"/>
<scaladoc
srcdir="${sources.dir}"
destdir="${docs.dir}"
deprecation="yes" unchecked="yes"
doctitle="My 0.1 library"
classpathref="build.classpath">
<include name="**/*.scala"/>
</scaladoc>
</target>
<target name="publish" depends="clean, test"
description="--> compile test and publish this project in the local ivy repository">
<property name="revision" value="${revision}"/>
<ivy:publish artifactspattern="${distrib.dir}/[artifact].[ext]"
resolver="local"
pubrevision="${revision}"
status="release"
overwrite="true"/>
<echo message="project ${ant.project.name} released with version ${revision}"/>
</target>
<target name="resolve" description="--> retrieve dependencies with ivy">
<ivy:retrieve pattern="${ivy.lib.dir}/[conf]/[artifact]-[revision].[ext]" type="jar"/>
</target>
<target name="clean">
<delete dir="${base.build.dir}"/>
<delete dir="${docs.dir}"/>
</target>
<target name="test" depends="build">
<mkdir dir="${test.build.dir}"/>
<scalac srcdir="${test.sources.dir}"
destdir="${test.build.dir}"
classpathref="test.build.classpath">
<include name="**/*.scala"/>
</scalac>
<scalatest>
<runpath>
<pathelement location="${build.dir}"/>
<pathelement location="${test.build.dir}"/>
<fileset dir="${test.lib.dir}">
<include name="**/*.jar"/>
</fileset>
</runpath>
<wildcard package="com.glug.mylib"/>
</scalatest>
</target>
</project>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment