blob: 683d992ba524e8f0697eab166f68a6c76dfc26dd [file] [log] [blame]
<!--
* 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.
*
* Author: dhanji@google.com (Dhanji R. Prasanna)
* anorth@google.com (Alex North)
-->
<project name="waveinabox" default="dist">
<description>Wave in a Box</description>
<property file="build.properties"/>
<!-- Import classpath definitions. -->
<import file="${build.classpath.path}"/>
<!-- Import macros -->
<import file="${build.macros.path}"/>
<property name="gwt.args" value=""/>
<!-- Standard time properties and a timestamp pattern -->
<tstamp>
<format property="DSTAMP_INT" pattern="-yyyy-MM-dd"/>
</tstamp>
<tstamp>
<format property="LOG_STAMP" pattern="yyyy-MM-dd_HH-mm-ss"/>
</tstamp>
<property name="release.robot.name" value="wave-robot-client${DSTAMP_INT}.zip"/>
<property name="release.robot.python.name" value="wave-robot-python-client${DSTAMP_INT}.zip"/>
<property name="build.log.filename" value="build_${LOG_STAMP}.log"/>
<!--=====
Initialization
=====-->
<target name="clean" description="Cleans up the build artifacts and temporary directories">
<delete dir="${build.dir}"/>
<delete dir="${dist.dir}"/>
<delete dir="${doc.dir}"/>
<delete dir="${gen.dir}"/>
<delete dir="${test.out.dir}"/>
<delete dir="war/waveharness"/>
<delete dir="war/webclient"/>
</target>
<target name="clean-lib" description="Cleans up the third party libraries">
<delete dir="${lib.test}"/>
<delete dir="${lib.codegen}"/>
<delete dir="${lib.runtime}"/>
<delete dir="${lib.release}"/>
<delete dir="${lib.solr}"/>
</target>
<target name="init-logging" description="Enable logging to file">
<mkdir dir="${build.log.dir}"/>
<record name="${build.log.dir}/${build.log.filename}"
loglevel="verbose" append="false"/>
<echo message="Logging to ${build.log.dir}/${build.log.filename}"/>
</target>
<target name="init" depends="init-logging">
<mkdir dir="${build.proto.dir}"/>
<mkdir dir="${build.messages.dir}"/>
<mkdir dir="${build.src.dir}"/>
<mkdir dir="${build.test.dir}"/>
<mkdir dir="${coverage.dir}"/>
<mkdir dir="${dist.dir}"/>
<mkdir dir="${staging.dir}"/>
<mkdir dir="${dep}"/>
<mkdir dir="${test.out.dir}"/>
<mkdir dir="${lib.test}"/>
<mkdir dir="${lib.codegen}"/>
<mkdir dir="${lib.runtime}"/>
<mkdir dir="${lib.release}"/>
<mkdir dir="${lib.solr}"/>
<mkdir dir="${gen.dir}/gxp"/>
<mkdir dir="${gen.dir}/messages"/>
</target>
<!-- === IDE helper targets === -->
<!-- TODO(danilatos): Make this work on Windows as well. For now,
windows users can just copy the .project_template file manually. -->
<target name="eclipse" description="Generates an eclipse .project file">
<exec executable="tools/eclipse.sh"/>
</target>
<!--=====
Builds
======-->
<!-- ===
Protocol buffer targets.
Compiles generated proto sources. See build-proto.xml for generating
proto sources from .proto files.
=== -->
<target name="compile-proto-dep">
<uptodate targetfile="${dep}/compile-proto" property="skip.compile-proto">
<srcfiles dir="${lib.dir}"/>
<srcfiles dir="${src.proto.dir}" includes="**/*.java"/>
</uptodate>
</target>
<target name="compile-proto" depends="init, compile-proto-dep"
unless="skip.compile-proto" description="Compiles protocol buffers">
<buildproto destdir="${build.proto.dir}">
<src path="${src.proto.dir}"/>
<classpath>
<path refid="libpath"/>
</classpath>
</buildproto>
<touch file="${dep}/compile-proto"/>
</target>
<!-- === GXP targets === -->
<target name="gen-gxp-dep">
<uptodate targetfile="${dep}/gen-gxp" property="skip.gen-gxp">
<srcfiles dir="${src.dir}" includes="org/waveprotocol/box/server/gxp/*.gxp"/>
</uptodate>
</target>
<!-- Generates the Java files from templates -->
<target name="gen-gxp" description="Generates GXP files"
depends="init, define-gxpc, gen-gxp-dep" unless="skip.gen-gxp">
<gxpc srcdir="${src.dir}" srcpaths="${src.dir}" destdir="${gen.dir}/gxp"
target="org.waveprotocol.box.server.gxp" />
<touch file="${dep}/gen-gxp"/>
</target>
<target name="compile-gxp-dep">
<uptodate targetfile="${dep}/compile-gxp" property="skip.compile-gxp">
<srcfiles dir="${gen.dir}/gxp"/>
</uptodate>
</target>
<target name="compile-gxp" depends="init, gen-gxp, compile-gxp-dep"
unless="skip.compile-gxp" description="Compiles GXP classes">
<buildjava destdir="${build.src.dir}">
<src path="${gen.dir}/gxp" />
<classpath>
<path refid="libpath"/>
</classpath>
</buildjava>
<touch file="${dep}/compile-gxp"/>
</target>
<!-- === PST targets === -->
<target name="dist-pst-dep">
<uptodate targetfile="${dep}/dist-pst" property="skip.dist-pst">
<srcfiles dir="${lib.dir}"/>
<srcfiles dir="${src.dir}" includes="org/waveprotocol/pst/**/*.java"/>
</uptodate>
</target>
<target name="dist-pst" depends="init, dist-pst-dep, compile-proto"
unless="skip.dist-pst" description="Builds the PST tool">
<delete dir="${build.dir}/pst"/>
<mkdir dir="${build.dir}/pst"/>
<javac srcdir="${src.dir}" destdir="${build.dir}/pst" includes="org/waveprotocol/pst/**/*">
<classpath>
<path refid="libpath"/>
<path location="${build.proto.dir}/"/>
</classpath>
</javac>
<copy todir="${build.dir}/pst">
<fileset dir="${src.dir}">
<include name="org/waveprotocol/pst/**/*.st"/>
<include name="org/waveprotocol/pst/**/properties"/>
</fileset>
</copy>
<jar destfile="${dist.dir}/pst.jar" basedir="${build.dir}/pst"/>
<touch file="${dep}/dist-pst"/>
</target>
<target name="gen-messages-dep">
<uptodate targetfile="${dep}/gen-messages" property="skip.gen-messages">
<srcfiles dir="${src.dir}" includes="org/waveprotocol/pst/**/*.st"/>
<srcfiles dir="${lib.dir}"/>
<srcfiles dir="${dist.dir}" includes="pst.jar"/>
<srcfiles dir="${build.proto.dir}"/>
</uptodate>
</target>
<target name="gen-messages" depends="dist-pst, compile-proto, gen-messages-dep"
unless="skip.gen-messages"
description="Generates the DTO message source">
<delete dir="${gen.dir}/messages"/>
<mkdir dir="${gen.dir}/messages"/>
<pstmessage proto="${build.proto.dir}/org/waveprotocol/box/common/comms/WaveClientRpc.class"/>
<pstmessage proto="${build.proto.dir}/org/waveprotocol/box/search/SearchProto.class"/>
<pstmessage proto="${build.proto.dir}/org/waveprotocol/box/profile/ProfilesProto.class"/>
<pstmessage proto="${build.proto.dir}/org/waveprotocol/box/server/rpc/Rpc.class"/>
<pstmessage proto="${build.proto.dir}/org/waveprotocol/box/attachment/AttachmentProto.class"/>
<pstmessage proto="${build.proto.dir}/org/waveprotocol/wave/federation/Proto.class"/>
<pstmessage proto="${build.proto.dir}/org/waveprotocol/wave/concurrencycontrol/ClientServer.class"/>
<pstmessage proto="${build.proto.dir}/org/waveprotocol/wave/diff/Diff.class"/>
<touch file="${dep}/gen-messages"/>
</target>
<target name="compile-messages-dep">
<uptodate targetfile="${dep}/compile-messages" property="skip.compile-messages">
<srcfiles dir="${gen.dir}/messages"/>
<srcfiles dir="${src.dir}" includes="org/waveprotocol/wave/communication/**"/>
</uptodate>
</target>
<target name="compile-messages" depends="gen-messages, compile-messages-dep"
unless="skip.compile-messages" description="Compiles the DTO messages">
<!--
The generated DTOs depend on code in wave/communication. At this stage of
the build process, that code is still in source form, so it is exposed to
javac via sourcepath not classpath. Since javac is too aggressive, and
gobbles up those files and compiles them too, a subsequent step has to
go and delete those overzealously compiled files, because they will be
compiled again later.
-->
<javac srcdir="${gen.dir}/messages"
destdir="${build.messages.dir}"
sourcepath="${src.dir}">
<classpath>
<path refid="libpath"/>
<pathelement location="${build.proto.dir}"/>
</classpath>
</javac>
<delete dir="${build.messages.dir}/org/waveprotocol/wave/communication"/>
<touch file="${dep}/compile-messages"/>
</target>
<!-- === Java targets === -->
<target name="compile-dep">
<uptodate targetfile="${dep}/compile" property="skip.compile">
<srcfiles dir="${lib.dir}"/>
<srcfiles dir="${src.dir}" includes="**"/>
<srcfiles dir="${gen.dir}" includes="**"/>
</uptodate>
</target>
<target name="compile" depends="compile-proto, compile-gxp, compile-messages, compile-dep"
unless="skip.compile" description="Compiles all source">
<subant target="compile" inheritall="true">
<property name="build.common.path" location="build-common.xml"/>
<fileset dir="${src.dir}" includes="*/**/build.xml"/>
</subant>
<!-- copy non binary resources in src tree to output classpath. Why? -->
<copy todir="${build.src.dir}">
<fileset dir="${src.dir}">
<include name="**/*.js"/>
<include name="**/*.xml"/>
<include name="**/*.html"/>
<include name="**/*.properties"/>
<include name="**/*.proto"/>
<include name="**/*.conf"/>
</fileset>
</copy>
<touch file="${dep}/compile"/>
</target>
<target name="compile-tests" depends="get-third-party,compile"
description="Compiles all unit tests">
<!-- Pull in the Emma tasks -->
<taskdef resource="emma_ant.properties" classpathref="test.libpath"/>
<buildjava destdir="${build.test.dir}">
<src path="${test.dir}" />
<classpath>
<path refid="libpath"/>
<path refid="test.libpath"/>
<pathelement location="${build.src.dir}"/>
<pathelement location="${build.proto.dir}"/>
</classpath>
</buildjava>
<!-- copy non binary resources in src tree to output classpath -->
<copy todir="${build.test.dir}">
<fileset dir="${test.dir}">
<include name="**/*.xml"/>
<include name="**/*.html"/>
<include name="**/*.properties"/>
</fileset>
</copy>
</target>
<!--=====
Tests
======-->
<target name="test" depends="compile-tests" description=
"Runs all the unit tests in the project excluding external persistence">
<!-- EMMA disabled due to incompatibility with EventSerializer -->
<!-- Tests are run in a single new VM, when forkmode is set to once -->
<runtests forkmode="once" coverage="true">
<fileset dir="${test.dir}">
<include name="**/*Test.java"/>
<exclude name="**/*GwtTest.java"/>
<exclude name="**/*LargeTest.java"/>
<!-- Exclude all persistence tests -->
<exclude name="**/server/persistence/**"/>
</fileset>
<!-- Include the persistence tests that aren't run elsewhere -->
<fileset dir="${test.dir}">
<include name="**/server/persistence/memory/*Test.java"/>
<include name="**/server/persistence/file/*Test.java"/>
</fileset>
</runtests>
</target>
<target name="test-large" depends="compile-tests" description="Runs large tests (slow)">
<runtests forkmode="perTest" coverage="true">
<fileset dir="${test.dir}">
<include name="**/*LargeTest.java"/>
</fileset>
</runtests>
</target>
<target name="test-gwt" depends="compile-tests" description="Runs GWT tests (slow)">
<!-- Fork per test due to GWT test failure in shared JVM -->
<!-- EMMA disabled due to GWT incompatibility -->
<runtests forkmode="perTest" coverage="false">
<fileset dir="${test.dir}">
<include name="**/*GwtTest.java"/>
</fileset>
</runtests>
</target>
<target name="test-mongodb" depends="compile-tests" description="Runs the MongoDb tests">
<runtests forkmode="once" coverage="true">
<fileset dir="${test.dir}">
<!-- Include the mongoDb tests -->
<include name="**/server/persistence/mongodb/**/*Test.java"/>
</fileset>
</runtests>
</target>
<target name="test-all" depends="compile-tests, test, test-gwt, test-large, test-mongodb"
description="Run all tests, including GWT"/>
<!--=====
GWT
======-->
<target name="compile-gwt-dep">
<uptodate targetfile="${dep}/compile-gwt" property="skip.compile-gwt">
<srcfiles dir="${lib.dir}"/>
<srcfiles dir="${src.dir}"/>
<srcfiles dir="${gen.dir}/messages"/>
</uptodate>
</target>
<target name="compile-gwt" depends="compile, compile-gwt-dep"
description="GWT compile to production JavaScript" unless="skip.compile-gwt">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
<classpath>
<pathelement location="${src.dir}"/>
<pathelement location="${gen.dir}/messages"/>
<path refid="libpath"/>
<path refid="test.libpath"/>
</classpath>
<jvmarg value="-Xmx1024M"/>
<!-- Small Javascript size. -->
<arg line="-style OBFUSCATED"/>
<!-- Do not include class and package names in compiled JS. -->
<arg line="-XdisableClassMetadata"/>
<arg line="-XdisableCastChecking"/>
<arg line="-localWorkers 4"/>
<arg line="${gwt.args}"/>
<arg value="org.waveprotocol.box.webclient.WebClientProd"/>
</java>
<!-- Only one GWT compile output is valid at any one time. -->
<delete file="${dep}/compile-gwt-dev"/>
<touch file="${dep}/compile-gwt"/>
</target>
<target name="compile-gwt-dev-dep">
<uptodate targetfile="${dep}/compile-gwt-dev" property="skip.compile-gwt-dev">
<srcfiles dir="${lib.dir}"/>
<srcfiles dir="${src.dir}"/>
<srcfiles dir="${gen.dir}/messages"/>
</uptodate>
</target>
<target name="compile-gwt-dev" depends="compile, compile-gwt-dev-dep"
description="GWT compile of a restricted set of permutations suitable for development."
unless="skip.compile-gwt-dev">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
<classpath>
<pathelement location="${src.dir}"/>
<pathelement location="${gen.dir}/messages"/>
<path refid="libpath"/>
<path refid="test.libpath"/>
</classpath>
<jvmarg value="-Xmx1024M"/>
<!-- Human-readable JS. -->
<arg line="-style PRETTY"/>
<!-- Less optimal JS, but faster compile. -->
<arg line="-draftCompile"/>
<!-- Assertions on. -->
<arg line="-ea"/>
<arg line="${gwt.args}"/>
<arg value="org.waveprotocol.box.webclient.WebClientDev"/>
</java>
<!-- Only one GWT compile output is valid at any one time. -->
<delete file="${dep}/compile-gwt"/>
<touch file="${dep}/compile-gwt-dev"/>
</target>
<!--=====
Hosted and Superdev
======-->
<target name="hosted-gwt" depends="compile"
description="Runs the hosted mode server, for debugging the GWT client in a JVM.">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.DevMode">
<classpath>
<pathelement location="${src.dir}"/>
<pathelement location="${build.src.dir}"/>
<pathelement location="${gen.dir}/messages"/>
<path refid="libpath"/>
</classpath>
<jvmarg value="-Xmx1024M"/>
<jvmarg value="-ea"/>
<jvmarg value="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8001"/>
<arg value="-noserver" />
<arg line="-bindAddress 127.0.0.1" />
<arg line="${gwt.args}"/>
<arg line="-startupUrl http://localhost:9898"/>
<arg line="-logLevel DEBUG"/>
<arg value="org.waveprotocol.box.webclient.WebClientDev"/>
</java>
</target>
<target name="superdev-gwt" depends="compile"
description="Runs the superdev mode, for debugging the GWT client in a browser.">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.codeserver.CodeServer">
<classpath>
<pathelement location="${lib.codegen}/gwt-dev-2.6.1.jar" />
<pathelement location="${lib.codegen}/gwt-codeserver-2.6.1.jar" />
<pathelement location="${src.dir}"/>
<pathelement location="${gen.dir}/messages"/>
<path refid="libpath"/>
</classpath>
<arg line="${gwt.args}"/>
<arg line="-src src"/>
<arg value="org.waveprotocol.box.webclient.WebClientDev"/>
</java>
</target>
<target name="editor-hosted" depends="compile" description="Runs the editor harness through the GWT hosted mode server, for debugging in a JVM.">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.DevMode">
<classpath>
<pathelement location="${src.dir}"/>
<path refid="libpath"/>
</classpath>
<jvmarg value="-Xmx512M"/>
<jvmarg value="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8001"/>
<arg line="${gwt.args}"/>
<arg line="-war war"/>
<arg line="-startupUrl org.waveprotocol.wave.client.editor.harness.EditorTest/EditorTest.html"/>
<arg value="org.waveprotocol.wave.client.editor.harness.EditorTest"/>
</java>
</target>
<target name="editor-superdev" depends="compile" description="Runs the editor harness through the GWT superdev mode server, for debugging in a browser.">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.codeserver.CodeServer">
<classpath>
<pathelement location="${lib.codegen}/gwt-dev-2.6.1.jar" />
<pathelement location="${lib.codegen}/gwt-codeserver-2.6.1.jar" />
<pathelement location="${src.dir}"/>
<path refid="libpath"/>
</classpath>
<arg line="${gwt.args}"/>
<arg line="-src src"/>
<arg value="org.waveprotocol.wave.client.editor.harness.EditorTest"/>
</java>
</target>
<target name="waveharness-hosted" depends="compile" description="Runs the wave panel harness through the GWT hosted mode server, for debugging in a JVM.">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.DevMode">
<classpath>
<pathelement location="${src.dir}"/>
<path refid="libpath"/>
</classpath>
<jvmarg value="-Xmx512M"/>
<jvmarg value="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8001"/>
<arg line="${gwt.args}"/>
<arg line="-war war"/>
<arg line="-startupUrl waveharness/UndercurrentHarness.html"/>
<arg value="org.waveprotocol.wave.client.testing.UndercurrentHarness"/>
</java>
</target>
<target name="waveharness-superdev" depends="compile" description="Runs the wave panel harness through the GWT superdev mode server, for debugging in a browser.">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.codeserver.CodeServer">
<classpath>
<pathelement location="${lib.codegen}/gwt-dev-2.6.1.jar" />
<pathelement location="${lib.codegen}/gwt-codeserver-2.6.1.jar" />
<pathelement location="${src.dir}"/>
<path refid="libpath"/>
</classpath>
<arg line="${gwt.args}"/>
<arg line="-src src"/>
<arg value="org.waveprotocol.wave.client.testing.UndercurrentHarness"/>
</java>
</target>
<!--=====
Server
======-->
<target name="run-server" depends="compile"
description="Runs Wave in a Box server">
<java failonerror="true" fork="true" classname="org.waveprotocol.box.server.ServerMain">
<classpath>
<path refid="libpath"/>
<path location="${build.src.dir}"/>
<path location="${build.proto.dir}"/>
<path location="${build.messages.dir}"/>
</classpath>
<jvmarg value="-Dorg.eclipse.jetty.LEVEL=DEBUG"/>
<jvmarg value="-Djava.security.auth.login.config=jaas.config"/>
</java>
</target>
<target name="debug-server" depends="compile"
description="Runs Wave in a Box server with debugging">
<java failonerror="true" fork="true" classname="org.waveprotocol.box.server.ServerMain">
<classpath>
<path refid="libpath"/>
<path location="${build.src.dir}"/>
<path location="${build.proto.dir}"/>
<path location="${build.messages.dir}"/>
</classpath>
<jvmarg value="-Dorg.eclipse.jetty.LEVEL=DEBUG"/>
<jvmarg value="-Djava.security.auth.login.config=jaas.config"/>
<jvmarg value="-Dwave.server.config=server.config"/>
<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=10898"/>
</java>
</target>
<!--=====
Distribution
======-->
<target name="stage-dep">
<uptodate targetfile="${dep}/stage" property="skip.stage">
<srcfiles dir="${lib.runtime}" includes="*.jar"/>
<srcfiles dir="${lib.codegen}" includes="gwt/gwt-user-*.jar"/>
<srcfiles dir="${build.src.dir}"/>
</uptodate>
</target>
<target name="stage" depends="compile, stage-dep"
description="Copy classes and runtime dependencies to the staging directory" unless="skip.stage">
<!-- Unzip and copy all the runtime deps into a staging dir -->
<unzip dest="${staging.dir}">
<fileset dir="${lib.runtime}">
<include name="*.jar"/>
</fileset>
</unzip>
<unzip dest="${staging.dir}">
<fileset dir="${lib.codegen}">
<include name="gwt-*.jar"/>
</fileset>
<patternset>
<exclude name="javax/servlet/**/*"/>
<exclude name="org/eclipse/**/*"/>
</patternset>
</unzip>
<copy todir="${staging.dir}" preservelastmodified="true">
<fileset dir="${build.src.dir}"/>
<fileset dir="${build.proto.dir}"/>
<fileset dir="${build.messages.dir}"/>
</copy>
<touch file="${dep}/stage"/>
</target>
<target name="dist" depends="test, compile-gwt, dist-server, dist-export-import"
description="Compiles, tests and creates the binary executable.">
</target>
<target name="dist-proto" depends="compile-proto" description="Builds the proto jar">
<jar destfile="${dist.dir}/proto.jar" basedir="${build.proto.dir}"/>
<jar destfile="${dist.dir}/proto-src.jar" basedir="${src.proto.dir}"/>
<jar destfile="${dist.dir}/proto-msg.jar" basedir="${gen.dir}/messages"/>
</target>
<target name="dist-libraries" depends="compile, dist-proto, dist-pst" description="Builds the distribution libraries">
<subant target="dist" inheritall="true">
<fileset dir="${src.dir}" includes="*/**/build.xml"/>
</subant>
</target>
<target name="dist-robot-client-api" depends="compile">
<jar destfile="${robotclient.jar.out}">
<fileset dir="${staging.dir}">
<include name="com/google/wave/api/*" />
<include name="com/google/wave/api/event/**/*" />
<include name="com/google/wave/api/impl/**/*" />
<include name="com/google/wave/api/oauth/**/*" />
<include name="com/google/wave/api/v2/**/*" />
</fileset>
<manifest>
<attribute name="Specification-Vendor" value="The Apache Software Foundation"/>
<attribute name="Specification-Title" value="Apache Wave Robot Client API"/>
<attribute name="Specification-Version" value="${waveinabox.version}"/>
<attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
<attribute name="Implementation-Title" value="Apache Wave Robot Client API"/>
<attribute name="Implementation-Version" value="${waveinabox.version}"/>
<attribute name="Built-By" value="${user.name}"/>
</manifest>
<metainf dir="." includes="LICENSE, NOTICE" />
</jar>
</target>
<!-- dist-api is broken due to non-runnable dependencies in the waveserver directory. TODO: fix. -->
<target name="dist-api" depends="stage" description="Assembles the Wave in a Box API">
<jar destfile="${api.jar.out}">
<fileset dir="${staging.dir}">
<include name="org/waveprotocol/**/*" />
<!-- Only exclude runnable targets -->
<exclude name="org/waveprotocol/box/consoleclient/**/*" />
<exclude name="org/waveprotocol/box/server/waveserver/**/*" />
</fileset>
<manifest>
<attribute name="Specification-Vendor" value="The Apache Software Foundation"/>
<attribute name="Specification-Title" value="Apache Wave Reference Impl API"/>
<attribute name="Specification-Version" value="${waveinabox.version}"/>
<attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
<attribute name="Implementation-Title" value="Apache Wave Reference Impl API"/>
<attribute name="Implementation-Version" value="${waveinabox.version}"/>
<attribute name="Built-By" value="${user.name}"/>
</manifest>
<metainf dir="." includes="LICENSE, NOTICE" />
</jar>
</target>
<!-- A healthy mix of hyphens and underscores never hurt anyone. Sigh. -->
<target name="dist-server-dep">
<!-- Note: this check is still very slow (~30secs) -->
<uptodate targetfile="${dep}/dist-server" property="skip.dist-server">
<srcfiles dir="${staging.dir}"/>
</uptodate>
</target>
<target name="dist-server" depends="stage, dist-server-dep" description="Assembles the Wave in a Box server" unless="skip.dist-server">
<jar destfile="${server.jar.out}">
<fileset dir="${staging.dir}">
<include name="META-INF/services/*" />
<include name="com/mongodb/**/*" />
<include name="org/slf4j/**/*" />
<include name="org/atmosphere/**/*" />
<include name="com/google/common/**/*" />
<include name="com/google/gson/**/*" />
<include name="com/google/gxp/**/*" />
<include name="com/google/gwt/core/server/**/*" />
<include name="com/google/gwt/core/shared/**/*" />
<include name="com/google/gwt/logging/**/*" />
<include name="com/google/gwt/user/server/**/*" />
<include name="com/google/gwt/user/client/rpc/**/*" />
<include name="com/google/inject/**/*" />
<include name="com/google/protobuf/**/*" />
<include name="com/google/wave/**/*" />
<include name="gnu/inet/**/*" />
<include name="javax/inject/**/*" />
<include name="javax/servlet/**/*" />
<include name="javax/xml/**/*" />
<include name="net/oauth/**/*" />
<include name="org/aopalliance/**/*" />
<include name="org/apache/commons/cli/**/*" />
<include name="org/apache/commons/codec/**/*" />
<include name="org/apache/commons/collections/**/*" />
<include name="org/apache/commons/configuration/**/*" />
<include name="org/apache/commons/fileupload/**/*" />
<include name="org/apache/commons/httpclient/**/*" />
<include name="org/apache/commons/lang/**/*" />
<include name="org/apache/commons/logging/**/*" />
<include name="org/apache/lucene/**/*" />
<include name="org/apache/commons/io/**/*" />
<include name="org/apache/xerces/**/*" />
<include name="org/bson/**/*" />
<include name="org/dom4j/**/*" />
<include name="org/eclipse/**/*" />
<include name="org/jdom/**/*" />
<include name="org/jivesoftware/**/*" />
<include name="org/joda/time/**/*" />
<include name="org/json/**/*" />
<include name="org/waveprotocol/**/*" />
<include name="org/xmlpull/**/*" />
<include name="org/xmpp/**/*" />
<include name="cc/kune/initials/**/*" />
<exclude name="org/waveprotocol/box/webclient/**/*"/>
<exclude name="org/waveprotocol/box/consoleclient/**/*"/>
<exclude name="org/waveprotocol/box/expimp/**/*"/>
<exclude name="org/waveprotocol/wave/client/*"/>
<exclude name="org/waveprotocol/wave/client/account/**/*"/>
<exclude name="org/waveprotocol/wave/client/autohide/**/*"/>
<exclude name="org/waveprotocol/wave/client/clipboard/**/*"/>
<exclude name="org/waveprotocol/wave/client/common/**/*"/>
<exclude name="org/waveprotocol/wave/client/concurrencycontrol/**/*"/>
<exclude name="org/waveprotocol/wave/client/debug/**/*"/>
<exclude name="org/waveprotocol/wave/client/doodad/**/*"/>
<exclude name="org/waveprotocol/wave/client/paging/**/*"/>
<exclude name="org/waveprotocol/wave/client/render/**/*"/>
<exclude name="org/waveprotocol/wave/client/scheduler/**/*"/>
<exclude name="org/waveprotocol/wave/client/scroll/**/*"/>
<exclude name="org/waveprotocol/wave/client/state/**/*"/>
<exclude name="org/waveprotocol/wave/client/testing/**/*"/>
<exclude name="org/waveprotocol/wave/client/uibuilder/**/*"/>
<exclude name="org/waveprotocol/wave/client/uibuilder/**/*"/>
<exclude name="org/waveprotocol/wave/client/util/**/*"/>
<exclude name="org/waveprotocol/wave/client/wave/**/*"/>
<exclude name="org/waveprotocol/wave/client/wavepanel/**/*"/>
<exclude name="org/waveprotocol/wave/client/widget/**/*"/>
<exclude name="com/google/api/client/**/*"/>
</fileset>
<manifest>
<!-- Application entry point -->
<attribute name="Main-Class"
value="org.waveprotocol.box.server.ServerMain"/>
<attribute name="Specification-Vendor" value="The Apache Software Foundation"/>
<attribute name="Specification-Title" value="Apache Wave Server"/>
<attribute name="Specification-Version" value="${waveinabox.version}"/>
<attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
<attribute name="Implementation-Title" value="Apache Wave Server"/>
<attribute name="Implementation-Version" value="${waveinabox.version}"/>
<attribute name="Built-By" value="${user.name}"/>
</manifest>
<metainf dir="." includes="LICENSE, NOTICE" />
</jar>
<touch file="${dep}/dist-server"/>
</target>
<target name="dist-export-import-dep">
<uptodate targetfile="${dep}/dist-export-import" property="skip.dist-export-import">
<srcfiles dir="${staging.dir}"/>
</uptodate>
</target>
<target name="dist-export-import" depends="stage, dist-export-import-dep" description="Assembles the Wave Export/Import utilities" unless="skip.dist-export-import">
<jar destfile="${export-import.jar.out}">
<fileset dir="${staging.dir}">
<include name="org/waveprotocol/box/server/common/**/*"/>
<include name="org/waveprotocol/box/expimp/**/*"/>
<include name="org/waveprotocol/box/server/persistence/**/*"/>
<include name="org/waveprotocol/box/server/rpc/**/*"/>
<include name="org/waveprotocol/wave/**/*"/>
<include name="org/waveprotocol/protobuf/**/*"/>
<include name="org/waveprotocol/box/attachment/**/*"/>
<include name="org/waveprotocol/box/common/comms/**/*"/>
<include name="org/apache/http/**/*"/>
<include name="org/apache/commons/**/*"/>
<include name="com/google/wave/api/**/*"/>
<include name="com/google/common/**/*"/>
<include name="com/google/gson/**/*"/>
<include name="com/google/protobuf/**/*"/>
<include name="org/json/**/*"/>
<include name="net/oauth/**/*"/>
</fileset>
<manifest>
<attribute name="Specification-Vendor" value="The Apache Software Foundation"/>
<attribute name="Specification-Title" value="Apache Wave Export/Import Utilities"/>
<attribute name="Specification-Version" value="${waveinabox.version}"/>
<attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
<attribute name="Implementation-Title" value="Apache Wave Export/Import Utilities"/>
<attribute name="Implementation-Version" value="${waveinabox.version}"/>
<attribute name="Built-By" value="${user.name}"/>
</manifest>
<metainf dir="." includes="LICENSE, NOTICE" />
</jar>
<touch file="${dep}/dist-export-import"/>
</target>
<!-- This rule should be run whenever the build configuration (i.e. build files, libraries) is changed -->
<target name="dist-test" depends="dist, test" description="Runs all the unit tests in the project against the jar files">
<taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask">
<classpath refid="test.libpath"/>
</taskdef>
<junit fork="yes" showoutput="no" haltonerror="yes">
<classpath>
<path refid="libpath"/>
<path refid="test.libpath"/>
<pathelement location="${server.jar.out}"/>
<pathelement location="${build.test.dir}"/>
</classpath>
<batchtest>
<fileset dir="${test.dir}">
<include name="**/*Test.java"/>
</fileset>
</batchtest>
<formatter type="xml"/>
</junit>
</target>
<!--=====
Release creation
======-->
<target name="release" depends="release-bin,release-src" description="Creates unsigned release">
</target>
<target name="release-src" description="Creates unsigned tar+zip for server source release">
<delete file="${dist.dir}/${release.src.path}.tar.bz2" />
<delete file="${dist.dir}/${release.src.path}.zip" />
<copy file="LICENSE.src" tofile="LICENSE" />
<copy file="NOTICE.src" tofile="NOTICE" />
<tar destfile="${dist.dir}/${release.src.path}.tar" longfile="gnu">
<!-- Include everything except built stuff in tree -->
<tarfileset dir="." prefix="${release.src.path}">
<exclude name="build/" />
<exclude name="dist/" />
<exclude name="_*/" />
<exclude name="bin/" />
<exclude name="gen/" />
<exclude name="test_out/" />
<exclude name="third_party/" />
<exclude name="war/webclient/" />
<exclude name="gwt-unitCache/" />
<exclude name="LICENSE.*" />
<exclude name="NOTICE.*" />
</tarfileset>
<!-- Setup permissions -->
<tarfileset dir="." prefix="${release.src.path}" filemode="755">
<include name="check-certificates.sh" />
<include name="make_cert.sh" />
<include name="run-server.sh" />
<include name="run-export.sh" />
<include name="run-import.sh" />
</tarfileset>
</tar>
<bzip2 destfile="${dist.dir}/${release.src.path}.tar.bz2" src="${dist.dir}/${release.src.path}.tar" />
<zip destfile="${dist.dir}/${release.src.path}.zip">
<tarfileset src="${dist.dir}/${release.src.path}.tar" />
</zip>
<delete file="${dist.dir}/${release.src.path}.tar" />
<delete file="LICENSE" />
<delete file="NOTICE" />
</target>
<target name="release-bin" depends="compile-gwt, dist-server, dist-export-import" description="Creates unsigned tar+zip for server binary release">
<delete file="${dist.dir}/${release.bin.path}.tar.bz2"/>
<delete file="${dist.dir}/${release.bin.path}.zip"/>
<antcall target="gen-server-config"/>
<copy file="LICENSE.bin" tofile="LICENSE" />
<copy file="NOTICE.bin" tofile="NOTICE" />
<tar destfile="${dist.dir}/${release.bin.path}.tar" longfile="gnu">
<!-- Actual jars -->
<tarfileset dir="${dist.dir}" includes="*.jar" prefix="${release.bin.path}/dist" />
<tarfileset dir="${basedir}" prefix="${release.bin.path}">
<!-- Documentation + Licensing -->
<include name="CHANGES" />
<include name="DISCLAIMER" />
<include name="KEYS" />
<include name="LICENSE" />
<include name="NOTICE" />
<include name="README" />
<include name="README.export-import" />
<include name="RELEASE-NOTES" />
<include name="THANKS" />
<!-- Helper scripts -->
<include name="process-script-args.sh" />
<!-- Configuration -->
<include name="build.properties" />
<include name="jaas.config" />
<include name="jsongadgets.json" />
<include name="server.config.example" />
<include name="server.config" />
<include name="server-config.xml" />
<include name="server.federation.config" />
<include name="server.federation.config.example" />
<include name="wiab-logging.conf" />
</tarfileset>
<!-- Helper scripts -->
<tarfileset dir="${basedir}" prefix="${release.bin.path}" filemode="755">
<include name="check-certificates.sh" />
<include name="make_cert.sh" />
<include name="run-server.sh" />
<include name="run-server.bat" />
<include name="run-export.sh" />
<include name="run-import.sh" />
<include name="run-solr.sh" />
<include name="run-solr.bat" />
</tarfileset>
<!-- WAR static content -->
<tarfileset dir="." includes="war/" prefix="${release.bin.path}" />
<tarfileset dir="." includes="thumbnail_patterns/" prefix="${release.bin.path}" />
<tarfileset dir="." includes="platforms/" prefix="${release.bin.path}" />
</tar>
<bzip2 destfile="${dist.dir}/${release.bin.path}.tar.bz2" src="${dist.dir}/${release.bin.path}.tar" />
<zip destfile="${dist.dir}/${release.bin.path}.zip">
<tarfileset src="${dist.dir}/${release.bin.path}.tar" />
</zip>
<delete file="${dist.dir}/${release.bin.path}.tar"/>
<delete file="LICENSE" />
<delete file="NOTICE" />
</target>
<target name="gen-server-config">
<ant antfile="server-config.xml" />
</target>
<!-- TODO: re-use these when the api code is useful again -->
<target name="release-robot-client-api" depends="dist-libraries" description="Creates a zip for the java robot client release">
<delete file="${dist.dir}/${release.robot.name}"/>
<zip destfile="${dist.dir}/${release.robot.name}">
<zipfileset dir="${dist.dir}" includes="model.jar"/>
<zipfileset dir="${dist.dir}" includes="wave-api-${waveinabox.version}.jar"/>
<zipfileset dir="${lib.dir}/runtime/commons_codec" includes="*.jar"/>
<zipfileset dir="${lib.dir}/runtime/gson" includes="*.jar"/>
<zipfileset dir="${lib.dir}/runtime/jdo" includes="*.jar"/>
<zipfileset dir="${lib.dir}/runtime/oauth" includes="*.jar"/>
<zipfileset dir="${basedir}" includes="COPYING"/>
</zip>
</target>
<target name="release-robot-client-python-api" description="Creates a zip for the python robot client release">
<delete file="${dist.dir}/${release.robot.python.name}"/>
<zip destfile="${dist.dir}/${release.robot.python.name}">
<zipfileset dir="${src.dir}/python/api" includes="**/*.py"/>
<zipfileset dir="${basedir}" includes="COPYING"/>
</zip>
</target>
<!--=====
Other
======-->
<!-- TODO: move notices/licenses as required? -->
<!-- TODO: checksums? Most of these could be intercepted during download! -->
<target name="get-third-party" depends="init, get-third-party-codegen, get-third-party-runtime, get-third-party-test" description="Download all third party dependencies">
</target>
<target name="get-third-party-codegen" description="Download code generating third party dependencies">
<get dest="${lib.codegen}" usetimestamp="true" skipexisting="true">
<url url="http://www.antlr3.org/download/antlr-3.2.jar" />
<url url="http://central.maven.org/maven2/com/google/gwt/gwt-dev/2.7.0/gwt-dev-2.7.0.jar" />
<url url="http://central.maven.org/maven2/com/google/gwt/gwt-user/2.7.0/gwt-user-2.7.0.jar" />
<url url="http://central.maven.org/maven2/com/google/gwt/gwt-codeserver/2.7.0/gwt-codeserver-2.7.0.jar" />
<url url="http://repo1.maven.org/maven2/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar" />
<url url="http://repo1.maven.org/maven2/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final-sources.jar" />
<url url="https://archive.apache.org/dist/velocity/engine/1.6.3/velocity-1.6.3.jar" />
<url url="https://archive.apache.org/dist/velocity/engine/1.6.3/velocity-1.6.3-dep.jar" />
</get>
</target>
<target name="get-jetty-dep" description="Download run time third party dependencies">
<get dest="${lib.runtime}" usetimestamp="true" skipexisting="true">
<url url="https://olex-secure.openlogic.com/content/openlogic/jetty/9.1.1/jetty-distribution-9.1.1.v20140108.zip" />
</get>
<unzip src="${lib.runtime}/jetty-distribution-9.1.1.v20140108.zip" dest="${lib.runtime}">
<patternset>
<include name="jetty-distribution-9.1.1.v20140108/lib/jetty-client-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/jetty-annotations-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/jetty-continuation-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/jetty-http-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/jetty-io-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/jetty-proxy-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/jetty-security-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/jetty-server-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/jetty-servlet-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/jetty-servlets-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/jetty-util-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/jetty-webapp-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/jetty-xml-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/servlet-api-3.1.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/websocket/websocket-api-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/websocket/websocket-client-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/websocket/websocket-common-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/websocket/websocket-server-9.1.1.v20140108.jar"/>
<include name="jetty-distribution-9.1.1.v20140108/lib/websocket/websocket-servlet-9.1.1.v20140108.jar"/>
</patternset>
<mapper type="flatten"/>
</unzip>
</target>
<target name="get-atmosphere-dep" description="Download atmosphere framework runtime, java and javascript dependencies">
<get dest="${lib.runtime}" usetimestamp="true" skipexisting="true">
<url url="https://oss.sonatype.org/service/local/repositories/releases/content/org/atmosphere/atmosphere-runtime/2.1.0/atmosphere-runtime-2.1.0.jar" />
<url url="https://oss.sonatype.org/service/local/repositories/releases/content/org/atmosphere/atmosphere-guice/0.8.3/atmosphere-guice-0.8.3.jar" />
<url url="https://oss.sonatype.org/service/local/repositories/releases/content/eu/infomas/annotation-detector/3.0.0/annotation-detector-3.0.0.jar" />
<url url="https://oss.sonatype.org/service/local/repositories/releases/content/org/slf4j/slf4j-simple/1.6.1/slf4j-simple-1.6.1.jar" />
<url url="https://oss.sonatype.org/service/local/repositories/releases/content/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar" />
<url url="https://oss.sonatype.org/service/local/repositories/releases/content/org/atmosphere/client/javascript/2.1.5/javascript-2.1.5.war" />
</get>
<!-- Add Atmosphere Framework javascript client to the server classpath -->
<unzip src="${lib.runtime}/javascript-2.1.5.war" dest="${lib.runtime}/javascript-2.1.5" >
<patternset>
<include name="javascript/atmosphere-min.js"/>
<include name="javascript/atmosphere.js"/>
</patternset>
</unzip>
<copy file="${lib.runtime}/javascript-2.1.5/javascript/atmosphere.js" todir="${src.dir}/org/waveprotocol/box/server/rpc/atmosphere" />
<copy file="${lib.runtime}/javascript-2.1.5/javascript/atmosphere-min.js" todir="${src.dir}/org/waveprotocol/box/server/rpc/atmosphere" />
</target>
<target name="get-third-party-runtime" depends="get-jetty-dep, get-atmosphere-dep" description="Download run time third party dependencies">
<get dest="${lib.runtime}" usetimestamp="true" skipexisting="true">
<url url="http://central.maven.org/maven2/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" />
<url url="http://central.maven.org/maven2/org/bouncycastle/bcprov-jdk16/1.45/bcprov-jdk16-1.45.jar" />
<url url="http://central.maven.org/maven2/commons-fileupload/commons-fileupload/1.2.2/commons-fileupload-1.2.2.jar" />
<url url="https://archive.apache.org/dist/commons/fileupload/source/commons-fileupload-1.2.2-src.zip" />
<url url="http://central.maven.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2.jar" />
<url url="http://central.maven.org/maven2/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" />
<url url="http://central.maven.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.jar" />
<url url="https://archive.apache.org/dist/commons/codec/source/commons-codec-1.4-src.zip" />
<url url="http://central.maven.org/maven2/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar" />
<url url="http://central.maven.org/maven2/commons-configuration/commons-configuration/1.6/commons-configuration-1.6.jar" />
<url url="http://central.maven.org/maven2/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar" />
<url url="https://archive.apache.org/dist/httpcomponents/commons-httpclient/source/commons-httpclient-3.1-src.zip" />
<url url="http://central.maven.org/maven2/commons-lang/commons-lang/2.5/commons-lang-2.5.jar" />
<url url="http://central.maven.org/maven2/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-api.jar" />
<url url="http://central.maven.org/maven2/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar" />
<url url="http://central.maven.org/maven2/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" />
<url url="http://central.maven.org/maven2/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar" />
<url url="http://central.maven.org/maven2/com/google/guava/guava/15.0/guava-15.0.jar" />
<url url="http://central.maven.org/maven2/com/google/guava/guava-gwt/15.0/guava-gwt-15.0.jar"/>
<url url="http://central.maven.org/maven2/com/google/inject/extensions/guice-assistedinject/3.0/guice-assistedinject-3.0.jar" />
<url url="http://central.maven.org/maven2/com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0.jar" />
<url url="http://central.maven.org/maven2/com/google/inject/guice/3.0/guice-3.0.jar" />
<url url="http://central.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar" />
<url url="http://central.maven.org/maven2/com/google/gxp/google-gxp/0.2.4-beta/google-gxp-0.2.4-beta.jar" />
<url url="http://people.apache.org/repo/m1-ibiblio-rsync-repository/javax.jdo/jars/jdo2-api-2.2.jar" />
<url url="http://central.maven.org/maven2/org/jdom/jdom/1.1.3/jdom-1.1.3.jar" />
<url url="http://central.maven.org/maven2/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar" />
<url url="http://central.maven.org/maven2/jline/jline/0.9.94/jline-0.9.94.jar" />
<url url="http://central.maven.org/maven2/joda-time/joda-time/1.6/joda-time-1.6.jar" />
<url url="http://central.maven.org/maven2/org/apache/lucene/lucene-core/3.5.0/lucene-core-3.5.0.jar" />
<url url="http://repo1.maven.org/maven2/org/mongodb/mongo-java-driver/2.11.2/mongo-java-driver-2.11.2.jar" />
<url url="https://oauth.googlecode.com/svn/code/maven/net/oauth/core/oauth-provider/20100527/oauth-provider-20100527-sources.jar" />
<url url="https://oauth.googlecode.com/svn/code/maven/net/oauth/core/oauth/20100527/oauth-20100527.jar" />
<url url="https://oauth.googlecode.com/svn/code/maven/net/oauth/core/oauth-provider/20100527/oauth-provider-20100527.jar" />
<url url="https://oauth.googlecode.com/svn/code/maven/net/oauth/core/oauth-consumer/20100527/oauth-consumer-20100527.jar" />
<url url="http://central.maven.org/maven2/com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.jar" />
<url url="https://protobuf-java-format.googlecode.com/files/protobuf-format-java-1.1.jar" />
<url url="http://central.maven.org/maven2/org/igniterealtime/tinder/1.2.1/tinder-1.2.1.jar" />
<url url="http://central.maven.org/maven2/xpp3/xpp3/1.1.4c/xpp3-1.1.4c.jar" />
<url url="http://central.maven.org/maven2/xpp3/xpp3_xpath/1.1.4c/xpp3_xpath-1.1.4c.jar" />
<url url="http://repo1.maven.org/maven2/org/gnu/inet/libidn/1.15/libidn-1.15.jar" />
<url url="http://archiva.comunes.org/repository/comunes-snapshots/cc/kune/gwt-initials-avatars-shared/1.0-SNAPSHOT/gwt-initials-avatars-shared-1.0-20140324.102812-16.jar" />
<url url="http://archiva.comunes.org/repository/comunes-snapshots/cc/kune/gwt-initials-avatars-shared/1.0-SNAPSHOT/gwt-initials-avatars-shared-1.0-20140324.102812-16-sources.jar" />
<url url="http://archiva.comunes.org/repository/comunes-snapshots/cc/kune/gwt-initials-avatars-server/1.0-SNAPSHOT/gwt-initials-avatars-server-1.0-20140324.102825-10.jar" />
<url url="http://central.maven.org/maven2/com/typesafe/config/1.2.1/config-1.2.1.jar" />
<url url="http://central.maven.org/maven2/xerces/xerces/2.4.0/xerces-2.4.0.jar" />
</get>
<get dest="${lib.runtime}/whack_1_0_0.zip" usetimestamp="true" skipexisting="true">
<url url="http://www.igniterealtime.org/downloadServlet?filename=whack/whack_1_0_0.zip" />
</get>
<unzip src="${lib.runtime}/whack_1_0_0.zip" dest="${lib.runtime}">
<patternset>
<include name="whack_1_0_0/whack.jar" />
</patternset>
<mapper type="flatten"/>
</unzip>
</target>
<target name="get-third-party-test" description="Download testing third party dependencies">
<get dest="${lib.test}" usetimestamp="true" skipexisting="true">
<url url="http://central.maven.org/maven2/org/apache/ant/ant-junit/1.7.0/ant-junit-1.7.0.jar" />
<url url="http://download.forge.objectweb.org/asm/asm-3.2.jar" />
<url url="http://central.maven.org/maven2/cglib/cglib/2.2/cglib-2.2.jar" />
<url url="http://central.maven.org/maven2/emma/emma/2.0.5312/emma-2.0.5312.jar" />
<url url="http://central.maven.org/maven2/emma/emma_ant/2.1.5320/emma_ant-2.1.5320.jar" />
<url url="https://hamcrest.googlecode.com/files/hamcrest-all-1.2.jar" />
<url url="http://central.maven.org/maven2/org/jmock/jmock-junit3/2.6.0/jmock-junit3-2.6.0.jar" />
<url url="http://central.maven.org/maven2/org/jmock/jmock/2.6.0/jmock-2.6.0.jar" />
<url url="http://central.maven.org/maven2/junit/junit/4.10/junit-4.10.jar" />
<url url="http://central.maven.org/maven2/org/mockito/mockito-all/1.9.5/mockito-all-1.9.5.jar" />
</get>
</target>
<target name="get-third-party-release-dep" depends="init" description="Download release tool third party dependencies">
<get dest="${lib.release}" usetimestamp="true" skipexisting="true">
<url url="http://apache.spd.co.il/creadur/apache-rat-0.10/apache-rat-0.10-bin.zip" />
</get>
<unzip src="${lib.release}/apache-rat-0.10-bin.zip" dest="${lib.release}">
<patternset>
<include name="apache-rat-0.10/apache-rat-0.10.jar"/>
</patternset>
<mapper type="flatten"/>
</unzip>
</target>
<target name="get-third-party-solr-dep" depends="init" description="Download Solr third party dependencies.">
<get dest="${lib.solr}" usetimestamp="true" skipexisting="true">
<url url="http://apache.spd.co.il/lucene/solr/4.9.1/solr-4.9.1.zip" />
</get>
<unzip src="${lib.solr}/solr-4.9.1.zip" dest="${lib.solr}">
<patternset>
<include name="solr-4.9.1/example/"/>
</patternset>
</unzip>
</target>
<target name="audit-licenses" depends="get-third-party-release-dep" description="Run the Apache Rat - release audit tool.">
<taskdef resource="org/apache/rat/anttasks/antlib.xml">
<classpath>
<pathelement location="${lib.release}/apache-rat-0.10.jar"/>
</classpath>
</taskdef>
<report>
<fileset dir="src"/>
</report>
</target>
<target name="doc" depends="stage" description="Builds the Java documentation for the mode, protocol, and Wave in a Box">
<javadoc sourcepath="${src.dir}" destdir="${docs.dir}" linksource="yes" author="yes" protected="yes"
windowtitle="${ant.project.name} Documentation">
<classpath>
<pathelement location="${staging.dir}" />
<path refid="libpath"/>
<path location="${build.proto.dir}"/>
</classpath>
<doctitle>${ant.project.name}</doctitle>
<footer>&lt;a href="http://www.waveprotocol.org/"&gt;Wave Project&lt;a/&gt;</footer>
</javadoc>
</target>
</project>