1<?xml version="1.0"?> 2 3<project name="guice" default="compile"> 4 <!-- common definitions are stored in common.xml. --> 5 <import file="common.xml"/> 6 7 <path id="compile.classpath"> 8 <fileset dir="${lib.dir}" includes="*.jar"/> 9 <fileset dir="${lib.dir}/build" includes="*.jar"/> 10 </path> 11 12 <path id="javadoc.classpath"> 13 <path refid="compile.classpath"/> 14 <fileset dir="extensions"> 15 <include name="*/lib/*.jar"/> 16 </fileset> 17 <pathelement location="${build.dir}/classes"/> 18 </path> 19 20 21 <target name="jar" depends="jar.withdeps, manifest" description="Build jar."> 22 <jar jarfile="${build.dir}/dist/guice-${version}.jar" 23 manifest="${build.dir}/META-INF/MANIFEST.MF"> 24 <zipfileset src="${build.dir}/${ant.project.name}-with-deps.jar"/> 25 </jar> 26 </target> 27 28 <target name="dist" depends="distjars, javadoc" 29 description="Build entire distribution."> 30 <ant antfile="extensions/servlet/build.xml" target="distjars" inheritAll="false"/> 31 <ant antfile="extensions/spring/build.xml" target="distjars" inheritAll="false"/> 32 <ant antfile="extensions/struts2/build.xml" target="distjars" inheritAll="false"/> 33 <ant antfile="extensions/assistedinject/build.xml" target="distjars" inheritAll="false"/> 34 <ant antfile="extensions/jmx/build.xml" target="distjars" inheritAll="false"/> 35 <ant antfile="extensions/jndi/build.xml" target="distjars" inheritAll="false"/> 36 <ant antfile="extensions/throwingproviders/build.xml" target="distjars" inheritAll="false"/> 37 <ant antfile="extensions/multibindings/build.xml" target="distjars" inheritAll="false"/> 38 <ant antfile="extensions/dagger-adapter/build.xml" target="distjars" inheritAll="false"/> 39 <ant antfile="extensions/persist/build.xml" target="distjars" inheritAll="false"/> 40 <ant antfile="extensions/grapher/build.xml" target="distjars" inheritAll="false"/> 41 <ant antfile="extensions/testlib/build.xml" target="distjars" inheritAll="false"/> 42 43 <copy toDir="${build.dir}/dist"> 44 <fileset dir="extensions/servlet/build" includes="*.jar"/> 45 </copy> 46 <copy toDir="${build.dir}/dist"> 47 <fileset dir="extensions/spring/build" includes="*.jar"/> 48 </copy> 49 <copy toDir="${build.dir}/dist"> 50 <fileset dir="extensions/struts2/build" includes="*.jar"/> 51 </copy> 52 <copy toDir="${build.dir}/dist"> 53 <fileset dir="extensions/assistedinject/build" includes="*.jar"/> 54 </copy> 55 <copy toDir="${build.dir}/dist"> 56 <fileset dir="extensions/jmx/build" includes="*.jar"/> 57 </copy> 58 <copy toDir="${build.dir}/dist"> 59 <fileset dir="extensions/jndi/build" includes="*.jar"/> 60 </copy> 61 <copy toDir="${build.dir}/dist"> 62 <fileset dir="extensions/throwingproviders/build" includes="*.jar"/> 63 </copy> 64 <copy toDir="${build.dir}/dist"> 65 <fileset dir="extensions/multibindings/build" includes="*.jar"/> 66 </copy> 67 <copy toDir="${build.dir}/dist"> 68 <fileset dir="extensions/dagger-adapter/build" includes="*.jar"/> 69 </copy> 70 <copy toDir="${build.dir}/dist"> 71 <fileset dir="extensions/persist/build" includes="*.jar"/> 72 </copy> 73 <copy toDir="${build.dir}/dist"> 74 <fileset dir="extensions/grapher/build" includes="*.jar"/> 75 </copy> 76 <copy toDir="${build.dir}/dist"> 77 <fileset dir="extensions/testlib/build" includes="*.jar"/> 78 </copy> 79 80 <copy toDir="${build.dir}/dist" file="COPYING"/> 81 <copy toDir="${build.dir}/dist"> 82 <fileset dir="${lib.dir}" 83 includes="*.jar"/> 84 </copy> 85 <copy toDir="${build.dir}/dist"> 86 <fileset dir="${build.dir}" includes="javadoc/**/*"/> 87 </copy> 88 89 <zip destfile="${build.dir}/guice-${version}.zip"> 90 <zipfileset dir="${build.dir}/dist" prefix="guice-${version}" excludes="*-src.jar"/> 91 </zip> 92 <zip destfile="${build.dir}/guice-${version}-src.zip"> 93 <zipfileset dir="." prefix="guice-${version}-src" 94 excludes="build/**,**/.svn/**,classes/**,.settings/**,bin/**,latest-api-diffs/**,latest-javadoc/**,.classpath,.project"/> 95 </zip> 96 </target> 97 98 <target name="test.dist" 99 description="Execute JUnit tests against distribution jar."> 100 <antcall target="test.dist.run"> 101 <param name="jvmarg-value" value="-Dguice_include_stack_traces="/> 102 </antcall> 103 <antcall target="test.dist.run"> 104 <param name="jvmarg-value" value="-Dguice_include_stack_traces=OFF"/> 105 </antcall> 106 <antcall target="test.dist.run"> 107 <param name="jvmarg-value" value="-Dguice_include_stack_traces=COMPLETE"/> 108 </antcall> 109 </target> 110 111 <target name="test.dist.run" 112 depends="jar, test.withdeps" 113 description="Execute JUnit tests against distribution jar with the given jvmarg."> 114 <java fork="true" 115 classname="junit.textui.TestRunner" 116 failonerror="true" 117 taskname="junit"> 118 <classpath> 119 <pathelement location="${build.dir}/guice-${version}-tests.jar"/> 120 <pathelement location="${build.dir}/dist/guice-${version}.jar"/> 121 <pathelement location="lib/javax.inject.jar"/> 122 <pathelement location="lib/aopalliance.jar"/> 123 <pathelement location="lib/guava-16.0.1.jar"/> 124 <pathelement location="lib/build/guava-testlib-16.0.1.jar"/> 125 <pathelement location="lib/build/junit.jar"/> 126 <pathelement location="lib/build/servlet-api-2.5.jar"/> 127 <pathelement location="lib/build/easymock.jar"/> 128 <pathelement location="lib/build/javax.inject-tck.jar"/> 129 <pathelement location="lib/build/bnd-0.0.384.jar"/> 130 <pathelement location="lib/build/felix-2.0.5.jar"/> 131 </classpath> 132 <arg value="com.google.inject.AllTests"/> 133 <jvmarg value="${jvmarg-value}"/> 134 <syspropertyset> 135 <propertyref name="version"/> 136 <propertyref name="build.dir"/> 137 <propertyref name="lib.dir"/> 138 </syspropertyset> 139 </java> 140 </target> 141 142 <property name="old.api" value="3.0"/> 143 <property name="new.api" value="latest"/> 144 <target name="jdiff" depends="compile"> 145 <property name="jdiff.home" value="lib/build/jdiff"/> 146 <property name="jdiff.tmp" value="build/docs/latest-api-diffs"/> 147 <delete dir="${jdiff.tmp}"/> 148 <mkdir dir="${jdiff.tmp}"/> 149 150 <!-- Generate API for current version. --> 151 <javadoc packagenames="com.google.*" 152 docletpath="${jdiff.home}/jdiff.jar${path.separator}${jdiff.home}/xerces.jar" 153 maxmemory="1024M" 154 classpathref="javadoc.classpath"> 155 <fileset dir="${src.dir}" defaultexcludes="yes"> 156 <include name="com/google/**"/> 157 <exclude name="com/google/inject/internal/**"/> 158 </fileset> 159 <fileset dir="${servlet.src.dir}"/> 160 <fileset dir="${spring.src.dir}"/> 161 <fileset dir="${assistedinject.src.dir}"/> 162 <fileset dir="${jmx.src.dir}"/> 163 <fileset dir="${jndi.src.dir}"/> 164 <fileset dir="${throwingproviders.src.dir}"/> 165 <fileset dir="${multibindings.src.dir}"/> 166 <fileset dir="${daggeradapter.src.dir}"/> 167 <fileset dir="${persist.src.dir}"/> 168 <fileset dir="${struts2.src.dir}"/> 169 <fileset dir="${grapher.src.dir}"/> 170 <fileset dir="${testlib.src.dir}"/> 171 172 <doclet name="jdiff.JDiff" path="${jdiff.home}/jdiff.jar:${jdiff.home}/xerces.jar"> 173 <param name="-apidir" value="${jdiff.tmp}" /> 174 <param name="-apiname" value="${new.api}" /> 175 </doclet> 176 </javadoc> 177 178 <!-- Do a diff against the previous version. --> 179 <javadoc packagenames="com.google.*" 180 destdir="${jdiff.tmp}" 181 docletpath="${jdiff.home}/jdiff.jar${path.separator}${jdiff.home}/xerces.jar" 182 maxmemory="512M" 183 sourcefiles="${jdiff.home}/Null.java" 184 classpathref="javadoc.classpath"> 185 <doclet name="jdiff.JDiff"> 186 <param name="-oldapi" value="${old.api}"/> 187 <param name="-oldapidir" value="latest-api-diffs"/> 188 <param name="-javadocold" value="http://google.github.io/guice/api-docs/${old.api}/javadoc/"/> 189 <param name="-newapi" value="${new.api}"/> 190 <param name="-newapidir" value="${jdiff.tmp}"/> 191 <param name="-javadocnew" value="http://google.github.io/guice/api-docs/${new.api}/javadoc/"/> 192 <param name="-stats"/> 193 <param name="-docchanges"/> 194 </doclet> 195 </javadoc> 196 </target> 197 198 <target name="javadoc" depends="compile"> 199 <javadoc packagenames="com.google.*" 200 destdir="build/docs/javadoc" 201 maxmemory="512M" 202 classpathref="javadoc.classpath" 203 additionalparam="-Xdoclint:none -notimestamp" 204 windowtitle="Guice ${new.api} API" 205 author="false" 206 protected="true"> 207 <group title="Guice Core" packages="com.google.inject:com.google.inject.util:com.google.inject.spi:com.google.inject.name:com.google.inject.matcher:com.google.inject.binder"/> 208 <fileset dir="${src.dir}" defaultexcludes="yes"> 209 <include name="com/google/inject/**"/> 210 <exclude name="com/google/inject/internal/**"/> 211 </fileset> 212 213 <group title="Servlet Extension" packages="com.google.inject.servlet"/> 214 <fileset dir="${servlet.src.dir}"/> 215 216 <group title="AssistedInject Extension" packages="com.google.inject.assistedinject"/> 217 <fileset dir="${assistedinject.src.dir}"/> 218 219 <group title="Multibinder Extension" packages="com.google.inject.multibindings"/> 220 <fileset dir="${multibindings.src.dir}"/> 221 222 <group title="Dagger Adapter" packages="com.google.inject.daggeradapter"/> 223 <fileset dir="${daggeradapter.src.dir}"/> 224 225 <group title="ThrowingProviders Extension" packages="com.google.inject.throwingproviders"/> 226 <fileset dir="${throwingproviders.src.dir}"/> 227 228 <group title="Test Libraries Extension" packages="com.google.inject.testing.*"/> 229 <fileset dir="${testlib.src.dir}"/> 230 231 <group title="Grapher Extension" packages="com.google.inject.grapher:com.google.inject.grapher.*"/> 232 <fileset dir="${grapher.src.dir}"/> 233 234 <group title="Persist Extension" packages="com.google.inject.persist:com.google.inject.persist.*"/> 235 <fileset dir="${persist.src.dir}"/> 236 237 <group title="Spring Extension" packages="com.google.inject.spring"/> 238 <fileset dir="${spring.src.dir}"/> 239 240 <group title="Struts2 Extension" packages="com.google.inject.struts2"/> 241 <fileset dir="${struts2.src.dir}"/> 242 243 <group title="JNDI Extension" packages="com.google.inject.jndi"/> 244 <fileset dir="${jndi.src.dir}"/> 245 246 <group title="JMX Extension" packages="com.google.inject.tools.jmx"/> 247 <fileset dir="${jmx.src.dir}"/> 248 249 <link href="http://aopalliance.sourceforge.net/doc/"/> 250 <link href="http://docs.oracle.com/javase/7/docs/api/"/> 251 <link href="http://atinject.googlecode.com/svn/trunk/javadoc/"/> 252 <link href="http://docs.guava-libraries.googlecode.com/git/javadoc/"/> 253 <link href="https://tomcat.apache.org/tomcat-5.5-doc/servletapi/"/> 254 </javadoc> 255 </target> 256 257 <target name="no_aop" 258 description="Create a copy of the Guice source that doesn't do bytecode generation."> 259 <taskdef name="munge" classname="MungeTask" classpath="lib/build/munge.jar"/> 260 <mkdir dir="build/no_aop"/> 261 <munge todir="build/no_aop"> 262 <fileset dir="."> 263 <!-- exclude generated files --> 264 <exclude name="build/**"/> 265 <exclude name="classes/**"/> 266 <exclude name="latest-api-diffs/**"/> 267 <exclude name="javadoc/**"/> 268 <exclude name="latest-javadoc/**"/> 269 <!-- exclude AOP-specific libraries --> 270 <exclude name="lib/aopalliance.jar"/> 271 <exclude name="lib/build/asm-*.jar"/> 272 <exclude name="lib/build/cglib-*.jar"/> 273 <!-- exclude AOP-specific classes --> 274 <exclude name="**/LineNumbers.java"/> 275 <exclude name="**/InterceptorBindingProcessor.java"/> 276 <exclude name="**/ProxyFactory.java"/> 277 <exclude name="**/ProxyFactoryTest.java"/> 278 <exclude name="**/InterceptorStackCallback.java"/> 279 <exclude name="**/InterceptorBinding.java"/> 280 <exclude name="**/MethodAspect.java"/> 281 <exclude name="**/MethodInterceptionTest.java"/> 282 <exclude name="**/BytecodeGenTest.java"/> 283 <exclude name="**/IntegrationTest.java"/> 284 <exclude name="**/MethodInterceptionTest.java"/> 285 </fileset> 286 <arg value="-DNO_AOP" /> 287 </munge> 288 <replace file="build/no_aop/common.xml" value=""> 289 <replacetoken><![CDATA[<zipfileset src="${common.basedir}/lib/build/asm-5.0.3.jar"/>]]></replacetoken> 290 </replace> 291 <replace file="build/no_aop/common.xml" value=""> 292 <replacetoken><![CDATA[<zipfileset src="${common.basedir}/lib/build/cglib-3.1.jar"/>]]></replacetoken> 293 </replace> 294 <replace file="build/no_aop/common.xml" value=""> 295 <replacetoken><![CDATA[<zipfileset src="${common.basedir}/lib/build/cglib-3.1.jar"><include name="LICENSE"/><include name="NOTICE"/></zipfileset>]]></replacetoken> 296 </replace> 297 <replace file="build/no_aop/common.xml" value='Bundle-Name" value="$${ant.project.name} (no_aop)'> 298 <replacetoken><![CDATA[Bundle-Name" value="${ant.project.name}]]></replacetoken> 299 </replace> 300 </target> 301 302 <target name="clean.all" 303 depends="clean" 304 description="Remove generated files."> 305 <ant dir="extensions/servlet" antfile="build.xml" target="clean"/> 306 <ant dir="extensions/spring" antfile="build.xml" target="clean"/> 307 <ant dir="extensions/struts2" antfile="build.xml" target="clean"/> 308 <ant dir="extensions/assistedinject" antfile="build.xml" target="clean"/> 309 <ant dir="extensions/jmx" antfile="build.xml" target="clean"/> 310 <ant dir="extensions/jndi" antfile="build.xml" target="clean"/> 311 <ant dir="extensions/throwingproviders" antfile="build.xml" target="clean"/> 312 <ant dir="extensions/multibindings" antfile="build.xml" target="clean"/> 313 <ant dir="extensions/dagger-adapter" antfile="build.xml" target="clean"/> 314 <ant dir="extensions/persist" antfile="build.xml" target="clean"/> 315 <ant dir="extensions/grapher" antfile="build.xml" target="clean"/> 316 <ant dir="extensions/testlib" antfile="build.xml" target="clean"/> 317 </target> 318 319</project> 320