1<?xml version="1.0"?>
2
3<project name="common">
4
5  <property file="build.properties"/>
6
7  <!-- can be overridden at the command line with -Dversion=
8       or in IDEA, in the ant properties dialog -->
9  <property name="version" value="snapshot"/>
10  <property name="api.version" value="1.4"/>
11
12  <target name="compile" description="Compile Java source.">
13    <mkdir dir="${build.dir}/classes"/>
14    <javac srcdir="${src.dir}"
15         debug="on"
16         destdir="${build.dir}/classes"
17         source="1.6" target="1.6" includeantruntime="false">
18      <compilerarg value="-Xlint:all,-serial"/>
19      <classpath refid="compile.classpath"/>
20    </javac>
21    <copy toDir="${build.dir}/classes">
22      <fileset dir="${src.dir}" excludes="**/*.java"/>
23    </copy>
24  </target>
25
26  <target name="manifest" description="Generate OSGi manifest." depends="compile">
27    <dirname property="common.basedir" file="${ant.file.common}"/>
28    <taskdef resource="aQute/bnd/ant/taskdef.properties"
29      classpath="${common.basedir}/lib/build/bnd-0.0.384.jar"/>
30
31    <fail unless="module" message="Missing 'module' property (use the primary package name in this jar)"/>
32    <property name="imports" value=""/>
33
34    <property name="Bundle-Name" value="${ant.project.name}"/>
35    <property name="Bundle-SymbolicName" value="${module}"/>
36    <property name="Bundle-Version" value="${replace;${version};^[^0-9];0.0.0.$0}"/>
37
38    <property name="Bundle-Description" value="Guice is a lightweight dependency injection framework for Java 6 and above"/>
39    <property name="Bundle-DocURL" value="https://github.com/google/guice"/>
40    <property name="Bundle-Copyright" value="Copyright (C) 2006 Google Inc."/>
41    <property name="Bundle-License" value="http://www.apache.org/licenses/LICENSE-2.0.txt"/>
42    <property name="Bundle-RequiredExecutionEnvironment" value="JavaSE-1.6"/>
43    <property name="Bundle-Vendor" value="Google, Inc."/>
44
45    <property name="Export-Package" value="!${module}.internal.*,${module}.*;version=${api.version}"/>
46
47    <condition property="Eclipse-ExtensibleAPI" value="true">
48      <equals arg1="${module}" arg2="com.google.inject"/>
49    </condition>
50
51    <condition property="Import-Package" value="!com.google.inject.*,*" else="!${module}.*,${imports},*">
52      <istrue value="${fragment}"/>
53    </condition>
54
55    <condition property="Fragment-Host" value="com.google.inject">
56      <istrue value="${fragment}"/>
57    </condition>
58
59    <property name="-nouses" value="true"/>
60
61    <property name="-removeheaders" value="Bnd-LastModified,Ignore-Package,Include-Resource,Private-Package,Tool"/>
62
63    <bndwrap jars="${build.dir}/classes" output="${build.dir}"/>
64
65    <unjar src="${build.dir}/classes.bar" dest="${build.dir}">
66      <patternset>
67        <include name="META-INF/MANIFEST.MF"/>
68      </patternset>
69    </unjar>
70  </target>
71
72  <target name="test.compile"
73      depends="compile"
74      description="Compile test source.">
75    <mkdir dir="${build.dir}/test"/>
76    <javac srcdir="${test.dir}"
77         debug="on"
78         destdir="${build.dir}/test"
79         source="1.6" target="1.6" includeantruntime="false">
80      <classpath path="${build.dir}/classes"/>
81      <classpath path="${build.dir}/test"/>
82      <classpath refid="compile.classpath"/>
83    </javac>
84    <copy toDir="${build.dir}/test">
85      <fileset dir="${test.dir}" excludes="**/*.java"/>
86    </copy>
87  </target>
88
89  <target name="test"
90      depends="test.compile"
91      description="Execute JUnit tests.">
92    <java fork="true"
93        classname="junit.textui.TestRunner"
94        failonerror="true"
95        taskname="junit">
96      <classpath>
97        <pathelement location="${build.dir}/test"/>
98        <pathelement location="${build.dir}/classes"/>
99        <path refid="compile.classpath"/>
100      </classpath>
101      <arg value="${test.class}"/>
102    </java>
103  </target>
104
105  <target name="clean"
106      description="Remove generated files.">
107    <delete dir="${build.dir}"/>
108  </target>
109
110  <target name="source.jar"
111      description="Create a .jar file with sources">
112    <mkdir dir="${build.dir}"/>
113    <zip destfile="${build.dir}/${ant.project.name}-${version}-src.jar">
114      <fileset dir="${src.dir}"/>
115    </zip>
116  </target>
117
118  <target name="distjars"
119      depends="source.jar, jar"
120      description="Build jar files"/>
121
122  <target name="test.withdeps" depends="test.compile"
123      description="Build a jar of tests with internal.util refocused.">
124    <mkdir dir="${build.dir}/dist"/>
125    <dirname property="common.basedir" file="${ant.file.common}"/>
126    <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"
127        classpath="${common.basedir}/lib/build/jarjar-1.1.jar"/>
128    <jarjar jarfile="${build.dir}/${ant.project.name}-${version}-tests.jar">
129      <fileset dir="${build.dir}/test"/>
130      <rule pattern="net.sf.cglib.*" result="com.google.inject.internal.cglib.$@1"/>
131      <rule pattern="net.sf.cglib.**.*" result="com.google.inject.internal.cglib.@1.$@2"/>
132      <rule pattern="org.objectweb.asm.*" result="com.google.inject.internal.asm.$@1"/>
133      <rule pattern="org.objectweb.asm.**.*" result="com.google.inject.internal.asm.@1.$@2"/>
134      <keep pattern="com.google.inject.**"/>
135      <keep pattern="com.googlecode.**"/>
136    </jarjar>
137  </target>
138
139  <target name="jar.withdeps" depends="compile"
140      description="Build jar with dependencies embedded.">
141    <mkdir dir="${build.dir}/dist"/>
142    <dirname property="common.basedir" file="${ant.file.common}"/>
143    <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"
144        classpath="${common.basedir}/lib/build/jarjar-1.1.jar"/>
145    <jarjar jarfile="${build.dir}/${ant.project.name}-with-deps.jar">
146      <fileset dir="${build.dir}/classes"/>
147      <zipfileset src="${common.basedir}/lib/build/cglib-3.1.jar"/>
148      <zipfileset src="${common.basedir}/lib/build/asm-5.0.3.jar"/>
149      <rule pattern="net.sf.cglib.*" result="com.google.inject.internal.cglib.$@1"/>
150      <rule pattern="net.sf.cglib.**.*" result="com.google.inject.internal.cglib.@1.$@2"/>
151      <rule pattern="org.objectweb.asm.*" result="com.google.inject.internal.asm.$@1"/>
152      <rule pattern="org.objectweb.asm.**.*" result="com.google.inject.internal.asm.@1.$@2"/>
153      <keep pattern="com.google.inject.**"/>
154    </jarjar>
155  </target>
156</project>
157