| <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| |
| <!-- |
| Copyright 2011, Big Switch Networks, Inc. |
| |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <!-- |
| The build uses pregenerated Thrift code by default to reduce build |
| dependencies. To generate it locally run the gen-thrift target. |
| If you change the Thrift files be sure to also commit the updated |
| generated code. |
| --> |
| |
| <project default="jar" name="Floodlight"> |
| <property name="target" location="target"/> |
| <property name="build" location="${target}/bin"/> |
| <property name="build-test" location="${target}/bin-test"/> |
| <property name="build-coverage" location="${target}/bin-coverage"/> |
| <property name="test-output" location="${target}/test"/> |
| <property name="coverage-output" location="${target}/coverage"/> |
| <property name="source" location="src/main/java"/> |
| <property name="resources" location="src/main/resources/"/> |
| <property name="source-test" location="src/test/java"/> |
| <property name="python-src" location="src/main/python"/> |
| <property name="docs" location="${target}/docs"/> |
| <property name="main-class" value="net.floodlightcontroller.core.Main"/> |
| <property name="floodlight-jar" location="${target}/floodlight.jar"/> |
| <property name="floodlight-test-jar" location="${target}/floodlight-test.jar"/> |
| <property name="floodlight-only-jar" location="${target}/floodlight-only.jar"/> |
| <property name="thrift.dir" value="${basedir}/src/main/thrift"/> |
| <property name="thrift.out.dir" value="lib/gen-java"/> |
| <property name="thrift.package" value="net/floodlightcontroller/packetstreamer/thrift"/> |
| <property name="ant.build.javac.source" value="1.6"/> |
| <property name="ant.build.javac.target" value="1.6"/> |
| <property name="lib" location="lib"/> |
| <property name="titanlib" location="lib/titan/"/> |
| |
| <patternset id="lib"> |
| <include name="logback-classic-1.0.0.jar"/> |
| <include name="logback-core-1.0.0.jar"/> |
| <include name="jackson-core-asl-1.9.11.jar"/> |
| <include name="jackson-mapper-asl-1.9.11.jar"/> |
| <include name="slf4j-api-1.6.4.jar"/> |
| <include name="org.restlet-2.1-RC1.jar"/> |
| <include name="org.restlet.ext.jackson-2.1-RC1.jar"/> |
| <include name="org.restlet.ext.simple-2.1-RC1.jar"/> |
| <include name="org.restlet.ext.slf4j-2.1-RC1.jar"/> |
| <include name="simple-4.1.21.jar"/> |
| <include name="netty-3.2.6.Final.jar"/> |
| <include name="args4j-2.0.16.jar"/> |
| <include name="concurrentlinkedhashmap-lru-1.3.jar"/> |
| <include name="jython-2.5.2.jar"/> |
| <include name="libthrift-0.7.0.jar"/> |
| <include name="curator-client-1.3.5-SNAPSHOT.jar"/> |
| <include name="curator-framework-1.3.5-SNAPSHOT.jar"/> |
| <include name="curator-recipes-1.3.5-SNAPSHOT.jar"/> |
| <include name="zookeeper-3.4.5.jar"/> |
| </patternset> |
| |
| <patternset id="titanlib"> |
| <include name="**/*.jar"/> |
| </patternset> |
| |
| <path id="classpath"> |
| <fileset dir="${lib}"> |
| <patternset refid="lib"/> |
| </fileset> |
| <fileset dir="${titanlib}"> |
| <patternset refid="titanlib"/> |
| </fileset> |
| </path> |
| |
| <patternset id="lib-cobertura"> |
| <include name="cobertura-1.9.4.1.jar"/> |
| <include name="asm-3.0.jar"/> |
| <include name="asm-tree-3.0.jar"/> |
| <include name="oro/jakarta-oro-2.0.8.jar"/> |
| <include name="log4j-1.2.9.jar"/> |
| </patternset> |
| <path id="classpath-cobertura"> |
| <fileset dir="${lib}"> |
| <patternset refid="lib-cobertura"/> |
| </fileset> |
| </path> |
| |
| <patternset id="lib-test"> |
| <include name="junit-4.8.2.jar"/> |
| <include name="org.easymock-3.1.jar"/> |
| <include name="objenesis-1.2.jar"/> <!-- required by easymock to mock classes --> |
| <include name="cglib-nodep-2.2.2.jar"/> <!-- required by easymock to mock classes --> |
| </patternset> |
| <path id="classpath-test"> |
| <fileset dir="${lib}"> |
| <patternset refid="lib-test"/> |
| <patternset refid="lib-cobertura"/> |
| <patternset refid="lib"/> |
| <patternset refid="titanlib"/> |
| </fileset> |
| </path> |
| |
| <target name="init"> |
| <mkdir dir="${build}"/> |
| <mkdir dir="${build-test}"/> |
| <mkdir dir="${target}/lib"/> |
| <mkdir dir="${thrift.out.dir}"/> |
| <mkdir dir="${test-output}"/> |
| </target> |
| |
| <target name="compile" depends="init"> |
| <javac includeAntRuntime="false" |
| classpathref="classpath" |
| debug="true" |
| srcdir="${source}:${thrift.out.dir}" |
| destdir="${build}"> |
| <compilerarg value="-Xlint:unchecked"/> |
| </javac> |
| </target> |
| |
| <target name="compile-tests" depends="compile-test"/> |
| <target name="compile-test" depends="compile"> |
| <fileset dir="${resources}"/> |
| <javac includeAntRuntime="false" debug="true" |
| srcdir="${source-test}" |
| classpath="${build}" |
| classpathref="classpath-test" |
| destdir="${build-test}"/> |
| </target> |
| |
| <!-- Thrift build based on http://www.flester.com/blog/2009/04/26/using-thrift-from-ant --> |
| <fileset id="thrift.files" dir="${thrift.dir}"> |
| <include name="**/*.thrift"/> |
| </fileset> |
| |
| <target name="gen-thrift" depends="init"> |
| <pathconvert property="thrift.file.list" refid="thrift.files" |
| pathsep=" " dirsep="/"> |
| </pathconvert> |
| <echo message="Running thrift generator on ${thrift.file.list}"/> |
| <exec executable="thrift" dir="${basedir}" failonerror="true"> |
| <arg line="--strict -v --gen java -o ${thrift.out.dir}/.. ${thrift.file.list}"/> |
| </exec> |
| <!-- Get rid of annoying warnings in thrift java: at annotations --> |
| <echo message="Adding @SuppressWarning annotations"/> |
| <replaceregexp byline="true"> |
| <regexp pattern="^public "/> |
| <substitution expression='@SuppressWarnings("all") public '/> |
| <fileset id="thrift.output.files" dir="${thrift.out.dir}/.."> |
| <include name="**/*.java"/> |
| </fileset> |
| </replaceregexp> |
| </target> |
| |
| <target name="clean"> |
| <delete dir="${target}"/> |
| </target> |
| |
| <target name="run" depends="dist"> |
| <java fork="true" jar="${floodlight-jar}" classpathref="classpath"> |
| <jvmarg value="-server"/> |
| <jvmarg value="-Xms1024M"/> |
| <jvmarg value="-Xmx1024M"/> |
| </java> |
| </target> |
| |
| <target name="tests" depends="test"/> |
| <target name="test" depends="compile-test"> |
| <junit fork="true" forkmode="once" |
| failureproperty="junit.failure" |
| printsummary="on"> |
| <sysproperty key="net.sourceforge.cobertura.datafile" |
| file="${target}/cobertura.ser" /> |
| <classpath> |
| <pathelement location="${build-coverage}"/> |
| <pathelement location="${build}"/> |
| <pathelement location="${build-test}"/> |
| <pathelement location="${floodlight-jar}"/> |
| <path refid="classpath-test"/> |
| </classpath> |
| <formatter type="brief" usefile="true" /> |
| <batchtest todir="${test-output}"> |
| <fileset dir="${source-test}"> |
| <exclude name="**/storage/tests/StorageTest.java"/> |
| <include name="**/*Test*.java"/> |
| <exclude name="**/core/test/**"/> |
| <exclude name="**/core/module/**"/> |
| </fileset> |
| </batchtest> |
| </junit> |
| <fail if="junit.failure" message="Unit test(s) failed. See reports!"/> |
| </target> |
| |
| <taskdef classpathref="classpath-cobertura" resource="tasks.properties"/> |
| <target name="clean-instrument"> |
| <delete file="${target}/cobertura.ser"/> |
| <delete dir="${build-coverage}"/> |
| </target> |
| <target name="instrument" depends="compile,compile-test,clean-instrument"> |
| <cobertura-instrument datafile="${target}/cobertura.ser" |
| todir="${build-coverage}" |
| classpathref="classpath-cobertura"> |
| <fileset dir="${build}"> |
| <include name="**/*.class"/> |
| </fileset> |
| </cobertura-instrument> |
| </target> |
| <target name="coverage-report"> |
| <cobertura-report format="html" |
| datafile="${target}/cobertura.ser" |
| destdir="${coverage-output}" |
| srcdir="${source}"/> |
| <cobertura-report format="xml" |
| datafile="${target}/cobertura.ser" |
| destdir="${coverage-output}" |
| srcdir="${source}"/> |
| </target> |
| <target name="coverage" depends="instrument,test,coverage-report"/> |
| |
| <target name="jar" depends="compile"> |
| <jar destfile="${floodlight-only-jar}"> |
| <fileset dir="${build}"/> |
| <fileset dir="${resources}"/> |
| <fileset dir="${python-src}"> |
| <include name="**/*.py"/> |
| </fileset> |
| </jar> |
| </target> |
| |
| <target name="dist" depends="compile,compile-test"> |
| <jar destfile="${floodlight-jar}" filesetmanifest="mergewithoutmain"> |
| <manifest> |
| <attribute name="Main-Class" value="${main-class}"/> |
| <attribute name="Class-Path" value="."/> |
| </manifest> |
| <fileset dir="${build}"/> |
| <fileset dir="${resources}"/> |
| <fileset dir="${python-src}"> |
| <include name="**/*.py"/> |
| </fileset> |
| <zipgroupfileset dir="${titanlib}"> |
| <patternset refid="titanlib"/> |
| </zipgroupfileset> |
| <zipgroupfileset dir="${lib}"> |
| <patternset refid="lib"/> |
| </zipgroupfileset> |
| </jar> |
| <jar destfile="${floodlight-test-jar}" filesetmanifest="mergewithoutmain"> |
| <manifest> |
| <attribute name="Class-Path" value="."/> |
| </manifest> |
| <fileset dir="${build-test}"/> |
| <fileset dir="${resources}"/> |
| <zipgroupfileset dir="${lib}"> |
| <patternset refid="lib-test"/> |
| <patternset refid="lib-cobertura"/> |
| </zipgroupfileset> |
| <zipgroupfileset dir="${titanlib}"> |
| <patternset refid="titanlib"/> |
| </zipgroupfileset> |
| </jar> |
| </target> |
| |
| <target name="javadoc"> |
| <javadoc access="protected" |
| author="true" |
| classpathref="classpath" |
| destdir="${docs}" |
| doctitle="Floodlight" |
| nodeprecated="false" |
| nodeprecatedlist="false" |
| noindex="false" |
| nonavbar="false" |
| notree="false" |
| source="1.6" |
| sourcepath="${source}" |
| splitindex="true" |
| use="true" |
| version="true"/> |
| </target> |
| |
| <target name="eclipse" depends="init"> |
| <pathconvert property="eclipse-lib"> |
| <map from="${basedir}/" to=""/> |
| <fileset dir="${lib}"> |
| <patternset refid="lib"/> |
| <patternset refid="lib-test"/> |
| </fileset> |
| <fileset dir="${titanlib}"> |
| <patternset refid="titanlib"/> |
| </fileset> |
| </pathconvert> |
| <exec executable="${basedir}/setup-eclipse.sh"> |
| <arg value="${main-class}"/> |
| <arg value="${eclipse-lib}"/> |
| </exec> |
| </target> |
| |
| </project> |