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