<?xml version="1.0" encoding="UTF-8"?>
<!--
 ! 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.
 !-->

<!-- ################################################################## -->
<!-- ##                                                                 -->
<!-- ## Building Apache River                                           -->
<!-- ## _____________________                                           -->
<!-- ##                                                                 -->
<!-- ## Refer to doc/build.html to obtain detailed instructions for     -->
<!-- ##	building the Apache River source distribution.                  -->
<!-- ##                                                                 -->
<!-- ################################################################## -->
<project name="river" basedir="." default="all.build"
        xmlns:artifact="antlib:org.apache.maven.artifact.ant">

    <description>Apache River is a project furthering the development
        and advancement of Jini technology.</description>
        
    <!-- import common settings and macros -->
    <import file="common.xml"/>
    
    <!-- Distribution settings -->
    <property name="bin.tar.bundle" location="${dist}/${product.name}-bin.tar.gz"/>
    <property name="bin.zip.bundle" location="${dist}/${product.name}-bin.zip"/>
    <property name="src.tar.bundle" location="${dist}/${product.name}-src.tar.gz"/>
    <property name="src.zip.bundle" location="${dist}/${product.name}-src.zip"/>

    <!-- javadoc options -->
    <property name="javadoc.doc-title" value="${product.title} API Documentation"/>
    <property name="javadoc.win-title" value="${javadoc.doc-title}"/>
    <property name="javadoc.spec.doc-title" value="${product.title} Specification-only API Documentation"/>
    <property name="javadoc.spec.win-title" value="${javadoc.spec.doc-title}"/>

    <path id="javadoc.classpath" refid="river.classes"/>

    <target name="copy-resources"
		description="Copies various resources directories to the classes dir."
		depends="start.copy-resources, tools.copy-resources">
    </target>

    <target name="release" description="Create source and binary release packages"
		depends="release-src, release-bin">
    </target>

    <fileset id="river.bin.files" dir="${basedir}">
        <include name="index.html"/>
        <include name="DISCLAIMER"/>
        <include name="LICENSE"/>
        <include name="NOTICE"/>
        <include name="${doc}/arch2_0.html"/>
        <include name="${doc}/info-index.html"/>
        <include name="${doc}/manpages-index.html"/>
        <include name="${doc}/proxypreparation.pdf"/>
        <include name="${doc}/release-notes/**"/>
        <exclude name="${doc}/release-notes/new.html"/>
        <include name="${doc}/simpleproxyverification.pdf"/>
        <include name="${doc}/smartproxyverification.pdf"/>
        <include name="${doc}/spec-index.html"/>
        <include name="${doc}/specs/**"/>
        <include name="${doc.api}/**"/>
        <include name="${lib}/**"/>
        <include name="${lib-dl}/**"/>
        <include name="${lib-ext}/**"/>
        <include name="${configentry}/**"/>
    </fileset>

    <fileset id="examples.bin.files" dir="${basedir}/examples">
        <include name="**/${lib}/**"/>
        <include name="**/config/**"/>
        <exclude name="**/config/META-INF/"/>
        <include name="**/prebuiltkeys/**"/>
        <include name="**/scripts/*.bat"/>
        <include name="**/${doc}/**"/>
        <include name="**/*.html"/>
    </fileset>
    
    <fileset id="examples.bin.exec.files" dir="${basedir}/examples">
        <include name="**/scripts/*.sh"/>
    </fileset>

    <!-- TODO create separate bin distribution for the qa tests? -->
    <!--<fileset id="qa.bin.files" dir="${basedir}/qa">
        <include name="${lib}/**"/>
        <include name="${lib-ext}/**"/>
        <include name="${doc}/**"/>
        <include name="harness/**"/>
        <include name="README.txt"/>
    </fileset>-->

    <target name="release-bin" description="Create a binary release"
		depends="all.build">
        <mkdir dir="${dist.dir}"/>
        <delete file="${bin.zip.bundle}"/>
        <zip destfile="${bin.zip.bundle}" roundup="yes">
            <zipfileset prefix="${product.name}" refid="river.bin.files" />
            <zipfileset prefix="${product.name}/examples" refid="examples.bin.files" />
            <zipfileset prefix="${product.name}/examples"
                refid="examples.bin.exec.files" filemode="755"/>
            <!--<zipfileset prefix="${product.name}/qa" refid="qa.bin.files" />-->
        </zip>
        <delete file="${bin.tar.bundle}"/>
        <tar destfile="${bin.tar.bundle}" compression="gzip" longfile="gnu">
            <tarfileset prefix="${product.name}" refid="river.bin.files" />
            <tarfileset prefix="${product.name}/examples" refid="examples.bin.files" />
            <tarfileset prefix="${product.name}/examples"
                refid="examples.bin.exec.files" filemode="755"/>
            <!--<tarfileset prefix="${product.name}/qa" refid="qa.bin.files" />-->
        </tar>
    </target>

    <fileset id="river.src.files" dir="${basedir}">
        <include name="index.html"/>
        <include name="build.xml"/>
        <include name="common.xml"/>
        <include name="DISCLAIMER"/>
        <include name="LICENSE"/>
        <include name="NOTICE"/>
        <include name="${doc}/info-index.html"/>
        <include name="${doc}/build.html"/>
        <include name="${doc}/j2se/**"/>
        <include name="${doc}/manpages-index.html"/>
        <include name="${doc}/proxypreparation.pdf"/>
        <include name="${doc}/release-notes/**"/>
        <exclude name="${doc}/release-notes/new.html"/>
        <include name="${doc}/simpleproxyverification.pdf"/>
        <include name="${doc}/smartproxyverification.pdf"/>
        <include name="${doc}/spec-index.html"/>
        <include name="${doc}/specs/html/**"/>
        <include name="${src}/**"/>
        <exclude name="${src}/**/*.sh"/>
        <include name="${lib}/${asm.jars.pattern}"/>
        <include name="${poms}/**"/>
        <include name="${test.src}/**"/>
        <include name="${test.lib}/**"/>
    </fileset>

    <fileset id="examples.src.files" dir="${basedir}/examples">
        <include name="**"/>
        <exclude name="**/${lib}/"/>
        <exclude name="**/${build}/"/>
        <exclude name="**/prebuiltkeys/"/>
        <exclude name="**/${doc}/"/>
    </fileset>

    <fileset id="examples.src.exec.files" dir="${basedir}/examples">
        <include name="**/scripts/*.sh"/>
    </fileset>

    <fileset id="qa.src.files" dir="${basedir}/qa">
        <include name="${src}/**"/>
        <include name="harness/**"/>
        <include name="jtreg/**"/>
        <exclude name="jtreg/JT*"/>
        <include name="${doc}/**"/>
        <exclude name="${doc.api}/"/>
        <include name="build.xml"/>
        <include name="README*.txt"/>
    </fileset>

    <target name="release-src" description="Create a source release">
        <mkdir dir="${dist.dir}"/>
        <delete file="${src.zip.bundle}"/>
        <zip destfile="${src.zip.bundle}" roundup="yes">
            <zipfileset prefix="${product.name}" refid="river.src.files"/>
            <zipfileset prefix="${product.name}/examples" refid="examples.src.files"/>
            <zipfileset prefix="${product.name}/examples"
                    refid="examples.src.exec.files" filemode="755"/>
            <zipfileset prefix="${product.name}/qa" refid="qa.src.files" />
        </zip>
        <delete file="${src.tar.bundle}"/>
        <tar destfile="${src.tar.bundle}" compression="gzip" longfile="gnu">
            <tarfileset prefix="${product.name}" refid="river.src.files" />
            <tarfileset prefix="${product.name}/examples"
                    refid="examples.src.files" />
            <tarfileset prefix="${product.name}/examples"
                    refid="examples.src.exec.files" filemode="755"/>
            <tarfileset prefix="${product.name}/qa" refid="qa.src.files" />
        </tar>
    </target>

    <target name="prep" depends="deps" 
            description="Create build directory structure">
        <mkdir dir="${build.dir}"/>
        <mkdir dir="${build.classes.dir}"/>
        <mkdir dir="${build.deps.dir}"/>
        <mkdir dir="${configentry.dir}"/>
        <mkdir dir="${doc.api.dir}"/>
        <mkdir dir="${doc.spec.api.dir}"/>
        <mkdir dir="${lib-dl.dir}"/>
        <mkdir dir="${lib-ext.dir}"/>
    </target>

    <target name="deps" description="Verify build dependencies">
        <!-- verify JDK version	-->
        <condition property="unsupported.jdk">
            <or>
                <equals arg1="${ant.java.version}" arg2="1.1"/>
                <equals arg1="${ant.java.version}" arg2="1.2"/>
                <equals arg1="${ant.java.version}" arg2="1.3"/>
            </or>
        </condition>
        <fail if="unsupported.jdk">Building ${product.name} requires Java 2 SDK 1.4 or greater.</fail>
    </target>

    <target name="doc" description="Generate javadoc documentation"
		depends="compile">
        <delete dir="${doc.api.dir}" quiet="true"/>
        <mkdir  dir="${doc.api.dir}"/>
        <javadoc author="true"
			 breakiterator="yes"
			 destdir="${doc.api.dir}"
			 doctitle="${javadoc.doc-title}"
			 linkoffline="${jdk.doc.url} ${jdk.packages}"
			 serialwarn="yes"
			 source="5"
			 use="true"
			 version="true"
			 windowtitle="${javadoc.win-title}">
            <tag name="com.sun.jini.impl"
			     enabled="true"
			     scope="packages,types"
			     description="Implementation Specifics:"/>
            <bottom><![CDATA[${api.copyright}]]></bottom>
            <classpath refid="javadoc.classpath"/>
            <sourcepath>
                <pathelement path="${src.dir}"/>
            </sourcepath>
            <fileset dir="${src.dir}" includes="com/sun/jini/mahalo/MahaloPermission.java"/>
            <package name="com.sun.jini.admin"/>
            <package name="com.sun.jini.config"/>
            <package name="com.sun.jini.discovery"/>
            <package name="com.sun.jini.discovery.kerberos"/>
            <package name="com.sun.jini.discovery.plaintext"/>
            <package name="com.sun.jini.discovery.ssl"/>
            <package name="com.sun.jini.discovery.x500.sha1withdsa"/>
            <package name="com.sun.jini.discovery.x500.sha1withrsa"/>
            <package name="com.sun.jini.example.browser"/>
            <package name="com.sun.jini.fiddler"/>
            <package name="com.sun.jini.landlord"/>
            <package name="com.sun.jini.lease"/>
            <package name="com.sun.jini.logging"/>
            <package name="com.sun.jini.lookup.entry"/>
            <package name="com.sun.jini.mercury"/>
            <package name="com.sun.jini.norm"/>
            <package name="com.sun.jini.outrigger"/>
            <package name="com.sun.jini.outrigger.snaplogstore"/>
            <package name="com.sun.jini.phoenix"/>
            <package name="com.sun.jini.proxy"/>
            <package name="com.sun.jini.reggie"/>
            <package name="com.sun.jini.reliableLog"/>
            <package name="com.sun.jini.resource"/>
            <package name="com.sun.jini.start"/>
            <package name="com.sun.jini.thread"/>
            <package name="com.sun.jini.tool"/>
            <package name="com.sun.jini.tool.envcheck"/>
            <package name="com.sun.jini.tool.classdepend"/>
            <package name="net.jini.activation"/>
            <package name="net.jini.admin"/>
            <package name="net.jini.config"/>
            <package name="net.jini.constraint"/>
            <package name="net.jini.core.constraint"/>
            <package name="net.jini.core.discovery"/>
            <package name="net.jini.core.entry"/>
            <package name="net.jini.core.event"/>
            <package name="net.jini.core.lease"/>
            <package name="net.jini.core.lookup"/>
            <package name="net.jini.core.transaction"/>
            <package name="net.jini.core.transaction.server"/>
            <package name="net.jini.discovery"/>
            <package name="net.jini.entry"/>
            <package name="net.jini.event"/>
            <package name="net.jini.export"/>
            <package name="net.jini.id"/>
            <package name="net.jini.iiop"/>
            <package name="net.jini.io"/>
            <package name="net.jini.io.context"/>
            <package name="net.jini.jeri"/>
            <package name="net.jini.jeri.connection"/>
            <package name="net.jini.jeri.http"/>
            <package name="net.jini.jeri.kerberos"/>
            <package name="net.jini.jeri.ssl"/>
            <package name="net.jini.jeri.tcp"/>
            <package name="net.jini.jrmp"/>
            <package name="net.jini.lease"/>
            <package name="net.jini.loader"/>
            <package name="net.jini.loader.pref"/>
            <package name="net.jini.lookup"/>
            <package name="net.jini.lookup.entry"/>
            <package name="net.jini.security"/>
            <package name="net.jini.security.policy"/>
            <package name="net.jini.security.proxytrust"/>
            <package name="org.apache.river.security"/>
            <package name="org.apache.river.imp.security.policy.se"/>
            <package name="org.apache.river.imp.security.policy.cdc"/>
            <package name="org.apache.river.imp.security.policy.spi"/>
            <package name="org.apache.river.imp.security.policy.util"/>  
            <package name="org.apache.river.imp.util"/>
            <package name="net.jini.space"/>
            <package name="net.jini.url.file"/>
            <package name="net.jini.url.httpmd"/>
            <package name="net.jini.url.https"/>
            <package name="org.apache.river.api.security"/>
            <package name="org.apache.river.api.services.lease"/>
            <package name="org.apache.river.api.throwable.lease"/>
            <package name="org.apache.river.api.throwable.rmi"/>
            <package name="org.apache.river.api.util"/>
        </javadoc>
        <mkdir dir="${doc.api.dir}/doc-files"/>
        <copy file="NOTICE" tofile="${doc.api.dir}/doc-files/NOTICE"/>
    </target>

    <target name="spec-doc"
		description="Generates specification-only javadoc documentation"
		depends="compile">
        <delete dir="${doc.spec.api.dir}" quiet="true"/>
        <mkdir  dir="${doc.spec.api.dir}"/>
        <javadoc author="true"
			 breakiterator="yes"
			 destdir="${doc.spec.api.dir}"
			 doctitle="${javadoc.spec.doc-title}"
			 linkoffline="${jdk.doc.url} ${jdk.packages}"
			 serialwarn="yes"
			 source="5"
			 use="true"
			 version="true"
			 windowtitle="${javadoc.spec.win-title}">
            <tag name="com.sun.jini.impl"
			     enabled="false"
			     description="ignore"/>
            <classpath refid="javadoc.classpath"/>
            <sourcepath>
                <pathelement path="${src.dir}"/>
            </sourcepath>
            <package name="net.jini.activation"/>
            <package name="net.jini.config"/>
            <package name="net.jini.constraint"/>
            <package name="net.jini.core.constraint"/>
            <package name="net.jini.core.discovery"/>
            <package name="net.jini.core.entry"/>
            <package name="net.jini.core.event"/>
            <package name="net.jini.core.lease"/>
            <package name="net.jini.core.lookup"/>
            <package name="net.jini.core.transaction"/>
            <package name="net.jini.core.transaction.server"/>
            <package name="net.jini.entry"/>
            <package name="net.jini.export"/>
            <package name="net.jini.id"/>
            <package name="net.jini.iiop"/>
            <package name="net.jini.io"/>
            <package name="net.jini.io.context"/>
            <package name="net.jini.jeri"/>
            <package name="net.jini.jeri.connection"/>
            <package name="net.jini.jeri.http"/>
            <package name="net.jini.jeri.kerberos"/>
            <package name="net.jini.jeri.ssl"/>
            <package name="net.jini.jeri.tcp"/>
            <package name="net.jini.jrmp"/>
            <package name="net.jini.loader"/>
            <package name="net.jini.loader.pref"/>
            <package name="net.jini.security"/>
            <package name="net.jini.security.policy"/>
            <package name="net.jini.security.proxytrust"/>
            <package name="net.jini.space"/>
            <package name="net.jini.url.file"/>
            <package name="net.jini.url.httpmd"/>
            <package name="net.jini.url.https"/>
            <package name="org.apache.river.api.security"/>
            <package name="org.apache.river.api.services.lease"/>
            <package name="org.apache.river.api.throwable.lease"/>
            <package name="org.apache.river.api.throwable.rmi"/>
            <package name="org.apache.river.api.util"/>
            
        </javadoc>
        <mkdir dir="${doc.spec.api.dir}/doc-files"/>
        <copy file="NOTICE" tofile="${doc.spec.api.dir}/doc-files/NOTICE"/>
    </target>

    <target name="jars"	description="Generates JAR files"
		depends="river.jars,
            toolswrappers.jars,
            services.jars,
            browser.jars" />

    <target name="river.jars" depends="stubs,
            jini-core.jar,
			jini-ext.jar,
			jsk-dl.jar,
			jsk-lib.jar,
			jsk-resources.jar,
			jsk-platform.jar,
			jsk-policy.jar,
                        concurrent-policy-util.jar,
			sun-util.jar" />

    <target name="services.jars" depends="toolswrappers.jars,
            destroy.jar,
            fiddler.jar,
            fiddler-dl.jar,
            group.jar,
            group-dl.jar,
            mahalo.jar,
            mahalo-dl.jar,
            mercury.jar,
            mercury-dl.jar,
            norm.jar,
            norm-dl.jar,
            outrigger.jar,
            outrigger-dl.jar,
            outrigger-snaplogstore.jar,
            phoenix.jar,
            phoenix-dl.jar,
            phoenix-group.jar,
            phoenix-init.jar,
            reggie.jar,
            reggie-dl.jar,
            sdm-dl.jar,
            serviceui.jar,
            sharedvm.jar,
            start.jar" />

    <target name="browser.jars" depends="services.jars,
            browser.jar,
            browser-dl.jar" />

    <target name="compile" description="Build classes"
		depends="copy-resources">
        <javac-cmd source.dir="${src.dir}" dest.dir="${build.classes.dir}">
            <classpath refid="asm.classpath" />
        </javac-cmd>
    </target>

    <target name="install-policy"
		description="Installs jsk-policy.jar into the JRE extensions directory.">
        <copy file="${lib-ext.dir}/jsk-policy.jar" todir="${jre.ext.dir}"/>
    </target>
    
    <target name="uninstall-policy"
		description="Removes jsk-policy.jar from the JRE extensions directory.">
        <delete file="${jre.ext.dir}/jsk-policy.jar"/>
    </target>

    <target name="stubs" description="Generate stubs"
		depends="compile, browser.stubs, fiddler.stubs, mahalo.stubs, 
            mercury.stubs, norm.stubs, outrigger.stubs, phoenix.stubs,
            reggie.stubs, sdm.stubs, start.stubs">
    </target>

    <target name="clean" depends="clean-dist, clean-jars"
		description="Removes all files and dirs created by the build">
        <delete dir="${build.dir}" quiet="true"/>
        <delete dir="${configentry.dir}" quiet="true"/>
        <delete dir="${doc.api.dir}" quiet="true"/>
        <delete dir="${doc.spec.api.dir}" quiet="true"/>
    </target>

    <target name="clean-dist"
		description="Deletes the distribution directory.">
        <delete dir="${dist.dir}" quiet="true"/>
    </target>

    <target name="clean-jars"
		description="Deletes the lib, lib-dl, and lib-ext directories.">
        <delete dir="${lib.dir}" quiet="true">
            <exclude name="${asm.jars.pattern}"/>
        </delete>
        <delete dir="${lib-dl.dir}"	quiet="true"/>
        <delete dir="${lib-ext.dir}" quiet="true"/>
    </target>

    <target name="toolswrappers.jars" description="Generate tools JARS"
		depends="tools.jar,
             jarwrapper.jar,
			 checkconfigurationfile.jar,
			 checkser.jar,
			 classdep.jar,
			 classserver.jar,
			 computedigest.jar,
			 computehttpmdcodebase.jar,
			 jsk-debug-policy.jar,
			 preferredlistgen.jar,
			 envcheck.jar">
    </target>

    <target name="checkconfigurationfile.jar"
		depends="jarwrapper.jar,start.jar">
        <delete file="${lib.dir}/checkconfigurationfile.jar" quiet="true"/>
        <jarwrapper>
            <arg value="-manifest=${src.manifest.dir}/checkconfigurationfile.mf"/>
            <arg path="${lib.dir}/checkconfigurationfile.jar"/>
            <arg path="${lib.dir}"/>
            <arg value="tools.jar"/>
        </jarwrapper>
    </target>

    <target name="checkser.jar"	depends="jarwrapper.jar">
        <delete file="${lib.dir}/checkser.jar" quiet="true"/>
        <jarwrapper>
            <arg value="-manifest=${src.manifest.dir}/checkser.mf"/>
            <arg path="${lib.dir}/checkser.jar"/>
            <arg path="${lib.dir}"/>
            <arg value="tools.jar"/>
        </jarwrapper>
    </target>

    <target name="classdep.jar"	depends="jarwrapper.jar">
        <delete file="${lib.dir}/classdep.jar" quiet="true"/>
        <jarwrapper>
            <arg value="-manifest=${src.manifest.dir}/classdep.mf"/>
            <arg path="${lib.dir}/classdep.jar"/>
            <arg path="${lib.dir}"/>
            <arg value="tools.jar"/>
        </jarwrapper>
    </target>

    <target name="classserver.jar" depends="jarwrapper.jar">
        <delete file="${lib.dir}/classserver.jar" quiet="true"/>
        <jarwrapper>
            <arg path="${lib.dir}/classserver.jar"/>
            <arg path="${lib.dir}"/>
            <arg value="tools.jar"/>
        </jarwrapper>
    </target>

    <target name="computedigest.jar" depends="jarwrapper.jar">
        <delete file="${lib.dir}/computedigest.jar" quiet="true"/>
        <jarwrapper>
            <arg value="-manifest=${src.manifest.dir}/computedigest.mf"/>
            <arg path="${lib.dir}/computedigest.jar"/>
            <arg path="${lib.dir}"/>
            <arg value="tools.jar"/>
        </jarwrapper>
    </target>

    <target name="computehttpmdcodebase.jar" depends="jarwrapper.jar">
        <delete file="${lib.dir}/computehttpmdcodebase.jar" quiet="true"/>
        <jarwrapper>
            <arg value="-manifest=${src.manifest.dir}/computehttpmdcodebase.mf"/>
            <arg path="${lib.dir}/computehttpmdcodebase.jar"/>
            <arg path="${lib.dir}"/>
            <arg value="tools.jar"/>
        </jarwrapper>
    </target>

    <target name="jarwrapper.jar" depends="tools.jar">
        <delete file="${lib.dir}/jarwrapper.jar" quiet="true"/>
        <jarwrapper classpathref="jarwrapper.classes.classpath">
            <arg value="-manifest=${src.manifest.dir}/jarwrapper.mf"/>
            <arg path="${lib.dir}/jarwrapper.jar"/>
            <arg path="${lib.dir}"/>
            <arg value="tools.jar"/>
        </jarwrapper>
    </target>

    <target name="preferredlistgen.jar" depends="jarwrapper.jar">
        <delete file="${lib.dir}/preferredlistgen.jar" quiet="true"/>
        <jarwrapper>
            <arg value="-manifest=${src.manifest.dir}/preferredlistgen.mf"/>
            <arg path="${lib.dir}/preferredlistgen.jar"/>
            <arg path="${lib.dir}"/>
            <arg value="tools.jar"/>
        </jarwrapper>
    </target>

    <target name="envcheck.jar"	depends="jarwrapper.jar">
        <delete file="${lib.dir}/envcheck.jar" quiet="true"/>
        <jarwrapper>
            <arg value="-manifest=${src.manifest.dir}/envcheck.mf"/>
            <arg path="${lib.dir}/envcheck.jar"/>
            <arg path="${lib.dir}"/>
            <arg value="tools.jar"/>
        </jarwrapper>
        <jar destfile="${lib.dir}/envcheck.jar"
	       update="true"
	       index="false">
            <fileset dir="${src.manifest.dir}/tools"
		      includes="META-INF/services/com.sun.jini.tool.envcheck.Plugin"/>
        </jar>
    </target>
    <!-- Scheduled for removal -->
    <target name="jini-core.jar" depends="stubs">
        <delete file="${lib.dir}/jini-core.jar" quiet="true"/>
        <jar destfile="${lib.dir}/jini-core.jar"
		     index="false">
            <fileset dir="${build.classes.dir}"
			 includes="net/jini/core/**"/>
        </jar>
    </target>
    <!-- Scheduled for removal -->
    <target name="jini-ext.jar" depends="stubs">
        <property name="jini-ext.deps" location="${build.deps.dir}/jini-ext.deps"/>
        <classdep output="${jini-ext.deps}"
                classpathref="classdep.classes.classpath">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg line="-in com.sun.jini"/>
            <arg line="-in net.jini"/>
            <arg line="-out net.jini.core"/>
            <arg line="-prune net.jini.core"/>
            <arg path="${build.classes.dir}/net/jini"/>
            <arg path="${build.classes.dir}/com/sun/jini/discovery"/>
        </classdep>
        <delete file="${lib.dir}/jini-ext.jar" quiet="true"/>
        <jar destfile="${lib.dir}/jini-ext.jar"
		     index="false"
		     manifest="${src.manifest.dir}/jini-ext.mf">
            <fileset dir="${build.classes.dir}"  includesfile="${jini-ext.deps}"/>
        </jar>
    </target>
    

    <target name="jsk-debug-policy.jar" depends="stubs">
        <property name="jsk-debug-policy.deps" location="${build.deps.dir}/jsk-debug-policy.deps"/>
        <classdep output="${jsk-debug-policy.deps}"
                classpathref="classdep.classes.classpath">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.tool"/>
            <arg value="com.sun.jini.tool.DebugDynamicPolicyProvider"/>
            <arg value="com.sun.jini.tool.ProfilingSecurityManager"/>
        </classdep>
        <delete file="${lib.dir}/jsk-debug-policy.jar" quiet="true"/>
        <jar destfile="${lib.dir}/jsk-debug-policy.jar"
		     index="false"
		     manifest="${src.manifest.dir}/jsk-debug-policy.mf">
            <fileset dir="${build.classes.dir}"  includesfile="${jsk-debug-policy.deps}"/>
        </jar>
    </target>

    <target name="jsk-dl.jar" depends="stubs">
        <property name="jsk-dl.deps" location="${build.deps.dir}/jsk-dl.deps"/>
        <classdep output="${jsk-dl.deps}"
                classpathref="classdep.classes.classpath">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg line="-in com.sun.jini"/>
            <arg line="-in net.jini"/>
            <arg line="${jskplatform.exclude}"/>
            <arg line="-skip net.jini.lookup.entry.EntryBeans"/>
            <arg path="${build.classes.dir}/com/sun/jini/admin"/>
            <arg path="${build.classes.dir}/com/sun/jini/lease"/>
            <arg path="${build.classes.dir}/com/sun/jini/proxy"/>
            <arg path="${build.classes.dir}/net/jini/admin"/>
            <arg path="${build.classes.dir}/net/jini/entry"/>
            <arg path="${build.classes.dir}/net/jini/event"/>
            <arg path="${build.classes.dir}/net/jini/lookup/entry"/>
            <arg path="${build.classes.dir}/net/jini/space"/>
            <arg value="com.sun.jini.jeri.internal.http.HttpParseException"/>
            <arg value="com.sun.jini.landlord.ConstrainableLandlordLease"/>
            <arg value="com.sun.jini.landlord.ConstrainableLandlordLeaseMap"/>
            <arg value="com.sun.jini.landlord.Landlord"/>
            <arg value="com.sun.jini.landlord.LandlordLease"/>
            <arg value="com.sun.jini.landlord.LandlordLeaseMap"/>
            <arg value="com.sun.jini.landlord.LandlordProxyVerifier"/>
            <arg value="com.sun.jini.logging.Levels"/>
            <arg value="com.sun.jini.lookup.entry.BasicServiceType"/>
            <arg value="com.sun.jini.resource.ServiceConfigurationError"/>
            <arg value="com.sun.jini.start.ServiceProxyAccessor"/>
            <arg value="net.jini.discovery.LookupDiscoveryRegistration"/>
            <arg value="net.jini.discovery.LookupDiscoveryService"/>
            <arg value="net.jini.discovery.LookupUnmarshalException"/>
            <arg value="net.jini.discovery.RemoteDiscoveryEvent"/>
            <arg value="net.jini.lease.LeaseRenewalService"/>
            <arg value="net.jini.lease.LeaseRenewalSet"/>
            <arg value="net.jini.lease.LeaseUnmarshalException"/>
            <arg value="net.jini.lease.RenewalFailureEvent"/>
            <arg value="net.jini.lookup.DiscoveryAdmin"/>
            <arg value="net.jini.lookup.ServiceDiscoveryManager$$LookupCacheImpl$$LookupListener_Stub"/>
        </classdep>
        <delete file="${lib-dl.dir}/jsk-dl.jar" quiet="true"/>
        <jar destfile="${lib-dl.dir}/jsk-dl.jar"
		     index="false">
            <fileset dir="${build.classes.dir}"  includesfile="${jsk-dl.deps}"/>
            <metainf dir="${src.manifest.dir}/jsk-dl/META-INF"/>
        </jar>
    </target>

    <target name="jsk-lib.jar" depends="stubs">
        <property name="jsk-lib.deps" location="${build.deps.dir}/jsk-lib.deps"/>
        <classdep output="${jsk-lib.deps}"
                classpathref="classdep.classes.classpath">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg line="-in com.sun.jini"/>
            <arg line="-in net.jini"/>
            <arg line="${jskplatform.exclude}"/>
            <arg path="${build.classes.dir}/com/sun/jini/admin"/>
            <arg path="${build.classes.dir}/com/sun/jini/config"/>
            <arg path="${build.classes.dir}/com/sun/jini/landlord"/>
            <arg path="${build.classes.dir}/com/sun/jini/lease"/>
            <arg path="${build.classes.dir}/com/sun/jini/lookup/entry"/>
            <arg path="${build.classes.dir}/com/sun/jini/proxy"/>
            <arg path="${build.classes.dir}/com/sun/jini/reliableLog"/>
            <arg path="${build.classes.dir}/com/sun/jini/resource"/>
            <arg path="${build.classes.dir}/com/sun/jini/thread"/>
            <arg path="${build.classes.dir}/net/jini"/>
            <arg value="com.sun.jini.logging.Levels"/>
            <arg value="com.sun.jini.phoenix.ActivationAdmin"/>
            <arg value="com.sun.jini.start.LifeCycle"/>
            <arg value="com.sun.jini.start.ServiceProxyAccessor"/>
        </classdep>
        <delete file="${lib.dir}/jsk-lib.jar" quiet="true"/>
        <jar destfile="${lib.dir}/jsk-lib.jar"
		     index="false">
            <fileset dir="${build.classes.dir}"  includesfile="${jsk-lib.deps}"/>
        </jar>
        <preferredlistgen>
            <arg line="-jar"/>
            <arg path="${lib.dir}/jsk-lib.jar"/>
            <arg line="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg line="-api com.sun.jini.start.LifeCycle"/>
            <arg line="-api com.sun.jini.start.ServiceProxyAccessor"/>
            <classpath refid="river.classes"/>
        </preferredlistgen>
    </target>

    <target name="jsk-platform.jar"	depends="jsk-resources.jar">
        <property name="jsk-platform.deps" location="${build.deps.dir}/jsk-platform.deps"/>
        <classdep output="${jsk-platform.deps}"
                classpathref="classdep.classes.classpath">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg line="-in com.sun.jini"/>
            <arg line="-in net.jini"/>
            <arg line="-in org.apache.river"/>
            <!--The following is left out to avoid multiple classes visible on
            the classpath, if the wrong jar is selected, it may not have
            the appropriate permission if it is outside the jre/lib/ext 
            directory where AllPermission is granted-->
            <arg line="-out org.apache.river.imp.security.policy.se"/>
            <arg line="-out org.apache.river.imp.security.policy.util"/>
            <arg path="${build.classes.dir}/net/jini/activation"/>
            <arg path="${build.classes.dir}/net/jini/config"/>
            <arg path="${build.classes.dir}/net/jini/constraint"/>
            <arg path="${build.classes.dir}/net/jini/core"/>
            <arg path="${build.classes.dir}/net/jini/export"/>
            <arg path="${build.classes.dir}/net/jini/id"/>
            <arg path="${build.classes.dir}/net/jini/iiop"/>
            <arg path="${build.classes.dir}/net/jini/io"/>
            <arg path="${build.classes.dir}/net/jini/jeri"/>
            <arg path="${build.classes.dir}/net/jini/jrmp"/>
            <arg path="${build.classes.dir}/net/jini/loader"/>
            <arg path="${build.classes.dir}/net/jini/security"/>
            <arg path="${build.classes.dir}/net/jini/url"/>
            <arg value="net.jini.discovery.ConstrainableLookupLocator"/>
            <arg value="net.jini.discovery.ConstrainableLookupLocatorTrustVerifier"/>
            <arg value="org.apache.river.api.security.RevokePermission"/>
            <arg path="${build.classes.dir}/com/sun/jini/discovery"/>
            <arg value="com.sun.jini.config.ConfigUtil"/>
            <arg value="com.sun.jini.config.KeyStores"/>
            <arg value="com.sun.jini.logging.LogManager"/>
        </classdep>
        <delete file="${lib.dir}/jsk-platform.jar" quiet="true"/>
        <jar destfile="${lib.dir}/jsk-platform.jar"
		     index="false"
		     manifest="${src.manifest.dir}/jsk-platform.mf">
            <fileset dir="${build.classes.dir}"  includesfile="${jsk-platform.deps}"/>
        </jar>
        <preferredlistgen>
            <arg line="-jar"/>
            <arg path="${lib.dir}/jsk-platform.jar"/>
            <arg line="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg line="-api net/jini/activation/-"/>
            <arg line="-api net/jini/config/-"/>
            <arg line="-api net/jini/constraint/-"/>
            <arg line="-api net/jini/core/-"/>
            <arg line="-api net/jini/export/-"/>
            <arg line="-api net/jini/id/-"/>
            <arg line="-api net/jini/iiop/-"/>
            <arg line="-api net/jini/io/-"/>
            <arg line="-api net/jini/jeri/-"/>
            <arg line="-api net/jini/jrmp/-"/>
            <arg line="-api net/jini/loader/-"/>
            <arg line="-api net/jini/security/-"/>
            <arg line="-api net/jini/url/-"/>
            <arg line="-api net.jini.discovery.ConstrainableLookupLocator"/>
            <arg line="-api net.jini.discovery.ConstrainableLookupLocatorTrustVerifier"/>
            <arg line="-api net.jini.security.AuthenticationPermission$AuthenticationPermissionCollection"/>
            <arg line="-api net.jini.security.GrantPermission$GrantPermissionCollection"/>
            <arg line="-api com/sun/jini/discovery/"/>
            <arg line="-api com/sun/jini/discovery/kerberos/-"/>
            <arg line="-api com/sun/jini/discovery/plaintext/-"/>
            <arg line="-api com/sun/jini/discovery/ssl/-"/>
            <arg line="-api com/sun/jini/discovery/x500/-"/>
            <arg line="-api com.sun.jini.config.ConfigUtil"/>
            <arg line="-api com.sun.jini.config.KeyStores"/>
            <arg line="-api com.sun.jini.logging.LogManager"/>
            <arg line="-api org/apache/river/api/-"/>
            <classpath refid="river.classes"/>
        </preferredlistgen>
    </target>

    <target name="jsk-policy.jar" depends="stubs">
        <property name="jsk-policy.deps" location="${build.deps.dir}/jsk-policy.deps"/>
        <classdep output="${jsk-policy.deps}"
                classpathref="classdep.classes.classpath">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg value="net.jini.security.policy.DynamicPolicyProvider"/>
            <arg value="net.jini.security.policy.PolicyFileProvider"/>
            <arg value="org.apache.river.api.security.RevokePermission"/>
            <arg line="-in com.sun.jini"/>
            <arg line="-in net.jini"/>
            <arg line="-in org.apache.river"/>
        </classdep>
        <delete file="${lib-ext.dir}/jsk-policy.jar" quiet="true"/>
        <jar destfile="${lib-ext.dir}/jsk-policy.jar"
		     index="false">
            <fileset dir="${build.classes.dir}"  includesfile="${jsk-policy.deps}"/>
        </jar>
    </target>

        <target name="concurrent-policy-util.jar" depends="compile">
        <property name="concurrent-policy-util.deps" 
                location="${build.deps.dir}/concurrent-policy-util.deps"/>
        <classdep output="${concurrent-policy-util.deps}"
                classpathref="classdep.classes.classpath">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg value="org.apache.river.imp.security.policy.se.ConcurrentPolicyFile"/>
            <arg value="org.apache.river.imp.security.policy.se.DynamicConcurrentPolicyProvider"/>
            <arg line="-in org.apache.river"/>
            <arg line="-out org.apache.river.api"/>
            <arg line="-out org.apache.river.imp.security.policy.spi"/>
        </classdep>
        <delete file="${lib-ext.dir}/concurrent-policy-util.jar" quiet="true"/>
        <jar destfile="${lib-ext.dir}/concurrent-policy-util.jar"
		     index="false">
            <fileset dir="${build.classes.dir}" 
                includesfile="${concurrent-policy-util.deps}"/>
            <fileset dir="${src.manifest.dir}/concurrent-policy-util"
				 includes="META-INF/services/org.apache.river.imp.security.policy.spi.RevokeableDynamicPolicySpi"/>
        </jar>
    </target>

    <target name="jsk-resources.jar" depends="stubs">
        <delete file="${lib.dir}/jsk-resources.jar" quiet="true"/>
        <jar destfile="${lib.dir}/jsk-resources.jar"
		     index="false">
            <fileset dir="${src.manifest.dir}/jsk-resources"
				 includes="META-INF/services/com.sun.jini.discovery.DiscoveryFormatProvider
					   META-INF/services/java.rmi.server.RMIClassLoaderSpi
					   META-INF/services/net.jini.security.TrustVerifier
					   META-INF/services/net.jini.security.IntegrityVerifier
					   META-INF/services/net.jini.export.ServerContext$$Spi"/>
        </jar>
    </target>
    <!-- Scheduled for removal -->
    <target name="sun-util.jar"	depends="stubs">
        <property name="sun-util.deps" location="${build.deps.dir}/sun-util.deps"/>
        <classdep output="${sun-util.deps}"
                classpathref="classdep.classes.classpath">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg value="com.sun.jini.discovery.ClientSubjectChecker"/>
            <arg value="com.sun.jini.fiddler.FiddlerAdmin"/>
            <arg value="com.sun.jini.outrigger.ConstrainableJavaSpaceAdmin"/>
            <arg value="com.sun.jini.phoenix.ActivationAdmin"/>
            <arg value="com.sun.jini.start.LifeCycle"/>
            <arg value="com.sun.jini.start.ServiceProxyAccessor"/>
            <arg line="-in com.sun.jini"/>
        </classdep>
        <delete file="${lib.dir}/sun-util.jar" quiet="true"/>
        <jar destfile="${lib.dir}/sun-util.jar"
		     duplicate="preserve"
		     index="false">
            <fileset  dir="${build.classes.dir}"  includesfile="${sun-util.deps}"/>
            <fileset  dir="${build.classes.dir}"
			    includes="com/sun/jini/action/**
				      com/sun/jini/admin/**
				      com/sun/jini/collection/**
				      com/sun/jini/config/**
				      com/sun/jini/constants/**
				      com/sun/jini/landlord/**
				      com/sun/jini/lease/**
				      com/sun/jini/logging/**
				      com/sun/jini/lookup/entry/**
				      com/sun/jini/proxy/**
				      com/sun/jini/reliableLog/**
				      com/sun/jini/resource/**
				      com/sun/jini/system/**
				      com/sun/jini/thread/**"/>
        </jar>
    </target>
   
    <target name="sdm-dl.jar" depends="stubs">
        <property name="sdm-dl.deps" location="${build.deps.dir}/sdm-dl.deps"/>
        <classdep output="${sdm-dl.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg line="${jskplatform.exclude}"/>
            <arg line="-in com.sun.jini"/>
            <arg line="-in net.jini"/>
            <arg value="com.sun.jini.proxy.BasicProxyTrustVerifier"/>
            <arg value="net.jini.lookup.ServiceDiscoveryManager$$LookupCacheImpl$$LookupListener_Stub"/>
        </classdep>
        <delete file="${lib-dl.dir}/sdm-dl.jar" quiet="true"/>
        <jar destfile="${lib-dl.dir}/sdm-dl.jar"
		     index="false">
            <fileset dir="${build.classes.dir}"  includesfile="${sdm-dl.deps}"/>
        </jar>
        <preferredlistgen>
            <arg line="-cp"/>
            <arg path="${lib.dir}/jsk-platform.jar"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/sdm-dl.jar"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/jsk-dl.jar"/>
            <arg line="-proxy net.jini.lookup.ServiceDiscoveryManager$$LookupCacheImpl$$LookupListener_Stub"/>
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="sdm.stubs" depends="compile">
        <rmic base="${build.classes.dir}" stubversion="1.2">
            <classpath refid="river.jars"/>
            <include name="net/jini/lookup/ServiceDiscoveryManager$$LookupCacheImpl$$LookupListener.class"/>
        </rmic>
    </target>

    <patternset id="svc-common-entries-set">
        <include name="JoinManager"/>
        <patternset id="dis-common-entries-set">
            <include name="LeaseRenewalManager"/>
            <include name="LookupDiscovery"/>
            <include name="LookupLocatorDiscovery"/>
        </patternset>
    </patternset>

    <macrodef name="create-activatable">
        <attribute name="prefix"/>
        <sequential>
            <echo message="Creating ${configentry.dir}/@{prefix}-activatable"/>
            <concat destfile="${configentry.dir}/@{prefix}-activatable">
                <fileset dir="${src.configentry.dir}">
                    <include name="@{prefix}-activatable"/>
                    <include name="@{prefix}-persistent"/>
                    <include name="@{prefix}-transient"/>
                </fileset>
                <fileset dir="${src.configentry.dir}">
                    <patternset refid="svc-common-entries-set"/>
                </fileset>
            </concat>
        </sequential>
    </macrodef>

    <macrodef name="create-persistent">
        <attribute name="prefix"/>
        <sequential>
            <echo message="Creating ${configentry.dir}/@{prefix}-persistent"/>
            <concat destfile="${configentry.dir}/@{prefix}-persistent">
                <fileset dir="${src.configentry.dir}">
                    <include name="@{prefix}-persistent"/>
                    <include name="@{prefix}-transient"/>
                </fileset>
                <fileset dir="${src.configentry.dir}">
                    <patternset refid="svc-common-entries-set"/>
                </fileset>
            </concat>
        </sequential>
    </macrodef>

    <macrodef name="create-transient">
        <attribute name="prefix"/>
        <sequential>
            <echo message="Creating ${configentry.dir}/@{prefix}-transient"/>
            <concat destfile="${configentry.dir}/@{prefix}-transient">
                <fileset dir="${src.configentry.dir}">
                    <include name="@{prefix}-transient"/>
                </fileset>
                <fileset dir="${src.configentry.dir}">
                    <patternset refid="svc-common-entries-set"/>
                </fileset>
            </concat>
        </sequential>
    </macrodef>

    <target name="configentry"
		depends="prep,
			 browser.configentry,
			 destroy.configentry,
			 fiddler-activatable.configentry,
			 fiddler-persistent.configentry,
			 fiddler-transient.configentry,
			 JoinManager.configentry,
			 LeaseRenewalManager.configentry,
			 LookupDiscovery.configentry,
			 LookupLocatorDiscovery.configentry,
			 mahalo-activatable.configentry,
			 mahalo-persistent.configentry,
			 mahalo-transient.configentry,
			 mercury-activatable.configentry,
			 mercury-persistent.configentry,
			 mercury-transient.configentry,
			 norm-activatable.configentry,
			 norm-persistent.configentry,
			 norm-transient.configentry,
			 outrigger-activatable.configentry,
			 outrigger-persistent.configentry,
			 outrigger-transient.configentry,
			 phoenix.configentry,
			 phoenix-group.configentry,
			 phoenix-stop.configentry,
			 reggie-activatable.configentry,
			 reggie-persistent.configentry,
			 reggie-transient.configentry,
			 ServiceDiscoveryManager.configentry,
			 sharedgroup.configentry,
			 start.configentry,
			 WakeupManager.configentry" description="Populates the configentry directory.">
    </target>

    <target name="dis-common-entries"
		depends="LeaseRenewalManager.configentry,
			 LookupDiscovery.configentry,
			 LookupLocatorDiscovery.configentry">
    </target>

    <target name="svc-common-entries"
		depends="JoinManager.configentry,
			 dis-common-entries">
    </target>

    <target name="browser.configentry"
		depends="dis-common-entries">
        <delete file="${configentry.dir}/browser"/>
        <echo message="Creating ${configentry.dir}/browser"/>
        <concat destfile="${configentry.dir}/browser">
            <fileset dir="${src.configentry.dir}">
                <include name="browser"/>
            </fileset>
            <fileset dir="${src.configentry.dir}">
                <patternset refid="dis-common-entries-set"/>
            </fileset>
        </concat>
    </target>

    <target name="destroy.configentry">
        <delete file="${configentry.dir}/destroy"/>
        <copy   file="${src.configentry.dir}/destroy" todir="${configentry.dir}"/>
    </target>

    <target name="fiddler-activatable.configentry"
		depends="fiddler-persistent.configentry,
			 fiddler-transient.configentry,
			 svc-common-entries">
        <delete file="${configentry.dir}/fiddler-activatable"/>
        <create-activatable prefix="fiddler"/>
    </target>

    <target name="fiddler-persistent.configentry">
        <delete file="${configentry.dir}/fiddler-persistent"/>
        <create-persistent prefix="fiddler"/>
    </target>

    <target name="fiddler-transient.configentry">
        <delete file="${configentry.dir}/fiddler-transient"/>
        <create-transient prefix="fiddler"/>
    </target>

    <target name="JoinManager.configentry">
        <delete file="${configentry.dir}/JoinManager"/>
        <copy   file="${src.configentry.dir}/JoinManager" todir="${configentry.dir}"/>
    </target>

    <target name="LeaseRenewalManager.configentry">
        <delete file="${configentry.dir}/LeaseRenewalManager"/>
        <copy   file="${src.configentry.dir}/LeaseRenewalManager" todir="${configentry.dir}"/>
    </target>

    <target name="LookupDiscovery.configentry">
        <delete file="${configentry.dir}/LookupDiscovery"/>
        <copy   file="${src.configentry.dir}/LookupDiscovery" todir="${configentry.dir}"/>
    </target>

    <target name="LookupLocatorDiscovery.configentry">
        <delete file="${configentry.dir}/LookupLocatorDiscovery"/>
        <copy   file="${src.configentry.dir}/LookupLocatorDiscovery" todir="${configentry.dir}"/>
    </target>

    <target name="mahalo-activatable.configentry">
        <delete file="${configentry.dir}/mahalo-activatable"/>
        <create-activatable prefix="mahalo"/>
    </target>

    <target name="mahalo-persistent.configentry">
        <delete file="${configentry.dir}/mahalo-persistent"/>
        <create-persistent prefix="mahalo"/>
    </target>

    <target name="mahalo-transient.configentry">
        <delete file="${configentry.dir}/mahalo-transient"/>
        <create-transient prefix="mahalo"/>
    </target>

    <target name="mercury-activatable.configentry">
        <delete file="${configentry.dir}/mercury-activatable"/>
        <create-activatable prefix="mercury"/>
    </target>

    <target name="mercury-persistent.configentry">
        <delete file="${configentry.dir}/mercury-persistent"/>
        <create-persistent prefix="mercury"/>
    </target>

    <target name="mercury-transient.configentry">
        <delete file="${configentry.dir}/mercury-transient"/>
        <create-transient prefix="mercury"/>
    </target>

    <target name="norm-activatable.configentry">
        <delete file="${configentry.dir}/norm-activatable"/>
        <create-activatable prefix="norm"/>
    </target>

    <target name="norm-persistent.configentry">
        <delete file="${configentry.dir}/norm-persistent"/>
        <create-persistent prefix="norm"/>
    </target>

    <target name="norm-transient.configentry">
        <delete file="${configentry.dir}/norm-transient"/>
        <create-transient prefix="norm"/>
    </target>

    <target name="outrigger-activatable.configentry">
        <delete file="${configentry.dir}/outrigger-activatable"/>
        <create-activatable prefix="outrigger"/>
    </target>

    <target name="outrigger-persistent.configentry">
        <delete file="${configentry.dir}/outrigger-persistent"/>
        <create-persistent prefix="outrigger"/>
    </target>

    <target name="outrigger-transient.configentry">
        <delete file="${configentry.dir}/outrigger-transient"/>
        <create-transient prefix="outrigger"/>
    </target>

    <target name="phoenix.configentry">
        <delete file="${configentry.dir}/phoenix"/>
        <copy   file="${src.configentry.dir}/phoenix" todir="${configentry.dir}"/>
    </target>

    <target name="phoenix-group.configentry">
        <delete file="${configentry.dir}/phoenix-group"/>
        <copy   file="${src.configentry.dir}/phoenix-group" todir="${configentry.dir}"/>
    </target>

    <target name="phoenix-stop.configentry">
        <delete file="${configentry.dir}/phoenix-stop"/>
        <copy   file="${src.configentry.dir}/phoenix-stop" todir="${configentry.dir}"/>
    </target>

    <target name="reggie-activatable.configentry">
        <delete file="${configentry.dir}/reggie-activatable"/>
        <create-activatable prefix="reggie"/>
    </target>

    <target name="reggie-persistent.configentry">
        <delete file="${configentry.dir}/reggie-persistent"/>
        <create-persistent prefix="reggie"/>
    </target>

    <target name="reggie-transient.configentry">
        <delete file="${configentry.dir}/reggie-transient"/>
        <create-transient prefix="reggie"/>
    </target>

    <target name="ServiceDiscoveryManager.configentry">
        <delete file="${configentry.dir}/ServiceDiscoveryManager"/>
        <copy   file="${src.configentry.dir}/ServiceDiscoveryManager" todir="${configentry.dir}"/>
    </target>

    <target name="sharedgroup.configentry">
        <delete file="${configentry.dir}/sharedgroup"/>
        <copy   file="${src.configentry.dir}/sharedgroup" todir="${configentry.dir}"/>
    </target>

    <target name="start.configentry">
        <delete file="${configentry.dir}/start"/>
        <copy   file="${src.configentry.dir}/start" todir="${configentry.dir}"/>
    </target>

    <target name="WakeupManager.configentry">
        <delete file="${configentry.dir}/WakeupManager"/>
        <copy   file="${src.configentry.dir}/WakeupManager" todir="${configentry.dir}"/>
    </target>

    <target name="serviceui.jar" depends="stubs">
        <delete file="${lib.dir}/serviceui.jar" quiet="true"/>
        <jar destfile="${lib.dir}/serviceui.jar"
		     index="false">
            <fileset dir="${build.classes.dir}">
                <include name="net/jini/lookup/entry/UIDescriptor.class"/>
                <include name="net/jini/lookup/entry/UIDescriptorBean.class"/>
                <include name="net/jini/lookup/ui/**"/>
                <include name="com/artima/lookup/util/**"/>
            </fileset>
        </jar>
    </target>

    <target name="browser.jar" depends="stubs">
        <property name="browser.deps" location="${build.deps.dir}/browser.deps"/>
        <classdep output="${browser.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.example.browser"/>
            <arg value="com.sun.jini.example.browser.Browser"/>
            <arg value="com.sun.jini.example.browser.Browser$$Listener_Stub"/>
            <arg value="com.sun.jini.example.browser.ServiceEditor$$NotifyReceiver_Stub"/>
        </classdep>
        <delete file="${lib.dir}/browser.jar" quiet="true"/>
        <jar destfile="${lib.dir}/browser.jar"
		     index="false"
		     manifest="${src.manifest.dir}/browser.mf">
            <fileset dir="${build.classes.dir}" includesfile="${browser.deps}"/>
        </jar>
    </target>

    <target name="browser-dl.jar" depends="stubs">
        <property name="browser-dl.deps" location="${build.deps.dir}/browser-dl.deps"/>
        <classdep output="${browser-dl.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.example.browser"/>
            <arg value="com.sun.jini.example.browser.Browser$$Listener_Stub"/>
            <arg value="com.sun.jini.example.browser.ServiceEditor$$NotifyReceiver_Stub"/>
            <arg value="com.sun.jini.proxy.BasicProxyTrustVerifier"/>
        </classdep>
        <delete file="${lib-dl.dir}/browser-dl.jar" quiet="true"/>
        <jar destfile="${lib-dl.dir}/browser-dl.jar"
		     index="false">
            <fileset dir="${build.classes.dir}" includesfile="${browser-dl.deps}"/>
        </jar>
        <preferredlistgen>
            <arg line="-cp"/>
            <arg path="${lib.dir}/jsk-platform.jar"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/browser-dl.jar"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/jsk-dl.jar"/>
            <arg line="-proxy com.sun.jini.example.browser.ServiceEditor$$NotifyReceiver_Stub"/>
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="browser.stubs" depends="compile">
        <rmic base="${build.classes.dir}" stubversion="1.2">
            <classpath refid="river.jars"/>
            <include name="com/sun/jini/example/browser/Browser$$Listener.class"/>
            <include name="com/sun/jini/example/browser/ServiceEditor$$NotifyReceiver.class"/>
        </rmic>
    </target>

    <target name="fiddler.jar" depends="stubs">
        <property name="fiddler.deps" location="${build.deps.dir}/fiddler.deps" />
        <classdep output="${fiddler.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.fiddler"/>
            <arg value="com.sun.jini.fiddler.ActivatableFiddlerImpl"/>
            <arg value="com.sun.jini.fiddler.FiddlerPermission"	/>
            <arg value="com.sun.jini.fiddler.FiddlerImpl_Stub"	/>
            <arg value="com.sun.jini.fiddler.NonActivatableFiddlerImpl"	/>
            <arg value="com.sun.jini.fiddler.TransientFiddlerImpl"/>
        </classdep>
        <delete file="${lib.dir}/fiddler.jar" quiet="true" />
        <jar destfile="${lib.dir}/fiddler.jar"
         index="false"
         manifest="${src.manifest.dir}/fiddler.mf">
            <fileset dir="${build.classes.dir}"  includesfile="${fiddler.deps}" />
        </jar>
        <preferredlistgen>
            <arg line="-cp"	/>
            <arg path="${build.classes.dir}"/>
            <arg line="-jar"/>
            <arg path="${lib.dir}/fiddler.jar"/>
            <arg line="-default true" />
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="fiddler-dl.jar" depends="stubs">
        <property name="fiddler-dl.deps" location="${build.deps.dir}/fiddler-dl.deps" />
        <classdep output="${fiddler-dl.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.fiddler"/>
            <arg value="com.sun.jini.fiddler.FiddlerAdminProxy"	/>
            <arg value="com.sun.jini.fiddler.FiddlerImpl$$FiddlerStatus"/>
            <arg value="com.sun.jini.fiddler.FiddlerImpl_Stub"	/>
            <arg value="com.sun.jini.fiddler.FiddlerLease"/>
            <arg value="com.sun.jini.fiddler.FiddlerProxy"/>
            <arg value="com.sun.jini.fiddler.FiddlerRegistration"/>
            <arg value="com.sun.jini.fiddler.ProxyVerifier"/>
            <arg value="com.sun.jini.lookup.entry.BasicServiceType"/>
            <arg value="com.sun.jini.reliableLog.LogException"/>
            <arg value="net.jini.discovery.RemoteDiscoveryEvent"/>
            <arg value="net.jini.lookup.entry.ServiceInfo"/>
        </classdep>
        <delete file="${lib-dl.dir}/fiddler-dl.jar" quiet="true"/>
        <jar destfile="${lib-dl.dir}/fiddler-dl.jar" index="false">
            <fileset dir="${build.classes.dir}"  includesfile="${fiddler-dl.deps}" />
        </jar>
        <preferredlistgen>
            <arg line="-cp"	/>
            <arg path="${build.classes.dir}"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/fiddler-dl.jar"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/jsk-dl.jar"/>
            <arg line="-proxy com.sun.jini.fiddler.FiddlerProxy"/>
            <arg line="-proxy com.sun.jini.fiddler.FiddlerAdminProxy"/>
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="fiddler.stubs" depends="compile">
        <rmic base="${build.classes.dir}" stubversion="1.2">
            <classpath refid="river.jars" />
            <include name="com/sun/jini/fiddler/FiddlerImpl.class" />
        </rmic>
    </target>

    <target name="mahalo.jar" depends="stubs">
        <property name="mahalo.deps" location="${build.deps.dir}/mahalo.deps" />
        <classdep output="${mahalo.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.mahalo"	/>
            <arg value="com.sun.jini.mahalo.ActivatableMahaloImpl"/>
            <arg value="com.sun.jini.mahalo.NonActivatableMahaloImpl"/>
            <arg value="com.sun.jini.mahalo.TransientMahaloImpl"/>
            <arg value="com.sun.jini.mahalo.MahaloPermission"/>
            <arg value="com.sun.jini.mahalo.TxnManagerImpl_Stub"/>
        </classdep>
        <delete file="${lib.dir}/mahalo.jar" quiet="true" />
        <jar destfile="${lib.dir}/mahalo.jar"  index="false"
                manifest="${src.manifest.dir}/mahalo.mf">
            <fileset dir="${build.classes.dir}"  includesfile="${mahalo.deps}" />
        </jar>
        <preferredlistgen>
            <arg line="-jar"/>
            <arg path="${lib.dir}/mahalo.jar"/>
            <arg line="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg line="-default true" />
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="mahalo-dl.jar" depends="stubs">
        <property name="mahalo-dl.deps" location="${build.deps.dir}/mahalo-dl.deps" />
        <classdep output="${mahalo-dl.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.mahalo"	/>
            <arg value="com.sun.jini.mahalo.MahaloPermission"/>
            <arg value="com.sun.jini.mahalo.TxnMgrProxy"/>
            <arg value="com.sun.jini.mahalo.ProxyVerifier"/>
            <arg value="com.sun.jini.mahalo.TxnManagerInternalException"/>
            <arg value="net.jini.lookup.entry.Name"	/>
            <arg value="net.jini.lookup.entry.ServiceInfo"/>
            <arg value="com.sun.jini.lookup.entry.BasicServiceType"	/>
            <arg value="com.sun.jini.mahalo.TxnMgrAdminProxy"/>
            <arg value="com.sun.jini.mahalo.InternalManagerException"/>
            <arg value="com.sun.jini.mahalo.TxnManagerImpl_Stub"/>
        </classdep>
        <delete file="${lib-dl.dir}/mahalo-dl.jar" quiet="true" />
        <jar destfile="${lib-dl.dir}/mahalo-dl.jar" index="false">
            <fileset dir="${build.classes.dir}"  includesfile="${mahalo-dl.deps}" />
        </jar>
        <preferredlistgen>
            <arg line="-cp"	/>
            <arg path="${lib.dir}/jsk-platform.jar"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/mahalo-dl.jar"	/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/jsk-dl.jar"/>
            <arg line="-proxy com.sun.jini.mahalo.TxnMgrAdminProxy"	/>
            <arg line="-proxy com.sun.jini.mahalo.TxnMgrProxy"/>
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="mahalo.stubs" depends="compile">
        <rmic base="${build.classes.dir}" stubversion="1.2">
            <classpath refid="river.jars" />
            <include name="com/sun/jini/mahalo/TxnManagerImpl.class" />
        </rmic>
    </target>

    <target name="mercury.jar" depends="stubs">
        <property name="mercury.deps" location="${build.deps.dir}/mercury.deps" />
        <classdep output="${mercury.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.mercury"/>
            <arg value="com.sun.jini.mercury.ActivatableMercuryImpl"/>
            <arg value="com.sun.jini.mercury.NonActivatableMercuryImpl"	/>
            <arg value="com.sun.jini.mercury.TransientMercuryImpl"/>
            <arg value="com.sun.jini.mercury.MercuryPermission"	/>
            <arg value="com.sun.jini.mercury.MailboxImpl_Stub"	/>
        </classdep>
        <delete file="${lib.dir}/mercury.jar" quiet="true" />
        <jar destfile="${lib.dir}/mercury.jar" index="false"
         manifest="${src.manifest.dir}/mercury.mf">
            <fileset dir="${build.classes.dir}"  includesfile="${mercury.deps}" />
        </jar>
        <preferredlistgen>
            <arg line="-jar"/>
            <arg path="${lib.dir}/mercury.jar"/>
            <arg line="-cp"	/>
            <arg path="${build.classes.dir}"/>
            <arg line="-default true" />
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="mercury-dl.jar" depends="stubs">
        <property name="mercury-dl.deps" location="${build.deps.dir}/mercury-dl.deps" />
        <classdep output="${mercury-dl.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.mercury"/>
            <arg value="com.sun.jini.lookup.entry.BasicServiceType"	/>
            <arg value="com.sun.jini.mercury.InternalMailboxException"	/>
            <arg value="com.sun.jini.mercury.ListenerProxy"	/>
            <arg value="com.sun.jini.mercury.MailboxAdminProxy"	/>
            <arg value="com.sun.jini.mercury.MailboxImpl_Stub"	/>
            <arg value="com.sun.jini.mercury.MailboxProxy"/>
            <arg value="com.sun.jini.mercury.MercuryPermission"	/>
            <arg value="com.sun.jini.mercury.RemoteEventDataCursor"/>
            <arg value="com.sun.jini.mercury.ProxyVerifier"	/>
            <arg value="com.sun.jini.mercury.Registration"/>
            <arg value="com.sun.jini.reliableLog.LogException"/>
            <arg value="net.jini.lookup.entry.Name"/>
            <arg value="net.jini.lookup.entry.ServiceInfo"/>
        </classdep>
        <delete file="${lib-dl.dir}/mercury-dl.jar" quiet="true" />
        <jar destfile="${lib-dl.dir}/mercury-dl.jar" index="false">
            <fileset dir="${build.classes.dir}"  includesfile="${mercury-dl.deps}" />
        </jar>
        <preferredlistgen>
            <arg line="-cp"	/>
            <arg path="${lib.dir}/jsk-platform.jar"	/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/mercury-dl.jar"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/jsk-dl.jar"/>
            <arg line="-proxy com.sun.jini.mercury.ListenerProxy"/>
            <arg line="-proxy com.sun.jini.mercury.MailboxAdminProxy"/>
            <arg line="-proxy com.sun.jini.mercury.MailboxProxy"/>
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="mercury.stubs" depends="compile">
        <rmic base="${build.classes.dir}" stubversion="1.2">
            <classpath refid="river.jars" />
            <include name="com/sun/jini/mercury/MailboxImpl.class" />
        </rmic>
    </target>

    <target name="norm.jar" depends="stubs">
        <property name="norm.deps" location="${build.deps.dir}/norm.deps" />
        <classdep output="${norm.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.norm"/>
            <arg value="com.sun.jini.norm.ActivatableNormServerImpl"/>
            <arg value="com.sun.jini.norm.NormPermission"/>
            <arg value="com.sun.jini.norm.NormServerBaseImpl_Stub"/>
            <arg value="com.sun.jini.norm.PersistentNormServerImpl"/>
            <arg value="com.sun.jini.norm.TransientNormServerImpl"/>
            <arg value="com.sun.jini.reliableLog.LogException"/>
        </classdep>
        <delete file="${lib.dir}/norm.jar" quiet="true" />
        <jar destfile="${lib.dir}/norm.jar" index="false"
         manifest="${src.manifest.dir}/norm.mf">
            <fileset dir="${build.classes.dir}"  includesfile="${norm.deps}" />
        </jar>
        <preferredlistgen>
            <arg line="-cp"	/>
            <arg path="${build.classes.dir}"/>
            <arg line="-jar"/>
            <arg path="${lib.dir}/norm.jar"	/>
            <arg line="-default true" />
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="norm-dl.jar"  depends="stubs">
        <property name="norm-dl.deps" location="${build.deps.dir}/norm-dl.deps" />
        <classdep output="${norm-dl.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.norm"/>
            <arg value="com.sun.jini.lease.BasicRenewalFailureEvent"/>
            <arg value="com.sun.jini.lookup.entry.BasicServiceType"/>
            <arg value="com.sun.jini.norm.CorruptedStoreException"/>
            <arg value="com.sun.jini.norm.InternalNormException"/>
            <arg value="com.sun.jini.norm.NormPermission"/>
            <arg value="com.sun.jini.norm.NormServerBaseImpl_Stub"/>
            <arg value="com.sun.jini.norm.ProxyVerifier"/>
            <arg value="com.sun.jini.reliableLog.LogException"/>
            <arg value="com.sun.jini.start.ServiceProxyAccessor"/>
            <arg value="net.jini.lookup.entry.ServiceInfo"/>
        </classdep>
        <delete file="${lib-dl.dir}/norm-dl.jar" quiet="true" />
        <jar destfile="${lib-dl.dir}/norm-dl.jar" index="false">
            <fileset dir="${build.classes.dir}" includesfile="${norm-dl.deps}" />
        </jar>
        <preferredlistgen>
            <arg line="-cp"	/>
            <arg path="${lib.dir}/jsk-platform.jar"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/norm-dl.jar"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/jsk-dl.jar"/>
            <arg line="-proxy com.sun.jini.norm.AbstractProxy"/>
            <arg line="-proxy com.sun.jini.norm.AdminProxy"/>
            <arg line="-proxy com.sun.jini.norm.NormProxy"/>
            <arg line="-proxy com.sun.jini.norm.SetProxy"/>
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="norm.stubs" depends="compile">
        <rmic base="${build.classes.dir}" stubversion="1.2">
            <classpath refid="river.jars" />
            <include name="com/sun/jini/norm/NormServerBaseImpl.class" />
        </rmic>
    </target>

    <target name="outrigger-snaplogstore.jar" depends="stubs">
        <property name="outrigger-snaplogstore.deps" location="${build.deps.dir}/outrigger-snaplogstore.deps" />
        <classdep output="${outrigger-snaplogstore.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.outrigger.snaplogstore"	/>
            <arg value="com.sun.jini.outrigger.snaplogstore.LogStore"/>
        </classdep>
        <delete file="${lib.dir}/outrigger-snaplogstore.jar" quiet="true" />
        <jar destfile="${lib.dir}/outrigger-snaplogstore.jar" index="false">
            <fileset dir="${build.classes.dir}"
                includesfile="${outrigger-snaplogstore.deps}" />
        </jar>
    </target>

    <target name="outrigger.jar" depends="stubs,outrigger-snaplogstore.jar">
        <property name="outrigger.deps" location="${build.deps.dir}/outrigger.deps" />
        <classdep output="${outrigger.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.outrigger"/>
            <arg value="com.sun.jini.outrigger.OutriggerPermission"/>
            <arg value="com.sun.jini.outrigger.OutriggerServerWrapper_Stub"	/>
            <arg value="com.sun.jini.outrigger.PersistentOutriggerImpl"	/>
            <arg value="com.sun.jini.outrigger.TransientOutriggerImpl"/>
        </classdep>
        <delete file="${lib.dir}/outrigger.jar" quiet="true"/>
        <jar destfile="${lib.dir}/outrigger.jar" index="false"
                manifest="${src.manifest.dir}/outrigger.mf">
            <metainf dir="${src.manifest.dir}/outrigger/META-INF" />
            <fileset dir="${build.classes.dir}"  includesfile="${outrigger.deps}" />
        </jar>
    </target>

    <target name="outrigger-dl.jar" depends="compile">
        <property name="outrigger-dl.deps" location="${build.deps.dir}/outrigger-dl.deps" />
        <classdep output="${outrigger-dl.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.landlord"/>
            <arg line="-in com.sun.jini.outrigger"/>
            <arg value="com.sun.jini.lookup.entry.BasicServiceType"/>
            <arg value="com.sun.jini.outrigger.OutriggerPermission"/>
            <arg value="com.sun.jini.outrigger.OutriggerQueryCookie"/>
            <arg value="com.sun.jini.outrigger.OutriggerServerWrapper_Stub"	/>
            <arg value="com.sun.jini.outrigger.OutriggerAvailabilityEvent"/>
            <arg value="com.sun.jini.outrigger.ProxyVerifier"/>
            <arg value="net.jini.lookup.entry.ServiceInfo"/>
            <arg value="net.jini.space.InternalSpaceException"/>
        </classdep>
        <delete file="${lib-dl.dir}/outrigger-dl.jar" quiet="true" />
        <jar destfile="${lib-dl.dir}/outrigger-dl.jar" index="false">
            <fileset dir="${build.classes.dir}"  includesfile="${outrigger-dl.deps}" />
        </jar>
        <preferredlistgen>
            <arg line="-cp"	/>
            <arg path="${lib.dir}/jsk-platform.jar"	/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/outrigger-dl.jar"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/jsk-dl.jar"/>
            <arg line="-proxy com.sun.jini.outrigger.ConstrainableAdminProxy"/>
            <arg line="-proxy com.sun.jini.outrigger.ConstrainableIteratorProxy"/>
            <arg line="-proxy com.sun.jini.outrigger.ConstrainableParticipantProxy"/>
            <arg line="-proxy com.sun.jini.outrigger.ConstrainableSpaceProxy2"/>
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="outrigger.stubs" depends="compile">
        <rmic base="${build.classes.dir}" stubversion="1.2">
            <classpath refid="river.jars" />
            <include name="com/sun/jini/outrigger/OutriggerServerWrapper.class" />
        </rmic>
    </target>

    <target name="phoenix.jar" depends="tools.jar">
        <property name="phoenix.deps" location="${build.deps.dir}/phoenix.deps" />
        <classdep output="${phoenix.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.phoenix"/>
            <arg value="com.sun.jini.phoenix.AccessILFactory"/>
            <arg value="com.sun.jini.phoenix.Activation"/>
            <arg value="com.sun.jini.phoenix.ActivatorPermission"/>
            <arg value="com.sun.jini.phoenix.ActivatorSunJrmpExporter"/>
            <arg value="com.sun.jini.phoenix.MonitorAccessExporter"/>
            <arg value="com.sun.jini.phoenix.MonitorPermission"/>
            <arg value="com.sun.jini.phoenix.PhoenixConstants"/>
            <arg value="com.sun.jini.phoenix.RegistrySunExporter"/>
            <arg value="com.sun.jini.phoenix.SystemAccessExporter"/>
            <arg value="com.sun.jini.phoenix.SystemAccessILFactory"/>
            <arg value="com.sun.jini.phoenix.SystemAccessProxyTrustILFactory"/>
            <arg value="com.sun.jini.phoenix.SystemPermission"/>
            <arg value="com.sun.jini.phoenix.AbstractActivator_Stub"/>
            <arg value="com.sun.jini.phoenix.AbstractInstantiator_Stub"	/>
            <arg value="com.sun.jini.phoenix.AbstractMonitor_Stub"/>
            <arg value="com.sun.jini.phoenix.AbstractRegistry_Skel"/>
            <arg value="com.sun.jini.phoenix.AbstractRegistry_Stub"/>
            <arg value="com.sun.jini.phoenix.AbstractSystem_Stub"/>
            <!--Why was the following class was missing from jar file,
            is this a bug with ClassDep?
            com.sun.jini.phoenix.Activation depends on this:-->
            <arg value="com.sun.jini.phoenix.ConstrainableAID"/>
        </classdep>
        <delete file="${lib.dir}/phoenix.jar" quiet="true" />
        <jar destfile="${lib.dir}/phoenix.jar" index="false"
                manifest="${src.manifest.dir}/phoenix.mf">
            <fileset dir="${build.classes.dir}"	includesfile="${phoenix.deps}" />
            <fileset dir="${src.dir}" includes="com/sun/jini/phoenix/resources/*.properties" />
        </jar>
    </target>

    <target name="phoenix-dl.jar" depends="stubs">
        <property name="phoenix-dl.deps" location="${build.deps.dir}/phoenix-dl.deps" />
        <classdep output="${phoenix-dl.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.phoenix"/>
            <arg value="com.sun.jini.phoenix.ConstrainableAID"/>
            <arg value="com.sun.jini.phoenix.SystemPermission"/>
            <arg value="com.sun.jini.phoenix.ActivatorPermission"/>
            <arg value="com.sun.jini.phoenix.MonitorPermission"/>
            <arg value="com.sun.jini.phoenix.ExecOptionPermission"/>
            <arg value="com.sun.jini.phoenix.ExecPermission"/>
            <arg value="com.sun.jini.phoenix.InactiveGroupException"/>
            <arg value="com.sun.jini.proxy.BasicProxyTrustVerifier"/>
            <arg value="com.sun.jini.phoenix.AbstractActivator_Stub"/>
            <arg value="com.sun.jini.phoenix.AbstractMonitor_Stub"/>
            <arg value="com.sun.jini.phoenix.AbstractSystem_Stub"/>
            <arg value="com.sun.jini.phoenix.AbstractRegistry_Stub"/>
        </classdep>
        <delete file="${lib-dl.dir}/phoenix-dl.jar" quiet="true" />
        <jar destfile="${lib-dl.dir}/phoenix-dl.jar" index="false">
            <fileset dir="${build.classes.dir}"	includesfile="${phoenix-dl.deps}" />
        </jar>
        <preferredlistgen>
            <arg line="-cp"	/>
            <arg path="${lib.dir}/jsk-platform.jar"	/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/phoenix-dl.jar"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/jsk-dl.jar"/>
            <arg line="-proxy com.sun.jini.phoenix.AbstractSystem_Stub"	/>
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="phoenix-group.jar" depends="stubs">
        <property name="phoenix-group.deps" location="${build.deps.dir}/phoenix-group.deps" />
        <classdep output="${phoenix-group.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg line="${jskplatform.exclude}"/>
            <arg line="-in com.sun.jini"/>
            <arg line="-in net.jini"/>
            <arg value="com.sun.jini.phoenix.ActivationGroupImpl"/>
            <arg value="com.sun.jini.phoenix.AccessILFactory"/>
            <arg value="com.sun.jini.phoenix.InstantiatorAccessExporter"/>
            <arg value="com.sun.jini.phoenix.InstantiatorPermission"/>
            <arg value="com.sun.jini.phoenix.AbstractInstantiator_Stub"	/>
        </classdep>
        <delete file="${lib.dir}/phoenix-group.jar" quiet="true" />
        <jar destfile="${lib.dir}/phoenix-group.jar" index="false">
            <fileset dir="${build.classes.dir}"  includesfile="${phoenix-group.deps}" />
            <metainf dir="${src.manifest.dir}/phoenix-group/META-INF" />
        </jar>
    </target>

    <target name="phoenix-init.jar" depends="stubs">
        <property name="phoenix-init.deps" location="${build.deps.dir}/phoenix-init.deps" />
        <classdep output="${phoenix-init.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskplatform.exclude}"/>
            <arg line="-in com.sun.jini"/>
            <arg line="-in net.jini"/>
            <arg value="com.sun.jini.phoenix.ActivationGroupInit" />
        </classdep>
        <delete file="${lib.dir}/phoenix-init.jar" quiet="true" />
        <jar destfile="${lib.dir}/phoenix-init.jar" index="false">
            <fileset dir="${build.classes.dir}"  includesfile="${phoenix-init.deps}" />
        </jar>
    </target>

    <target name="phoenix.stubs" depends="compile">
        <rmic base="${build.classes.dir}" stubversion="1.2">
            <classpath refid="river.jars" />
            <include name="com/sun/jini/phoenix/AbstractActivator.class" />
            <include name="com/sun/jini/phoenix/AbstractMonitor.class" />
            <include name="com/sun/jini/phoenix/AbstractSystem.class" />
            <include name="com/sun/jini/phoenix/AbstractInstantiator.class" />
        </rmic>
        <rmic base="${build.classes.dir}" stubversion="1.1">
            <classpath refid="river.jars" />
            <include name="com/sun/jini/phoenix/AbstractRegistry.class" />
        </rmic>
    </target>

    <target name="reggie.jar" depends="stubs">
        <property name="reggie.deps" location="${build.deps.dir}/reggie.deps" />
        <classdep output="${reggie.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.reggie"	/>
            <arg value="com.sun.jini.reggie.PersistentRegistrarImpl"/>
            <arg value="com.sun.jini.reggie.RegistrarPermission"/>
            <arg value="com.sun.jini.reggie.RegistrarImpl_Stub"	/>
            <arg value="com.sun.jini.reggie.TransientRegistrarImpl"	/>
        </classdep>
        <delete file="${lib.dir}/reggie.jar" quiet="true" />
        <jar destfile="${lib.dir}/reggie.jar" index="false"
         manifest="${src.manifest.dir}/reggie.mf">
            <fileset dir="${build.classes.dir}"  includesfile="${reggie.deps}" />
        </jar>
        <preferredlistgen>
            <arg line="-cp"	/>
            <arg path="${build.classes.dir}"/>
            <arg line="-jar"/>
            <arg path="${lib.dir}/reggie.jar"/>
            <arg line="-default true" />
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="reggie-dl.jar" depends="stubs">
        <property name="reggie-dl.deps" location="${build.deps.dir}/reggie-dl.deps" />
        <classdep output="${reggie-dl.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.reggie"/>
            <arg value="com.sun.jini.lookup.entry.BasicServiceType"/>
            <arg value="com.sun.jini.reggie.AdminProxy"	/>
            <arg value="com.sun.jini.reggie.EventLease"/>
            <arg value="com.sun.jini.reggie.ProxyVerifier"/>
            <arg value="com.sun.jini.reggie.RegistrarEvent"/>
            <arg value="com.sun.jini.reggie.RegistrarImpl_Stub"/>
            <arg value="com.sun.jini.reggie.RegistrarPermission"/>
            <arg value="com.sun.jini.reggie.RegistrarProxy"/>
            <arg value="com.sun.jini.reggie.Registration"/>
            <arg value="com.sun.jini.reliableLog.LogException"/>
            <arg value="net.jini.lookup.entry.ServiceInfo"/>
        </classdep>
        <delete file="${lib-dl.dir}/reggie-dl.jar" quiet="true"/>
        <jar destfile="${lib-dl.dir}/reggie-dl.jar" index="false">
            <fileset dir="${build.classes.dir}" includesfile="${reggie-dl.deps}" />
        </jar>
        <preferredlistgen>
            <arg line="-cp"	/>
            <arg path="${build.classes.dir}"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/reggie-dl.jar"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/jsk-dl.jar"/>
            <arg line="-proxy com.sun.jini.reggie.ConstrainableRegistrarProxy"/>
            <arg line="-proxy com.sun.jini.reggie.ConstrainableAdminProxy"/>
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="reggie.stubs" depends="compile">
        <rmic base="${build.classes.dir}" stubversion="1.2">
            <classpath refid="river.jars" />
            <include name="com/sun/jini/reggie/RegistrarImpl.class" />
        </rmic>
    </target>

    <target name="start.copy-resources" depends="prep">
        <delete dir="${build.classes.dir}/com/sun/jini/start/resources"/>
        <mkdir  dir="${build.classes.dir}/com/sun/jini/start/resources"/>
        <copy todir="${build.classes.dir}/com/sun/jini/start/resources">
            <fileset dir="${src.dir}/com/sun/jini/start/resources">
                <include name="**"/>
            </fileset>
        </copy>
    </target>
    
    <target name="destroy.jar" depends="stubs">
        <property name="destroy.deps" location="${build.deps.dir}/destroy.deps" />
        <classdep output="${destroy.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.start"/>
            <arg value="com.sun.jini.start.DestroySharedGroup"/>
        </classdep>
        <delete  file="${lib.dir}/destroy.jar" quiet="true"/>
        <jar destfile="${lib.dir}/destroy.jar" index="false"
         manifest="${src.manifest.dir}/destroy.mf">
            <fileset dir="${build.classes.dir}" includesfile="${destroy.deps}">
                <include name="com/sun/jini/start/resources/**"/>
            </fileset>
        </jar>
    </target>

    <target name="group.jar" depends="stubs">
        <property name="group.deps" location="${build.deps.dir}/group.deps" />
        <classdep output="${group.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.start"/>
            <arg value="com.sun.jini.start.SharedGroupImpl"	/>
            <arg value="com.sun.jini.start.SharedGroupImpl_Stub"/>
        </classdep>
        <delete  file="${lib.dir}/group.jar" quiet="true"/>
        <jar destfile="${lib.dir}/group.jar" index="false">
            <fileset dir="${build.classes.dir}" includesfile="${group.deps}" />
        </jar>
    </target>

    <target name="group-dl.jar" depends="stubs">
        <property name="group-dl.deps" location="${build.deps.dir}/group-dl.deps" />
        <classdep output="${group-dl.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.start"/>
            <arg value="com.sun.jini.start.ProxyVerifier"/>
            <arg value="com.sun.jini.start.SharedGroupImpl_Stub"/>
        </classdep>
        <delete file="${lib-dl.dir}/group-dl.jar" quiet="true"/>
        <jar destfile="${lib-dl.dir}/group-dl.jar" index="false">
            <fileset dir="${build.classes.dir}" includesfile="${group-dl.deps}" />
        </jar>
        <preferredlistgen>
            <arg line="-cp"	/>
            <arg path="${lib.dir}/jsk-platform.jar"	/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/group-dl.jar"/>
            <arg line="-jar"/>
            <arg path="${lib-dl.dir}/jsk-dl.jar"/>
            <arg line="-proxy com.sun.jini.start.SharedGroupImpl_Stub"/>
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <target name="sharedvm.jar" depends="stubs">
        <property name="sharedvm.deps" location="${build.deps.dir}/sharedvm.deps" />
        <classdep output="${sharedvm.deps}">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg line="${jskplatform.exclude}"/>
            <arg line="-in com.sun.jini" />
            <arg value="com.sun.jini.start.ActivateWrapper"/>
        </classdep>
        <delete  file="${lib.dir}/sharedvm.jar" quiet="true"/>
        <jar destfile="${lib.dir}/sharedvm.jar" index="false"
         manifest="${src.manifest.dir}/sharedvm.mf">
            <fileset dir="${build.classes.dir}" includesfile="${sharedvm.deps}" />
        </jar>
    </target>

    <target name="start.jar" depends="stubs">
        <property name="start.deps" location="${build.deps.dir}/start.deps" />
        <classdep output="${start.deps}"
                classpathref="classdep.classes.classpath">
            <arg value="-cp"/>
            <arg path="${build.classes.dir}"/>
            <arg value="-files"/>
            <arg line="${jskplatform.exclude}"/>
            <arg line="-in com.sun.jini" />
            <arg value="com.sun.jini.start.ServiceStarter"/>
            <arg value="com.sun.jini.start.SharedActivatableServiceDescriptor"/>
            <arg value="com.sun.jini.start.SharedActivationGroupDescriptor"	/>
            <arg value="com.sun.jini.start.NonActivatableServiceDescriptor"	/>
        </classdep>
        <delete  file="${lib.dir}/start.jar" quiet="true"/>
        <jar destfile="${lib.dir}/start.jar" index="false"
         manifest="${src.manifest.dir}/start.mf">
            <fileset dir="${build.classes.dir}" includesfile="${start.deps}">
                <include name="com/sun/jini/start/resources/**"	/>
            </fileset>
        </jar>
    </target>

    <target name="start.stubs" depends="compile">
        <rmic base="${build.classes.dir}" stubversion="1.2">
            <classpath refid="river.jars" />
            <include name="com/sun/jini/start/SharedGroupImpl.class" />
        </rmic>
    </target>

    <target name="tools.copy-resources" depends="prep">
        <delete dir="${build.classes.dir}/com/sun/jini/tool/resources"/>
        <mkdir  dir="${build.classes.dir}/com/sun/jini/tool/resources"/>
        <copy todir="${build.classes.dir}/com/sun/jini/tool/resources">
            <fileset dir="${src.dir}/com/sun/jini/tool/resources">
                <include name="**"/>
            </fileset>
        </copy>
    </target>

    <target name="tools.jar" depends="river.jars">
        <property name="tools.deps" location="${build.deps.dir}/tools.deps" />
        <classdep output="${tools.deps}"
                classpathref="classdep.classes.classpath">
            <arg value="-cp"/>
            <arg pathref="classdep.classes.classpath"/>
            <arg value="-files"	/>
            <arg line="${jskprivate.include}"/>
            <arg line="-in com.sun.jini.tool"/>
            <arg line="-in com.sun.jini.start"/>
            <arg line="-out org.objectweb.asm"/>
            <arg value="com.sun.jini.tool.CheckConfigurationFile"/>
            <arg value="com.sun.jini.tool.CheckSer"/>
            <arg value="com.sun.jini.tool.ClassDep"/>
            <arg value="com.sun.jini.tool.ClassDep$$Compare"/>
            <arg value="com.sun.jini.tool.ClassServer"/>
            <arg value="com.sun.jini.tool.ComputeDigest"/>
            <arg value="com.sun.jini.tool.ComputeHttpmdCodebase"/>
            <arg value="com.sun.jini.tool.JarWrapper"/>
            <arg value="com.sun.jini.tool.PreferredListGen"/>
            <arg value="com.sun.jini.tool.classdepend.AbstractDependencyVisitor"/>
            <arg value="com.sun.jini.tool.classdepend.AbstractVisitor"/>
            <arg value="com.sun.jini.tool.classdepend.ClassDepend"/>
            <arg value="com.sun.jini.tool.classdepend.ClassDependencyRelationship"/>
            <arg value="com.sun.jini.tool.classdepend.ClassDependParameters$CDPBuilder"/>
            <arg value="com.sun.jini.tool.classdepend.ClassDependParameters"/>
            <arg value="com.sun.jini.tool.classdepend.PackageClasses"/>
            <arg value="com.sun.jini.tool.classdepend.ReferencedClasses"/>
            <arg value="com.sun.jini.tool.classdepend.ClasspathPackages"/>        
            <arg value="com.sun.jini.tool.envcheck.AbstractPlugin"/>
            <arg value="com.sun.jini.tool.envcheck.EnvCheck"/>
            <arg value="com.sun.jini.tool.envcheck.SubVM"/>
            <arg value="com.sun.jini.tool.envcheck.plugins.CheckActivationSystem"/>
            <arg value="com.sun.jini.tool.envcheck.plugins.CheckCodebase"/>
            <arg value="com.sun.jini.tool.envcheck.plugins.CheckConfig"	/>
            <arg value="com.sun.jini.tool.envcheck.plugins.CheckJDK1_4"	/>
            <arg value="com.sun.jini.tool.envcheck.plugins.CheckJSKPlatform"/>
            <arg value="com.sun.jini.tool.envcheck.plugins.CheckJSKPolicy"/>
            <arg value="com.sun.jini.tool.envcheck.plugins.CheckJsseProps"/>
            <arg value="com.sun.jini.tool.envcheck.plugins.CheckLoggingConfig"/>
            <arg value="com.sun.jini.tool.envcheck.plugins.CheckNoLoopback"/>
            <arg value="com.sun.jini.tool.envcheck.plugins.CheckPersistence"/>
            <arg value="com.sun.jini.tool.envcheck.plugins.CheckPolicy"	/>
            <arg value="com.sun.jini.tool.envcheck.plugins.FileAccessCheckTask"	/>
        </classdep>
        <delete file="${lib.dir}/tools.jar" quiet="true" />
        <jar destfile="${lib.dir}/tools.jar" index="false"
                manifest="${src.manifest.dir}/tools.mf">
            <fileset dir="${src.manifest.dir}/tools"
                includes="META-INF/services/com.sun.jini.tool.envcheck.Plugin" />
            <fileset dir="${build.classes.dir}"  includesfile="${tools.deps}" />
            <fileset dir="${src.dir}" includes="com/sun/jini/tool/resources/*.properties
			  com/sun/jini/tool/envcheck/resources/*.properties
			  com/sun/jini/tool/envcheck/plugins/resources/*.properties" />
        </jar>
        <preferredlistgen>
            <arg line="-cp"	/>
            <arg path="${build.classes.dir}"/>
            <arg line="-jar"/>
            <arg path="${lib.dir}/tools.jar"/>
            <classpath refid="river.jars"/>
        </preferredlistgen>
    </target>

    <!-- You can specify the following properties (see qa/build.xml):
        run.categories
        harness.configs
        harness.servicemode
        e.g. ant -Dharness.servicemode=transient qa.run
    -->
    <target name="qa.run" depends="" description="Run QA tests">
        <!-- Call qa subcomponent build -->
        <ant dir="qa" target="run-categories" inheritall="false">
            <property name="run.categories"
                value="id,loader,policyprovider,locatordiscovery,activation,config,discoverymanager,joinmanager,url,iiop,jrmp,reliability,thread"/>
        </ant>
    </target>

    <target name="build" depends="configentry,test,jars,doc,spec-doc"/>

    <target name="all.build" depends="build"
            description="Build all, including subcomponents">
            <!-- Call qa subcomponent build -->
        <ant dir="qa" target="build" inheritall="false" />
        <!-- Call examples/hello subcomponent build -->
        <ant dir="examples/hello" target="build" inheritall="false" />
    </target>

    <target name="all.clean" depends="clean,clean-tests"
            description="Clean all, including subcomponents">
        <!-- Call qa subcomponent build -->
        <ant dir="qa" target="clean" inheritall="false" />
        <!-- Call examples/hello subcomponent build -->
        <ant dir="examples/hello" target="clean" inheritall="false" />
    </target>

    <target name="all.compile" depends="jars"
            description="Compile all, including subcomponents">
        <!-- Call qa subcomponent build -->
        <ant dir="qa" target="compile" inheritall="false" />
        <!-- Call examples/hello subcomponent build -->
        <ant dir="examples/hello" target="compile" inheritall="false" />
    </target>

    <target name="all.doc" depends="jars,doc,spec-doc"
            description="Generate javadoc for all, including subcomponents">
        <!-- Call qa subcomponent build -->
        <ant dir="qa" target="doc" inheritall="false" />
        <!-- Call examples/hello subcomponent build -->
        <ant dir="examples/hello" target="doc" inheritall="false" />
    </target>

    <target name="all.jars" depends="jars"
            description="Generate JAR files for all, including subcomponents">
        <!-- Call qa subcomponent build -->
        <ant dir="qa" target="jars" inheritall="false" />
        <!-- Call examples/hello subcomponent build -->
        <ant dir="examples/hello" target="jars" inheritall="false" />
    </target>

    <!-- TODO cleanup and find out where exactly to publish to -->
    <!-- Note that you need the Maven Ant tasks (http://maven.apache.org/ant-tasks/)
        installed to use this task -->
    <target name="deploy-artifacts" depends="jars">
        <!--<artifact:install-provider artifactId="wagon-file" version="1.0-beta-2"/>
        <artifact:install-provider artifactId="wagon-http" version="1.0-beta-2"/>
        <artifact:install-provider artifactId="wagon-ssh" version="1.0-beta-2"/>-->
        <!-- Override this in <river src distr. home>/build.properties to try out -->
        <property name="m2.repository" value="file:///home/jonathan/maven" />
        <macrodef name="deploy">
            <attribute name="file" />
            <attribute name="pom" />
            <sequential>
                <artifact:deploy file="@{file}" >
                    <remoteRepository url="${m2.repository}"/>
                    <pom refid="@{pom}"/>
                </artifact:deploy>
            </sequential>
        </macrodef>
        <artifact:pom id="parent" file="${poms.dir}/pom.xml" />
        <artifact:pom id="jini-core" file="${poms.dir}/jini-core/pom.xml" />
        <artifact:pom id="jini-ext" file="${poms.dir}/jini-ext/pom.xml" />
        <artifact:pom id="jsk-lib" file="${poms.dir}/jsk-lib/pom.xml" />
        <artifact:pom id="jsk-dl" file="${poms.dir}/jsk-dl/pom.xml" />
        <artifact:pom id="jsk-resources" file="${poms.dir}/jsk-resources/pom.xml" />
        <artifact:pom id="jsk-platform" file="${poms.dir}/jsk-platform/pom.xml" />
        <artifact:pom id="jsk-policy" file="${poms.dir}/jsk-policy/pom.xml" />
        <artifact:pom id="serviceui" file="${poms.dir}/serviceui/pom.xml" />
        <artifact:pom id="sun-util" file="${poms.dir}/sun-util/pom.xml" />
        <artifact:pom id="start" file="${poms.dir}/start/pom.xml" />
        <artifact:pom id="tools" file="${poms.dir}/tools/pom.xml" />
        <deploy file="${lib.dir}/jini-core.jar" pom="jini-core" />
        <deploy file="${lib.dir}/jini-ext.jar" pom="jini-ext" />
        <deploy file="${lib.dir}/jsk-lib.jar" pom="jsk-lib" />
        <deploy file="${lib-dl.dir}/jsk-dl.jar" pom="jsk-dl" />
        <deploy file="${lib.dir}/jsk-resources.jar" pom="jsk-resources" />
        <deploy file="${lib.dir}/jsk-platform.jar" pom="jsk-platform" />
        <deploy file="${lib-ext.dir}/jsk-policy.jar" pom="jsk-policy" />
        <deploy file="${lib.dir}/serviceui.jar" pom="serviceui" />
        <deploy file="${lib.dir}/sun-util.jar" pom="sun-util" />
        <deploy file="${lib.dir}/start.jar" pom="start" />
        <deploy file="${lib.dir}/tools.jar" pom="tools" />
    </target>

    <target name="prep-tests" depends="">
        <mkdir dir="${test.classes.dir}"/>
        <mkdir dir="${test.results.dir}"/>
    </target>

    <target name="clean-tests" depends="">
        <delete dir="${test.classes.dir}" quiet="true"/>
        <delete dir="${test.results.dir}" quiet="true"/>
    </target> 
    
    <target name="compile-tests" depends="compile,prep-tests">
        <javac-cmd source.dir="${test.src.dir}" dest.dir="${test.classes.dir}"
                source="5" target="5">
            <classpath refid="test.compile.classpath" />
        </javac-cmd>
    </target>

    <target name="test" depends="compile-tests">
        <junit printsummary="false">
            <classpath refid="test.classpath"/>
            <formatter type="brief" usefile="false"/>
            <formatter type="xml" />
            <batchtest todir="${test.results.dir}">
                <fileset dir="${test.classes.dir}" includes="**/*Test.class" />
            </batchtest>
        </junit>
    </target>

</project>
