<!--
|
! CDDL HEADER START
|
!
|
! The contents of this file are subject to the terms of the
|
! Common Development and Distribution License, Version 1.0 only
|
! (the "License"). You may not use this file except in compliance
|
! with the License.
|
!
|
! You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
|
! or http://forgerock.org/license/CDDLv1.0.html.
|
! See the License for the specific language governing permissions
|
! and limitations under the License.
|
!
|
! When distributing Covered Code, include this CDDL HEADER in each
|
! file and include the License file at legal-notices/CDDLv1_0.txt.
|
! If applicable, add the following below this CDDL HEADER, with the
|
! fields enclosed by brackets "[]" replaced with your own identifying
|
! information:
|
! Portions Copyright [yyyy] [name of copyright owner]
|
!
|
! CDDL HEADER END
|
!
|
!
|
! Copyright 2006-2010 Sun Microsystems, Inc.
|
! Portions Copyright 2011-2013 ForgeRock AS
|
! Portions Copyright 2012 Delta Victor Consultants
|
! -->
|
|
<project name="Directory Server" basedir="." default="package"
|
xmlns:ivy="antlib:org.apache.ivy.ant">
|
<description>
|
This is the build script for OpenDJ. See the BUILDING
|
file in this directory for build instructions.
|
</description>
|
|
<!-- Build JVM properties -->
|
<property name="MEM" value="512M"/>
|
|
<!-- Build OpenDMK properties -->
|
<property file="build.properties"/>
|
|
<!-- General server-wide properties -->
|
<property name="src.dir" location="src/server" />
|
<property name="build.dir" location="build" />
|
<property name="classes.dir" location="${build.dir}/classes" />
|
<property name="build.lib.dir" location="${build.dir}/lib" />
|
<property name="lib.dir" location="lib" />
|
<property name="ext.dir" location="ext" />
|
<property name="package.dir" location="${build.dir}/package" />
|
<property name="javadoc.dir" location="${build.dir}/javadoc" />
|
<property name="docgen.dir" location="${build.dir}/docgen" />
|
<property name="configguide.dir" location="${docgen.dir}/configuration_guide" />
|
<property name="configguideldap.dir" location="${docgen.dir}/configuration_guide_with_ldap_mapping" />
|
<property name="wiki.home" value="https://wikis.forgerock.org/confluence/display/opendj/Home"/>
|
<property name="resource.dir" location="resource" />
|
<property name="scripts.dir" location="${resource.dir}/bin" />
|
<property name="config.dir" location="${resource.dir}/config" />
|
<property name="build.debuglevel" value="lines,vars,source" />
|
<property name="ivy.install.version" value="2.3.0"/>
|
<property name="ivy.jar.file" value="${ext.dir}/ivy.jar"/>
|
<!-- example command line to invoke for building offline:
|
ant resolve -Dbuild.offline=
|
-->
|
<condition property="ivy.checkmodified" value="false" else="true">
|
<isset property="build.offline"/>
|
</condition>
|
<condition property="ivy.changingpattern" value="" else=".*-SNAPSHOT">
|
<isset property="build.offline"/>
|
</condition>
|
|
<!-- Properties for build tools -->
|
<property name="buildtools.src.dir" location="src/build-tools" />
|
<property name="buildtools.classes.dir" location="${build.dir}/build-tools/classes" />
|
<property name="buildtools.jar" location="${build.dir}/build-tools/build-tools.jar" />
|
|
<!-- Properties for use in unit testing. -->
|
<property name="unittest.testng.dir" location="tests/unit-tests-testng"/>
|
<property name="unittest.testng.src.dir"
|
location="${unittest.testng.dir}/src/server"/>
|
|
<property name="unittest.classes.dir"
|
location="${build.dir}/unit-tests/classes" />
|
<property name="unittest.report.dir"
|
location="${build.dir}/unit-tests/report"/>
|
<property name="unittest.resource.dir"
|
location="${build.dir}/unit-tests/resource"/>
|
|
<!-- Properties for use with the DSML component. -->
|
<property name="dsml.dir" location="resource/dsml" />
|
<property name="dsml.src.dir" location="src/dsml" />
|
<property name="dsml.lib.dir" location="${dsml.dir}/lib" />
|
<property name="dsml.gen.dir" location="${build.dir}/dsml/gen" />
|
<property name="dsml.classes.dir" location="${build.dir}/dsml/classes" />
|
|
<!-- Properties for use with the Quick Setup. -->
|
<property name="quicksetup.src.dir" location="src/quicksetup" />
|
<property name="quicksetup.classes.dir"
|
location="${build.dir}/quicksetup/classes" />
|
<property name="quicksetup.globalcompile.classes.dir"
|
location="${classes.dir}/org/opends/quicksetup" />
|
<property name="ads.src.dir" location="src/ads" />
|
<property name="ads.classes.dir" location="${classes.dir}/org/opends/admin/ads"/>
|
|
<!-- Properties for use with the GUI Tools that go in OpenDJ jar. -->
|
<property name="guitools.src.dir" location="src/guitools" />
|
|
<!-- Properties for coverage diff reports -->
|
<property name="cvgdiff.dir" location="${build.dir}/diff" />
|
<property name="cvgdiff.report.dir"
|
location="${cvgdiff.dir}/report" />
|
|
<!-- Properties for code coverage testing. -->
|
<property name="coverage.dir" location="${build.dir}/coverage" />
|
<property name="coverage.report.dir"
|
location="${coverage.dir}/reports/unit" />
|
<property name="coverage.instr.dir"
|
location="${coverage.dir}/instrumentedcode" />
|
<property name="coverage.data.dir"
|
location="${coverage.dir}/gathereddata" />
|
|
<!-- Properties for the EMMA code coverage tool. -->
|
<property name="emma.dir" location="${ext.dir}/emma/lib" />
|
|
<!-- Properties for the AspectJ tools -->
|
<property name="aj.dir" location="${ext.dir}/aspectj" />
|
<property name="aj.lib.dir" location="${aj.dir}/lib" />
|
|
<!-- Properties for the TestNG unit testing tool. -->
|
<property name="testng.dir" location="${ext.dir}/testng" />
|
<property name="testng.lib.dir" location="${testng.dir}/lib" />
|
|
<!-- Properties for the ANT build tool. -->
|
<property name="ant.dir" location="${ext.dir}/ant" />
|
<property name="ant.lib.dir" location="${ant.dir}/lib" />
|
|
<!-- Properties for the checkstyle tool. -->
|
<property name="checkstyle.dir" location="${ext.dir}/checkstyle" />
|
<property name="checkstyle.cache.dir" location=".checkstyle-cache" />
|
|
<!-- Properties for the SVNKit tool. -->
|
<property name="svnkit.dir" location="${ext.dir}/svnkit" />
|
|
<!-- Properties for Directory Server version information. -->
|
<property name="dynconstants.file"
|
location="${src.dir}/org/opends/server/util/DynamicConstants.java" />
|
<property name="dynconstants.stubfile"
|
location="${resource.dir}/DynamicConstants.java.stubs" />
|
|
|
<property file="PRODUCT" />
|
|
<!-- Properties for administration framework code generation. -->
|
<property name="admin.defn.dir" location="src/admin/defn" />
|
<property name="admin.src.dir" location="src/admin/generated" />
|
<property name="admin.rules.dir" location="resource/admin" />
|
<property name="configguide.resource.dir" location="resource/admin/config-guide" />
|
|
<!-- Properties for generating messages. -->
|
<property name="msg.dir" location="src/messages" />
|
<property name="msg.prop.dir" location="${msg.dir}/messages" />
|
<property name="msg.javagen.dir" location="${msg.dir}/generated" />
|
<property name="msg.logref.dir" location="${docgen.dir}/logref" />
|
<property name="msg.package.dir" location="${classes.dir}/messages" />
|
<property name="msg.src.dir" location="${msg.dir}/src" />
|
|
<!-- Properties for L10n for generating messages. -->
|
<property name="msgl10n.prop.dir" location="src/admin/messages/" />
|
<property name="msgl10n.diff.dir" location="${build.dir}/l10nmsg/" />
|
|
|
<!-- Properties for SNMP extension. -->
|
<property name="snmp.mib.dir" location="src/snmp/resource/mib" />
|
<property name="snmp.security.dir" location="src/snmp/resource/security" />
|
<property name="snmp.config.dir" location="src/snmp/resource/config" />
|
<property name="snmp.resource.dir" location="src/snmp/resource" />
|
<property name="snmp.gen.dir" location="src/snmp/generated" />
|
<property name="snmp.src.dir" location="src/snmp/src" />
|
<property name="snmp.classes.dir"
|
location="${classes.dir}/org/opends/server/snmp" />
|
|
|
<!-- Properties for license inclusion. -->
|
<condition property="include.license.file">
|
<available file="${license.file}" type="file" />
|
</condition>
|
<fail message="The license file '${license.file}' could not be found">
|
<condition>
|
<and>
|
<isset property="license.file"/>
|
<length string="${license.file}" trim="true" when="greater" length="0"/>
|
<isfalse value="${include.license.file}"/>
|
</and>
|
</condition>
|
</fail>
|
|
<!-- Allow platform-specific checks. -->
|
<condition property="build.windows">
|
<os family="windows"/>
|
</condition>
|
|
<!-- sort-of Maven like properties for opendj dependencies -->
|
<fileset id="opendj.runtime.jars" dir="${lib.dir}/compile" />
|
<fileset id="opendj.test.jars" dir="${lib.dir}/test" />
|
|
<!-- Prevent ant runtime from being included on classpath during
|
compilation. -->
|
<presetdef name="javac">
|
<javac optimize="true" includeantruntime="false"
|
source="1.6" target="1.6"
|
debug="on" debuglevel="${build.debuglevel}"
|
deprecation="true" fork="true"
|
memoryInitialSize="${MEM}" memoryMaximumSize="${MEM}">
|
<compilerarg value="-Xlint:all" />
|
<compilerarg value="-Xlint:-rawtypes" />
|
<compilerarg value="-Xlint:-static" />
|
<compilerarg value="-Xlint:-unchecked" />
|
</javac>
|
</presetdef>
|
|
<!-- Create a package bundle containing the DSML library. -->
|
<target name="dsml" depends="predsml,package"
|
description="Build a Directory Server package bundle with DSML.">
|
</target>
|
|
<target name="initPrecommit">
|
<property name="isPrecommit" value="true"/>
|
</target>
|
|
<!-- The build target that should be used before committing code. -->
|
<target name="precommit" depends="initPrecommit,clean,dynamicconstants,
|
checkstyle,checkprecommit,dsml,test"
|
description="Perform all processing needed before committing code.">
|
</target>
|
|
<!-- The build target that should be used for nightly builds. -->
|
<target name="nightly"
|
depends="nightlybuild,nightlytests"
|
description="Perform all processing needed for nightly builds.">
|
</target>
|
|
<!-- The build target that should be used for build part of nightly builds. -->
|
<target name="nightlybuild"
|
depends="checkstyle,dsml,srczip,javadoc,docgen"
|
description="Perform all processing related to build for nightly builds.">
|
</target>
|
|
<!-- The build target that should be used for test part of nightly builds. -->
|
<target name="nightlytests"
|
depends="testall"
|
description="Perform all processing related to unit tests for nightly builds.">
|
</target>
|
|
|
<!-- The build target that should be used for weekly builds. -->
|
<target name="weekly" depends="nightly"
|
description="Perform all processing needed for weekly builds.">
|
</target>
|
|
<target name="prepare-release" depends="check-no-snapshot-dependencies,check-documentations-built-with-correct-url"
|
description="Performs all the checks to prepare a release.">
|
<echo>
|
Previous checks succeeded.
|
|
Please:
|
1- Check the archive has no build number
|
2- Check the archive contains the license
|
3- Run the tests
|
</echo>
|
</target>
|
|
<target name="check-documentations-built-with-correct-url">
|
<fail message="The documentation must be built with the correct URL. Incorrectly found 'opendj.forgerock.org' inside PRODUCT file.">
|
<condition>
|
<resourcecontains resource="PRODUCT" substring="opendj.forgerock.org" />
|
</condition>
|
</fail>
|
</target>
|
|
|
<!-- The build target that should be used to build everything. -->
|
<target name="all"
|
depends="checkstyle,clean,checkprecommit,dsml,srczip,javadoc,docgen,testall"
|
description="Build using all defined targets.">
|
</target>
|
|
|
<target name="generatemessages" depends="buildtools">
|
<typedef name="genmsg"
|
classname="org.opends.build.tools.GenerateMessageFile" >
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</typedef>
|
<!--
|
<genmsg sourceProps="${msg.prop.dir}/xxx.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/XxxMessages.java">
|
</genmsg>
|
-->
|
<genmsg sourceProps="${msg.prop.dir}/access_control.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/AccessControlMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/admin.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/AdminMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/admin_tool.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/AdminToolMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/backend.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/BackendMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/config.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/ConfigMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/core.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/CoreMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/dsconfig.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/DSConfigMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/extension.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/ExtensionMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/jeb.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/JebMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/log.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/LoggerMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/plugin.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/PluginMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/protocol.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/ProtocolMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/quicksetup.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/QuickSetupMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/replication.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/ReplicationMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/schema.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/SchemaMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/task.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/TaskMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/tools.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/ToolMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/utility.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/UtilityMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/version.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/VersionMessages.java">
|
</genmsg>
|
<genmsg sourceProps="${msg.prop.dir}/runtime_information.properties"
|
destJava="${msg.javagen.dir}/org/opends/messages/RuntimeMessages.java">
|
</genmsg>
|
|
</target>
|
|
|
<target name="generateLogReference" depends="buildtools">
|
<typedef name="genlogref"
|
classname="org.opends.build.tools.GenerateMessageFile" >
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</typedef>
|
<!--
|
<genlogref sourceProps="${msg.prop.dir}/xxx_yyy.properties"
|
destJava="${msg.logref.dir}/log-ref-xxx-yyy.xml"
|
writelogref="true" />
|
-->
|
<genlogref sourceProps="${msg.prop.dir}/access_control.properties"
|
destJava="${msg.logref.dir}/log-ref-access-control.xml"
|
writelogref="true" />
|
<genlogref sourceProps="${msg.prop.dir}/admin.properties"
|
destJava="${msg.logref.dir}/log-ref-admin.xml"
|
writelogref="true" />
|
<!-- Ignore admin tool messages while documenting only serious errors.
|
<genlogref sourceProps="${msg.prop.dir}/admin_tool.properties"
|
destJava="${msg.logref.dir}/log-ref-admin-tool.xml"
|
writelogref="true" />
|
-->
|
<genlogref sourceProps="${msg.prop.dir}/backend.properties"
|
destJava="${msg.logref.dir}/log-ref-backend.xml"
|
writelogref="true" />
|
<genlogref sourceProps="${msg.prop.dir}/config.properties"
|
destJava="${msg.logref.dir}/log-ref-config.xml"
|
writelogref="true" />
|
<genlogref sourceProps="${msg.prop.dir}/core.properties"
|
destJava="${msg.logref.dir}/log-ref-core.xml"
|
writelogref="true" />
|
<genlogref sourceProps="${msg.prop.dir}/dsconfig.properties"
|
destJava="${msg.logref.dir}/log-ref-dsconfig.xml"
|
writelogref="true" />
|
<genlogref sourceProps="${msg.prop.dir}/extension.properties"
|
destJava="${msg.logref.dir}/log-ref-extension.xml"
|
writelogref="true" />
|
<genlogref sourceProps="${msg.prop.dir}/jeb.properties"
|
destJava="${msg.logref.dir}/log-ref-jeb.xml"
|
writelogref="true" />
|
<genlogref sourceProps="${msg.prop.dir}/log.properties"
|
destJava="${msg.logref.dir}/log-ref-log.xml"
|
writelogref="true" />
|
<genlogref sourceProps="${msg.prop.dir}/plugin.properties"
|
destJava="${msg.logref.dir}/log-ref-plugin.xml"
|
writelogref="true" />
|
<genlogref sourceProps="${msg.prop.dir}/protocol.properties"
|
destJava="${msg.logref.dir}/log-ref-protocol.xml"
|
writelogref="true" />
|
<!-- Ignore QuickSetup messages that users handle interactively.
|
<genlogref sourceProps="${msg.prop.dir}/quicksetup.properties"
|
destJava="${msg.logref.dir}/log-ref-quicksetup.xml"
|
writelogref="true" />
|
-->
|
<genlogref sourceProps="${msg.prop.dir}/replication.properties"
|
destJava="${msg.logref.dir}/log-ref-replication.xml"
|
writelogref="true" />
|
<!-- Ignore runtime info messages while documenting only serious errors.
|
<genlogref sourceProps="${msg.prop.dir}/runtime_information.properties"
|
destJava="${msg.logref.dir}/log-ref-runtime-information.xml"
|
writelogref="true" />
|
-->
|
<genlogref sourceProps="${msg.prop.dir}/schema.properties"
|
destJava="${msg.logref.dir}/log-ref-schema.xml"
|
writelogref="true" />
|
<genlogref sourceProps="${msg.prop.dir}/task.properties"
|
destJava="${msg.logref.dir}/log-ref-task.xml"
|
writelogref="true" />
|
<genlogref sourceProps="${msg.prop.dir}/tools.properties"
|
destJava="${msg.logref.dir}/log-ref-tools.xml"
|
writelogref="true" />
|
<genlogref sourceProps="${msg.prop.dir}/utility.properties"
|
destJava="${msg.logref.dir}/log-ref-utility.xml"
|
writelogref="true" />
|
<!-- Ignore version messages while documenting only serious errors.
|
<genlogref sourceProps="${msg.prop.dir}/version.properties"
|
destJava="${msg.logref.dir}/log-ref-version.xml"
|
writelogref="true" />
|
-->
|
|
<copy file="${resource.dir}/log-message-reference.xml"
|
todir="${msg.logref.dir}" />
|
</target>
|
|
<!-- Remove all dynamically-generated build files. -->
|
<target name="clean" depends="init,cleanadmin,cleanmessages,cleansnmp,cleanlib"
|
description="Clean up any files generated during the build process">
|
|
<delete dir="${build.dir}" />
|
<delete file="${dynconstants.file}" />
|
<fileset dir="${lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
</target>
|
|
|
|
<!-- Perform common initialization common to several targets after cleaning out the previous build environment. -->
|
<target name="cleaninit" depends="clean,init">
|
</target>
|
|
|
|
<!-- Set the property valid.java.version if the java version is valid. -->
|
<target name="validjavaversion"
|
depends="buildtools" >
|
|
<property name="min.java.version" value="1.6.0_10" />
|
|
<typedef name="validjavaversion"
|
classname="org.opends.build.tools.ValidJavaVersion" >
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</typedef>
|
|
<condition property="valid.java.version">
|
<validjavaversion minVersion="${min.java.version}" />
|
</condition>
|
|
</target>
|
|
<!-- Warn if the build java version is too old. -->
|
<target name="checkjavaversion"
|
depends="validjavaversion"
|
unless="valid.java.version" >
|
<echo level="warning"
|
message="WARNING: Java version ${java.version} is too old."/>
|
<echo level="warning"
|
message="Java version ${min.java.version} or later is required to build ${SHORT_NAME}."/>
|
</target>
|
|
|
<!-- Perform common initialization common to several targets. -->
|
<target name="init">
|
|
<path id="run.classpath">
|
<pathelement location="${classes.dir}" />
|
</path>
|
|
<path id="quickSetup.classpath">
|
<pathelement location="${quicksetup.classes.dir}" />
|
</path>
|
|
<tstamp>
|
<format property="timestamp" pattern="yyyyMMddHHmmss'Z'"
|
timezone="UTC" />
|
</tstamp>
|
|
<condition property="DEBUG_BUILD" value="false">
|
<not>
|
<isset property="DEBUG_BUILD" />
|
</not>
|
</condition>
|
|
|
<!--
|
! For some reason, some Apple VMs put quotes around the value of the
|
! java.vm.vendor property, which wreaks havoc with DynamicConstants. This
|
! pair of conditions attempts to work around that by detecting the quote
|
! and surrounding the value with backslashes.
|
! -->
|
<condition property="JVM_VENDOR" value="Apple Computer">
|
<contains string="${java.vm.vendor}" substring="Apple Computer"
|
casesensitive="false" />
|
</condition>
|
|
<condition property="JVM_VENDOR" value="${java.vm.vendor}">
|
<not>
|
<isset property="JVM_VENDOR" />
|
</not>
|
</condition>
|
|
<condition property="isopendmkpresent">
|
<or>
|
<and>
|
<available file="${opendmk.lib.dir}/jdmkrt.jar"/>
|
<available file="${opendmk.lib.dir}/jdmktk.jar"/>
|
</and>
|
<and>
|
<available file="${ext.dir}/jdmkrt.jar"/>
|
<available file="${ext.dir}/jdmktk.jar"/>
|
</and>
|
</or>
|
</condition>
|
|
<condition property="isadmingendirpresent">
|
<available file="${admin.src.dir}" type="dir" />
|
</condition>
|
|
<condition property="ismsggendirpresent">
|
<available file="${msg.javagen.dir}" type="dir" />
|
</condition>
|
|
</target>
|
|
|
|
|
<!-- Build the DynamicConstants.java file and any of its dependencies. -->
|
<target name="dynamicconstants" depends="init,buildtools">
|
<!-- Get the revision number of the current Subversion workspace -->
|
<taskdef name="getsvnrevision"
|
classname="org.opends.build.tools.GetSubversionRevision">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
<fileset dir="${svnkit.dir}">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</taskdef>
|
|
<getsvnrevision property="REVISION_NUMBER" />
|
|
<!-- Get the url repo of the current Subversion workspace -->
|
<taskdef name="getsvnurlrepo"
|
classname="org.opends.build.tools.GetSubversionUrlRepo">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
<fileset dir="${svnkit.dir}">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</taskdef>
|
|
<getsvnurlrepo property="URL_REPOSITORY" />
|
|
|
<!-- Construct the version number string -->
|
<taskdef name="getversionnumber"
|
classname="org.opends.build.tools.CreateVersionString">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</taskdef>
|
|
<getversionnumber property="VERSION_NUMBER_STRING" />
|
|
|
<!-- Generate the DynamicConstants.java file.
|
Be warned that the .stubs file references the following properties
|
PRODUCT_NAME, SHORT_NAME, MAJOR_VERSION, MINOR_VERSION, POINT_VERSION,
|
VERSION_QUALIFIER, FIX_IDS, timestamp, user.name, java.version,
|
java.vendor, java.vm.version, JVM_VENDOR, DEBUG_BUILD, REVISION_NUMBER,URL_REPOSITORY,
|
VERSION_NUMBER_STRING
|
If you change the name of any of those properties in this build.xml
|
you'll need to reflect the same change in the .stubs file
|
-->
|
<condition property="BUILD_NUMBER" value="-1">
|
<not>
|
<isset property="BUILD_NUMBER" />
|
</not>
|
</condition>
|
|
<copy file="${dynconstants.stubfile}"
|
tofile="${dynconstants.file}"
|
overwrite="true" >
|
<filterchain>
|
<expandproperties/>
|
</filterchain>
|
</copy>
|
</target>
|
|
|
|
|
<!-- Check modified files to see if any svn:eol-style or copyright updates
|
are needed. -->
|
<target name="checkprecommit" depends="buildtools"
|
description="Ensure updated files eol-style and copyright info">
|
<taskdef name="checkprecommit"
|
classname="org.opends.build.tools.CheckPrecommit">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
<fileset dir="${svnkit.dir}">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</taskdef>
|
|
<checkprecommit />
|
</target>
|
|
|
|
<!-- Ensure that the source code meets basic style requirements. -->
|
<target name="checkstyle" description="Perform basic source style checks">
|
<antcall target="displayjavaversion"/>
|
<mkdir dir="${checkstyle.cache.dir}" />
|
|
<taskdef resource="checkstyletask.properties"
|
classpath="${checkstyle.dir}/checkstyle-all-4.1.jar" />
|
|
<checkstyle config="${checkstyle.dir}/opends-checkstyle.xml"
|
failOnViolation="true">
|
<fileset dir="${src.dir}">
|
<include name="**/*.java"/>
|
<exclude name="**/PublicAPI.java" />
|
</fileset>
|
<formatter type="plain" />
|
</checkstyle>
|
|
<checkstyle config="${checkstyle.dir}/opends-checkstyle.xml"
|
failOnViolation="true">
|
<fileset dir="${msg.src.dir}" includes="**/*.java" />
|
<formatter type="plain" />
|
</checkstyle>
|
|
<checkstyle config="${checkstyle.dir}/opends-checkstyle.xml"
|
failOnViolation="true">
|
<fileset dir="${ads.src.dir}" includes="**/*.java" />
|
<formatter type="plain" />
|
</checkstyle>
|
|
<checkstyle config="${checkstyle.dir}/opends-checkstyle.xml"
|
failOnViolation="true">
|
<fileset dir="${snmp.src.dir}" includes="**/*.java" />
|
<formatter type="plain" />
|
</checkstyle>
|
|
<checkstyle config="${checkstyle.dir}/opends-checkstyle.xml"
|
failOnViolation="true">
|
<fileset dir="${quicksetup.src.dir}" includes="**/*.java" />
|
<formatter type="plain" />
|
</checkstyle>
|
|
<checkstyle config="${checkstyle.dir}/opends-checkstyle.xml"
|
failOnViolation="true">
|
<fileset dir="${guitools.src.dir}" includes="**/*.java" />
|
<formatter type="plain" />
|
</checkstyle>
|
|
<checkstyle config="${checkstyle.dir}/opends-checkstyle.xml"
|
failOnViolation="true">
|
<fileset dir="${dsml.src.dir}" includes="**/*.java" />
|
<formatter type="plain" />
|
</checkstyle>
|
|
<checkstyle config="${checkstyle.dir}/opends-unittest-checkstyle.xml"
|
failOnViolation="true">
|
<fileset dir="${unittest.testng.src.dir}" includes="**/*.java" />
|
<formatter type="plain" />
|
</checkstyle>
|
</target>
|
|
|
|
<target name="cleancompile"
|
depends="cleaninit,compilequicksetup"
|
description="Recompile the Directory Server source files.">
|
</target>
|
|
<target name="generatesources"
|
depends="dynamicconstants,generatemessages,generateadmin"
|
description="Generate all the sources.">
|
</target>
|
|
<!-- This target retrieves the libs, and generates the sources -->
|
<target name="eclipse" depends="resolve,generatesources,copymessages"
|
description="Set up all the files and directories required for the Eclipse project">
|
<copy todir=".eclipse-build">
|
<fileset dir="${classes.dir}">
|
<include name="admin/**" />
|
<include name="messages/**" />
|
</fileset>
|
</copy>
|
<echo>Refresh the OpenDJ server project in Eclipse: Select the OpenDJ server project and press 'F5' key</echo>
|
</target>
|
|
<target name="compile"
|
depends="init,checkjavaversion,generatesources,resolve"
|
description="Compile the Directory Server source files.">
|
<mkdir dir="${classes.dir}" />
|
<mkdir dir="${build.lib.dir}" />
|
|
<javac srcdir="${src.dir}:${admin.src.dir}:${msg.src.dir}:${msg.javagen.dir}:${ads.src.dir}:${quicksetup.src.dir}:${guitools.src.dir}"
|
destdir="${classes.dir}">
|
<classpath>
|
<fileset refid="opendj.runtime.jars"/>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="build-tools.jar" />
|
</fileset>
|
<fileset dir="${build.lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</javac>
|
|
<copy todir="${classes.dir}">
|
<fileset dir="${src.dir}" includes="**/*.properties" />
|
<fileset dir="${quicksetup.src.dir}" includes="**/*.properties, **/*.gif, **/*.png" />
|
<fileset dir="${guitools.src.dir}" includes="**/*.properties, **/*.gif, **/*.png" />
|
</copy>
|
</target>
|
|
|
|
<!-- Compile the Quick Setup source files. -->
|
<target name="compilequicksetup" depends="buildtools,compile"
|
description="Compile the Quick Setup source files.">
|
<mkdir dir="${quicksetup.classes.dir}" />
|
<javac srcdir="${ads.src.dir}" destdir="${quicksetup.classes.dir}">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="build-tools.jar" />
|
</fileset>
|
<pathelement path="${classes.dir}"/>
|
</classpath>
|
</javac>
|
<javac srcdir="${src.dir}:${msg.src.dir}:${msg.javagen.dir}" destdir="${quicksetup.classes.dir}">
|
<include name="**/org/opends/server/util/SetupUtils.java"/>
|
<include name="**/org/opends/server/util/CertificateManager.java"/>
|
<include name="**/org/opends/server/util/DynamicConstants.java"/>
|
<include name="**/org/opends/server/types/OperatingSystem.java"/>
|
<include name="**/org/opends/messages/Message.java"/>
|
<include name="**/org/opends/messages/MessageBuilder.java"/>
|
<include name="**/org/opends/messages/MessageDescriptor.java"/>
|
<include name="**/org/opends/messages/Severity.java"/>
|
<include name="**/org/opends/messages/Category.java"/>
|
<include name="**/org/opends/messages/QuickSetupMessages.java"/>
|
<include name="**/org/opends/server/types/OpenDsException.java"/>
|
</javac>
|
<javac srcdir="${quicksetup.src.dir}" destdir="${quicksetup.classes.dir}">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="build-tools.jar" />
|
</fileset>
|
<pathelement path="${classes.dir}"/>
|
</classpath>
|
</javac>
|
<copy todir="${quicksetup.classes.dir}">
|
<fileset dir="${quicksetup.src.dir}"
|
includes="**/*.properties, **/*.gif, **/*.png" />
|
</copy>
|
<mkdir dir="${quicksetup.classes.dir}/messages" />
|
<copy todir="${quicksetup.classes.dir}/messages">
|
<fileset dir="${msg.prop.dir}"
|
includes="**/quicksetup.properties" />
|
</copy>
|
|
</target>
|
|
|
|
<!-- copy the message properties files -->
|
<target name="copymessages">
|
<mkdir dir="${msg.package.dir}"/>
|
<copy todir="${msg.package.dir}">
|
<fileset dir="${msg.prop.dir}"/>
|
</copy>
|
</target>
|
|
<!-- copy the l10n message properties files (for generated messages)-->
|
<target name="copyl10nmessages">
|
<copy todir="${build.dir}/classes/admin/messages/org/opends/server/admin/std/meta/">
|
<fileset dir="${msgl10n.prop.dir}" includes="*_fr.properties,*_de.properties,
|
*_es.properties,*_ja.properties,*_ko.properties,*_zh_CN.properties,
|
*_zh_TW.properties,*_pl.properties,*_ca_ES.properties">
|
</fileset>
|
</copy>
|
|
<!-- check if the english generated files are different from the ones -->
|
<!-- used for localization and copy the files that are different to a -->
|
<!-- directory named diff -->
|
<mkdir dir="${msgl10n.diff.dir}/diff"/>
|
<copy todir="${msgl10n.diff.dir}/diff" verbose="true">
|
<fileset dir="${build.dir}/classes/admin/messages/org/opends/server/admin/std/meta/"
|
excludes="*_fr.properties,*_de.properties,*_es.properties,*_ja.properties,
|
*_ko.properties,*_zh_CN.properties,*_zh_TW.properties,*_pl.properties,
|
*_ca_ES.properties">
|
<different targetdir="${msgl10n.prop.dir}" ignoreFileTimes="true" />
|
</fileset>
|
</copy>
|
|
<fileset id="fs" dir="${msgl10n.diff.dir}/diff"/>
|
<condition property="dir_empty">
|
<length length="0">
|
<fileset refid="fs"/>
|
</length>
|
</condition>
|
|
<fail unless="dir_empty" if="isPrecommit"
|
message="Generated admin message properties files differ from existing files :
|
Copy all files from ${msgl10n.diff.dir}/diff to ${msgl10n.prop.dir}
|
and include them for commit to resolve.">
|
</fail>
|
</target>
|
|
<!--
|
! Rebuild the Directory Server without destroying any existing configuration
|
! or data. It will only overwrite the libraries, classes, and scripts, and
|
! it will not re-package. It will also not do a complete initialization, so
|
! DynamicConstants.java won't be regenerated.
|
! -->
|
<target name="rebuild" depends="generatemessages"
|
description="Rebuild the server without destroying config or data.">
|
|
<!-- Construct the version number string -->
|
<taskdef name="getversionnumber"
|
classname="org.opends.build.tools.CreateVersionString">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</taskdef>
|
|
<getversionnumber property="VERSION_NUMBER_STRING" />
|
|
<!-- Set properties needed to find the packaged files -->
|
<property name="pdir"
|
location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}" />
|
|
<!-- Clean up a minimal set of files/directories for the rebuild. -->
|
<delete dir="${classes.dir}" />
|
<delete file="${package.dir}/lib/${SHORT_NAME}.jar" />
|
<delete file="${pdir}.zip" />
|
<delete dir="${quicksetup.classes.dir}" />
|
<delete file="${package.dir}/lib/quicksetup.jar" />
|
|
<!-- Regenerate configuration files if necessary -->
|
<antcall target="generateadmin" />
|
|
<!-- Recreate the classes directory and recompile into it. -->
|
<mkdir dir="${classes.dir}" />
|
<javac srcdir="${src.dir}:${msg.src.dir}:${msg.javagen.dir}:${admin.src.dir}:${ads.src.dir}:${quicksetup.src.dir}:${guitools.src.dir}"
|
destdir="${classes.dir}">
|
<classpath>
|
<fileset refid="opendj.runtime.jars"/>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="build-tools.jar" />
|
</fileset>
|
<fileset dir="${build.lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</javac>
|
|
<copy todir="${classes.dir}">
|
<fileset dir="${src.dir}" includes="**/*.properties" />
|
<fileset dir="${quicksetup.src.dir}" includes="**/*.properties, **/*.gif, **/*.png" />
|
<fileset dir="${guitools.src.dir}" includes="**/*.properties, **/*.gif, **/*.png" />
|
</copy>
|
|
<!-- copy the message properties files -->
|
<antcall target="copymessages" />
|
|
|
<!-- copy the message descriptor registry file -->
|
<copy todir="${classes.dir}/org/opends/messages"
|
file="${msg.javagen.dir}/org/opends/messages/descriptors.reg" />
|
|
<!-- Generate the OpenDS.jar file -->
|
<jar jarfile="${pdir}/lib/${SHORT_NAME}.jar"
|
basedir="${classes.dir}"
|
excludes="${ads.classes.dir}, ${quicksetup.globalcompile.classes.dir}"
|
compress="true" index="true" />
|
|
<!-- Recreate the quicksetup classes directory and recompile into it. -->
|
<mkdir dir="${quicksetup.classes.dir}" />
|
<javac srcdir="${ads.src.dir}" destdir="${quicksetup.classes.dir}">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="build-tools.jar" />
|
</fileset>
|
<pathelement path="${classes.dir}"/>
|
</classpath>
|
</javac>
|
<javac srcdir="${src.dir}:${msg.src.dir}:${msg.javagen.dir}" destdir="${quicksetup.classes.dir}">
|
<include name="**/org/opends/server/util/SetupUtils.java"/>
|
<include name="**/org/opends/server/util/CertificateManager.java"/>
|
<include name="**/org/opends/server/util/DynamicConstants.java"/>
|
<include name="**/org/opends/server/types/OperatingSystem.java"/>
|
<include name="**/org/opends/messages/Message.java"/>
|
<include name="**/org/opends/messages/MessageBuilder.java"/>
|
<include name="**/org/opends/messages/MessageDescriptor.java"/>
|
<include name="**/org/opends/messages/Severity.java"/>
|
<include name="**/org/opends/messages/Category.java"/>
|
<include name="**/org/opends/messages/QuickSetupMessages.java"/>
|
<include name="**/org/opends/server/types/OpenDsException.java"/>
|
</javac>
|
<javac srcdir="${quicksetup.src.dir}" destdir="${quicksetup.classes.dir}">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="build-tools.jar" />
|
</fileset>
|
<pathelement path="${classes.dir}"/>
|
</classpath>
|
</javac>
|
|
<copy todir="${quicksetup.classes.dir}">
|
<fileset dir="${quicksetup.src.dir}"
|
includes="**/*.properties, **/*.gif, **/*.png"/>
|
</copy>
|
|
<!-- Generate the quicksetup.jar file -->
|
<jar jarfile="${pdir}/lib/quicksetup.jar"
|
basedir="${quicksetup.classes.dir}" compress="true" index="true" />
|
|
<!-- Copy over external dependencies. -->
|
<copy todir="${pdir}/lib">
|
<fileset file="${build.lib.dir}/*.jar" />
|
</copy>
|
|
<!-- Regenerate example plugin. -->
|
<antcall target="example-plugin" />
|
|
<!-- Copy license if required. -->
|
<antcall target="copylicense" />
|
</target>
|
|
|
<!-- Generate the Configuration guides. -->
|
<target name="docgen" depends="configguide,configguideldap"
|
description="Generate the Configuration guides (1 standard + 1 with ldap mapping) (html).">
|
</target>
|
|
<!-- Generate the Standard Configuration guide. -->
|
<target name="configguide" depends="compile,copymessages"
|
description="Generate the Configuration guide (standard) (html).">
|
<mkdir dir="${configguide.dir}" />
|
<!-- copy the resource files -->
|
<copy todir="${configguide.dir}">
|
<fileset file="${configguide.resource.dir}/*" />
|
</copy>
|
<java fork="true" classname="org.opends.server.admin.doc.ConfigGuideGeneration" failonerror="true">
|
<classpath>
|
<fileset refid="opendj.runtime.jars"/>
|
<dirset dir="${classes.dir}" />
|
</classpath>
|
<jvmarg value="-DGenerationDir=${configguide.dir}"/>
|
<jvmarg value="-DOpendsWiki=${wiki.home}"/>
|
</java>
|
</target>
|
|
<!-- Generate the Configuration guide with LDAP mapping. -->
|
<target name="configguideldap" depends="compile,copymessages"
|
description="Generate the Configuration guide (with LDAP mapping) (html).">
|
<mkdir dir="${configguideldap.dir}" />
|
<!-- copy the resource files -->
|
<copy todir="${configguideldap.dir}">
|
<fileset file="${configguide.resource.dir}/*" />
|
</copy>
|
<java fork="true" classname="org.opends.server.admin.doc.ConfigGuideGeneration" failonerror="true">
|
<classpath>
|
<fileset refid="opendj.runtime.jars"/>
|
<dirset dir="${classes.dir}" />
|
</classpath>
|
<jvmarg value="-DGenerationDir=${configguideldap.dir}"/>
|
<jvmarg value="-DOpendsWiki=${wiki.home}"/>
|
<jvmarg value="-DLdapMapping"/>
|
</java>
|
</target>
|
|
<!-- Create license file if requested.
|
|
This target should only be called from targets which have defined the
|
pdir property, such as prepackage and rebuild.
|
|
The license file will be copied to ${pdir}/Legal/license_to_accept.txt.
|
This file location is hard-coded in the following classes:
|
|
org.opends.server.tools.upgrade.LicenseFile
|
org.opends.quicksetup.LicenseFile
|
|
Care must be taken to keep these filenames synchronized.
|
-->
|
<target name="copylicense" if="include.license.file" >
|
<mkdir dir="${pdir}/Legal" />
|
<copy tofile="${pdir}/Legal/license_to_accept.txt" file="${license.file}" />
|
</target>
|
|
<!-- Populate the Directory Server package, but don't zip it up. -->
|
<target name="prepackage" depends="cleancompile"
|
description="Prepare the Directory Server package structure.">
|
<property name="pdir"
|
location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}" />
|
|
<mkdir dir="${pdir}" />
|
<mkdir dir="${pdir}/bat" />
|
<mkdir dir="${pdir}/bin" />
|
<mkdir dir="${pdir}/legal-notices" />
|
<mkdir dir="${pdir}/lib" />
|
<mkdir dir="${pdir}/lib/extensions" />
|
<mkdir dir="${pdir}/template" />
|
<mkdir dir="${pdir}/template/bak" />
|
<mkdir dir="${pdir}/template/changelogDb" />
|
<mkdir dir="${pdir}/template/classes" />
|
<mkdir dir="${pdir}/template/config" />
|
<mkdir dir="${pdir}/template/config/schema" />
|
<mkdir dir="${pdir}/template/config/messages" />
|
<mkdir dir="${pdir}/template/config/MakeLDIF" />
|
<mkdir dir="${pdir}/template/config/upgrade" />
|
<mkdir dir="${pdir}/template/db" />
|
<mkdir dir="${pdir}/template/import-tmp" />
|
<mkdir dir="${pdir}/template/ldif" />
|
<mkdir dir="${pdir}/template/locks" />
|
<mkdir dir="${pdir}/template/logs" />
|
<mkdir dir="${pdir}/bin/ControlPanel.app" />
|
<mkdir dir="${pdir}/bin/ControlPanel.app/Contents" />
|
<mkdir dir="${pdir}/bin/ControlPanel.app/Contents/MacOS" />
|
<mkdir dir="${pdir}/bin/ControlPanel.app/Contents/Resources" />
|
<mkdir dir="${pdir}/bin/ControlPanel.app/Contents/Resources/Java"/>
|
<mkdir dir="${pdir}/QuickSetup.app" />
|
<mkdir dir="${pdir}/QuickSetup.app/Contents" />
|
<mkdir dir="${pdir}/QuickSetup.app/Contents/MacOS" />
|
<mkdir dir="${pdir}/QuickSetup.app/Contents/Resources" />
|
<mkdir dir="${pdir}/QuickSetup.app/Contents/Resources/Java" />
|
<mkdir dir="${pdir}/Uninstall.app" />
|
<mkdir dir="${pdir}/Uninstall.app/Contents" />
|
<mkdir dir="${pdir}/Uninstall.app/Contents/MacOS" />
|
<mkdir dir="${pdir}/Uninstall.app/Contents/Resources" />
|
<mkdir dir="${pdir}/Uninstall.app/Contents/Resources/Java" />
|
|
|
<!-- copy the message properties files -->
|
<antcall target="copymessages" />
|
|
<!-- copy the l10n message properties files -->
|
<antcall target="copyl10nmessages" />
|
|
|
<!-- copy the message descriptor registry file -->
|
<copy todir="${classes.dir}/org/opends/messages"
|
file="${msg.javagen.dir}/org/opends/messages/descriptors.reg" />
|
|
<jar jarfile="${pdir}/lib/${SHORT_NAME}.jar"
|
basedir="${classes.dir}"
|
excludes="${ads.classes.dir}, ${quicksetup.globalcompile.classes.dir}, org/opends/server/snmp/**,**/*_fr.properties,**/*_ja.properties,**/*_de.properties,**/*_es.properties,**/*_zh_TW.properties,**/*_zh_CN.properties,**/*_ko.properties,**/*_pl.properties,**/*_ca_ES.properties"
|
compress="true" index="true" />
|
|
<jar jarfile="${pdir}/lib/${SHORT_NAME}_fr.jar"
|
basedir="${classes.dir}"
|
includes="**/*_fr.properties"
|
compress="true" index="true" />
|
|
<jar jarfile="${pdir}/lib/${SHORT_NAME}_ja.jar"
|
basedir="${classes.dir}"
|
includes="**/*_ja.properties"
|
compress="true" index="true" />
|
|
<jar jarfile="${pdir}/lib/${SHORT_NAME}_de.jar"
|
basedir="${classes.dir}"
|
includes="**/*_de.properties"
|
compress="true" index="true" />
|
|
<jar jarfile="${pdir}/lib/${SHORT_NAME}_es.jar"
|
basedir="${classes.dir}"
|
includes="**/*_es.properties"
|
compress="true" index="true" />
|
|
<jar jarfile="${pdir}/lib/${SHORT_NAME}_ko.jar"
|
basedir="${classes.dir}"
|
includes="**/*_ko.properties"
|
compress="true" index="true" />
|
|
<jar jarfile="${pdir}/lib/${SHORT_NAME}_zh_CN.jar"
|
basedir="${classes.dir}"
|
includes="**/*_zh_CN.properties"
|
compress="true" index="true" />
|
|
<jar jarfile="${pdir}/lib/${SHORT_NAME}_zh_TW.jar"
|
basedir="${classes.dir}"
|
includes="**/*_zh_TW.properties"
|
compress="true" index="true" />
|
|
<jar jarfile="${pdir}/lib/${SHORT_NAME}_pl.jar"
|
basedir="${classes.dir}"
|
includes="**/*_pl.properties"
|
compress="true" index="true" />
|
|
<jar jarfile="${pdir}/lib/${SHORT_NAME}_ca_ES.jar"
|
basedir="${classes.dir}"
|
includes="**/*_ca_ES.properties"
|
compress="true" index="true" />
|
|
<jar jarfile="${pdir}/lib/quicksetup.jar"
|
basedir="${quicksetup.classes.dir}" compress="true" index="true" />
|
|
<copy todir="${pdir}/lib" flatten="true">
|
<fileset refid="opendj.runtime.jars"/>
|
</copy>
|
|
<copy todir="${pdir}/lib">
|
<fileset file="${lib.dir}/*.exe" />
|
</copy>
|
|
<antcall target="example-plugin" />
|
|
<fixcrlf srcDir="${scripts.dir}" destDir="${pdir}/bin" excludes="*.bat,_client-script.sh,_server-script.sh,_mixed-script.sh,_script-util.sh" eol="lf" />
|
<fixcrlf srcDir="${scripts.dir}" destDir="${pdir}/lib" includes="_client-script.sh,_server-script.sh,_mixed-script.sh,_script-util.sh" eol="lf" />
|
<fixcrlf srcDir="${scripts.dir}" destDir="${pdir}/bat" excludes="_client-script.bat,_server-script.bat,_mixed-script.bat,_script-util.bat,setcp.bat" includes="*.bat" eol="crlf" />
|
<fixcrlf srcDir="${scripts.dir}" destDir="${pdir}/lib" includes="_client-script.bat,_server-script.bat,_mixed-script.bat,_script-util.bat,setcp.bat" eol="crlf" />
|
|
<copy todir="${pdir}/template/config">
|
<fileset file="${config.dir}/*" />
|
</copy>
|
|
<antcall target="package-snmp" />
|
|
<!-- Build the bootstrap jar that avoids getting the error message "The input line is too long" on Windows -->
|
<manifestclasspath property="manifest.classpath"
|
jarfile="${pdir}/lib/bootstrap.jar">
|
<classpath>
|
<fileset dir="${pdir}/lib">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</manifestclasspath>
|
<jar jarfile="${pdir}/lib/bootstrap.jar">
|
<manifest>
|
<attribute name="Built-By" value="${user.name}" />
|
<attribute name="Class-Path" value="${manifest.classpath}" />
|
</manifest>
|
</jar>
|
|
<!-- Create buildinfo files -->
|
<echo message="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}.${REVISION_NUMBER}"
|
file="${pdir}/template/config/buildinfo" />
|
|
<taskdef name="concatschema"
|
classname="org.opends.build.tools.ConcatSchema">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</taskdef>
|
|
<concatschema schemaDirectory="${resource.dir}/schema"
|
toFile="${pdir}/template/config/upgrade/schema.ldif.${REVISION_NUMBER}" />
|
|
<copy todir="${pdir}/template/config/schema">
|
<fileset dir="${resource.dir}/schema" />
|
</copy>
|
|
<copy todir="${pdir}/template/config/messages">
|
<fileset dir="${resource.dir}/messages" />
|
</copy>
|
|
<copy todir="${pdir}/template/config/MakeLDIF">
|
<fileset dir="${resource.dir}/MakeLDIF" />
|
</copy>
|
|
<copy todir="${pdir}/legal-notices">
|
<fileset dir="${resource.dir}/legal-notices" />
|
</copy>
|
<antcall target="copylicense" />
|
|
<copy todir="${pdir}">
|
<fileset file="${resource.dir}/README" />
|
</copy>
|
<copy todir="${pdir}">
|
<fileset file="${resource.dir}/images/opendj_logo.png" />
|
</copy>
|
|
<fixcrlf srcDir="${resource.dir}" destDir="${pdir}" includes="setup,uninstall,upgrade"
|
eol="lf" />
|
<fixcrlf srcDir="${resource.dir}" destDir="${pdir}" includes="setup.bat,uninstall.bat,upgrade.bat"
|
eol="crlf" />
|
|
<chmod file="${pdir}/setup" perm="755" />
|
<chmod file="${pdir}/uninstall" perm="755" />
|
<chmod file="${pdir}/upgrade" perm="755" />
|
|
<copy todir="${pdir}/QuickSetup.app">
|
<fileset dir="${resource.dir}/mac/QuickSetup.app" />
|
</copy>
|
<replace file="${pdir}/QuickSetup.app/Contents/Info.plist"
|
token="@version@"
|
value="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}"/>
|
<replace file="${pdir}/QuickSetup.app/Contents/Info.plist"
|
token="@revision@"
|
value="${REVISION_NUMBER}"/>
|
<chmod perm="755">
|
<fileset dir="${pdir}">
|
<include name="QuickSetup.app/Contents/MacOS/JavaApplicationStub" />
|
</fileset>
|
</chmod>
|
<copy todir="${pdir}/Uninstall.app">
|
<fileset dir="${resource.dir}/mac/Uninstall.app" />
|
</copy>
|
<replace file="${pdir}/Uninstall.app/Contents/Info.plist"
|
token="@version@"
|
value="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}"/>
|
<replace file="${pdir}/Uninstall.app/Contents/Info.plist"
|
token="@revision@"
|
value="${REVISION_NUMBER}"/>
|
<chmod perm="755">
|
<fileset dir="${pdir}">
|
<include name="Uninstall.app/Contents/MacOS/JavaApplicationStub" />
|
</fileset>
|
</chmod>
|
<copy todir="${pdir}/bin/ControlPanel.app">
|
<fileset dir="${resource.dir}/mac/ControlPanel.app" />
|
</copy>
|
<replace file="${pdir}/bin/ControlPanel.app/Contents/Info.plist"
|
token="@version@"
|
value="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}"/>
|
<replace file="${pdir}/bin/ControlPanel.app/Contents/Info.plist"
|
token="@revision@"
|
value="${REVISION_NUMBER}"/>
|
<chmod perm="755">
|
<fileset dir="${pdir}/bin">
|
<include name="ControlPanel.app/Contents/MacOS/JavaApplicationStub" />
|
</fileset>
|
</chmod>
|
|
<chmod perm="755">
|
<fileset dir="${pdir}/bin" />
|
</chmod>
|
<chmod file="${pdir}/lib/_client-script.sh" perm="755" />
|
<chmod file="${pdir}/lib/_server-script.sh" perm="755" />
|
<chmod file="${pdir}/lib/_mixed-script.sh" perm="755" />
|
<chmod file="${pdir}/lib/_script-util.sh" perm="755" />
|
|
<chmod perm="444">
|
<fileset dir="${pdir}/template" />
|
</chmod>
|
</target>
|
|
|
<!-- Package the Directory Server for distribution. -->
|
<target name="package" depends="prepackage"
|
description="Package the Directory Server for distribution.">
|
<zip destfile="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}.zip">
|
<zipfileset dir="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}" includes="**/*"
|
excludes="bin/*,template/**/*,lib/_client-script.sh,lib/_script-util.sh,lib/_server-script.sh,lib/_mixed-script.sh,setup,uninstall,upgrade,QuickSetup.app/Contents/MacOS/JavaApplicationStub,Uninstall.app/Contents/MacOS/JavaApplicationStub,bin/ControlPanel.app/Contents/MacOS/JavaApplicationStub"
|
filemode="644" dirmode="755" prefix="opendj" />
|
<zipfileset dir="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}"
|
includes="lib/_client-script.sh,lib/_script-util.sh,lib/_server-script.sh,lib/_mixed-script.sh"
|
filemode="755" dirmode="755" prefix="opendj" />
|
<zipfileset dir="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}" includes="bin/*"
|
filemode="755" dirmode="755" prefix="opendj" />
|
<zipfileset dir="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}" includes="setup,uninstall,upgrade,QuickSetup.app/Contents/MacOS/JavaApplicationStub,Uninstall.app/Contents/MacOS/JavaApplicationStub,bin/ControlPanel.app/Contents/MacOS/JavaApplicationStub"
|
filemode="755" dirmode="755" prefix="opendj" />
|
<zipfileset dir="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}" includes="template/**/*"
|
filemode="444" dirmode="744" prefix="opendj" />
|
</zip>
|
<property name="package.built" value="true"/>
|
|
<!-- print a time stamp in Unix 'date' format -->
|
<tstamp>
|
<format property="package.built.ts" pattern="EEE MMM dd HH:mm:ss zzz yyyy" />
|
</tstamp>
|
<echo message="Package Built: ${package.built.ts}"/>
|
</target>
|
|
<!-- Package the Directory Server for the MSI distribution. -->
|
<target name="package-MSI"
|
description="Package the Directory Server for MSI distribution.">
|
<fail unless="build.windows">MSI packages can only be built on Windows.</fail>
|
<taskdef name="getversionnumber"
|
classname="org.opends.build.tools.CreateVersionString">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</taskdef>
|
|
<getversionnumber property="VERSION_NUMBER_STRING" />
|
|
<mkdir dir="${build.dir}/msi/files" />
|
<copy toDir="${build.dir}/msi/files">
|
<fileset dir="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}">
|
<!-- Exclude Mac apps -->
|
<exclude name="QuickSetup.app/**"/>
|
<exclude name="Uninstall.app/**"/>
|
<!-- Exclude shell scripts -->
|
<exclude name="bin/**"/>
|
<exclude name="setup"/>
|
<exclude name="uninstall"/>
|
<exclude name="upgrade"/>
|
<exclude name="**/*.sh"/>
|
</fileset>
|
</copy>
|
|
<mkdir dir="${build.dir}/msi/build" />
|
<copy file="${resource.dir}/msi/package.wxs" toDir="${build.dir}/msi/build"/>
|
<mkdir dir="${build.dir}/msi/dist" />
|
|
<!-- Construct a .wxs file from the directory structure -->
|
<exec executable="heat.exe" dir="${build.dir}/msi/files">
|
<arg value="dir"/>
|
<arg value="."/>
|
<arg value="-nologo"/>
|
<arg value="-cg"/> <arg value="all"/>
|
<arg value="-gg"/>
|
<arg value="-sfrag"/>
|
<arg value="-srd"/>
|
<arg value="-dr"/> <arg value="OPENDJ"/>
|
<arg value="-var"/> <arg value="var.src"/>
|
<arg value="-template"/> <arg value="fragment"/>
|
<arg value="-o"/> <arg value="${build.dir}/msi/build/payload.wxs"/>
|
</exec>
|
|
<!-- Compile all .wxs files into .wixobj files (fast) -->
|
<exec executable="candle.exe" dir="${build.dir}/msi">
|
<arg value="-nologo"/>
|
<arg value="-out"/> <arg value="${build.dir}/msi/build/"/>
|
<arg value="-dsrc=files"/>
|
<arg value="-dname=${SHORT_NAME}"/>
|
<arg value="-dmajor=${MAJOR_VERSION}"/>
|
<arg value="-dminor=${MINOR_VERSION}"/>
|
<arg value="-dpoint=${POINT_VERSION}"/>
|
<arg value="build/package.wxs"/>
|
<arg value="build/payload.wxs"/>
|
</exec>
|
|
<!-- Build the package (slow) -->
|
<exec executable="light.exe" dir="${build.dir}/msi">
|
<arg value="-nologo"/>
|
<arg value="-ext"/> <arg value="WixUIExtension"/>
|
<arg value="-out"/> <arg value="dist/${SHORT_NAME}-${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}.msi"/>
|
<arg value="build/package.wixobj"/>
|
<arg value="build/payload.wixobj"/>
|
</exec>
|
|
</target>
|
|
<!-- Package the Directory Server for the RPM distribution. -->
|
<target name="package-RPM"
|
description="Package the Directory Server for RPM distribution.">
|
<taskdef name="getversionnumber"
|
classname="org.opends.build.tools.CreateVersionString">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</taskdef>
|
|
<getversionnumber property="VERSION_NUMBER_STRING" />
|
|
<property name="prefix" value="/opt/opendj"/>
|
<property name="release" value="1"/>
|
|
<mkdir dir="${build.dir}/rpm/BUILD" />
|
<mkdir dir="${build.dir}/rpm/RPMS" />
|
<mkdir dir="${build.dir}/rpm/SOURCES" />
|
<mkdir dir="${build.dir}/rpm/SPECS" />
|
<mkdir dir="${build.dir}/rpm/SRPMS" />
|
|
<condition property="rpmRelease" value="${release}" else="${release}.${pkg_version_qualifier}">
|
<or>
|
<not>
|
<isset property="pkg_version_qualifier"/>
|
</not>
|
<equals arg1="${pkg_version_qualifier}" arg2="" />
|
</or>
|
</condition>
|
|
<copy todir="${build.dir}/rpm/SPECS">
|
<fileset file="resource/rpm/specFile"/>
|
<filterset begintoken="[[ " endtoken=" ]]">
|
<filter token="topDir" value="${build.dir}/rpm"/>
|
<filter token="prefix" value="${prefix}"/>
|
<filter token="pre" value="${SHORT_NAME}-${VERSION_NUMBER_STRING}"/>
|
<filter token="productName" value="${PRODUCT_NAME}"/>
|
<filter token="shortName" value="${SHORT_NAME}"/>
|
<filter token="pkgName" value="${PKG_NAME}"/>
|
<filter token="referenceURL" value="${DOC_REFERENCE_HOME}"/>
|
<filter token="sourceDirName" value="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}"/>
|
<filter token="specFileName" value="${build.dir}/rpm/SPECS/specFile"/>
|
<filter token="version" value="${pkg_version_string}"/>
|
<filter token="release" value="${rpmRelease}" />
|
</filterset>
|
</copy>
|
|
<taskdef name="processFilesForPackages"
|
classname="org.opends.build.tools.ProcessFilesForPackages">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</taskdef>
|
<processFilesForPackages sourceDirName="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}" />
|
<copy file="resource/rpm/files" tofile="${build.dir}/rpm/SOURCES/files" />
|
<copy file="resource/rpm/docFiles" tofile="${build.dir}/rpm/SOURCES/docFiles" />
|
|
<replace file="${build.dir}/rpm/SOURCES/files" token="# [[ listFiles ]]" value="${listRPMFiles}" />
|
<replace file="${build.dir}/rpm/SOURCES/docFiles" token="# [[ docsList ]]" value="${listRPMDocFiles}" />
|
<replace file="${build.dir}/rpm/SPECS/specFile" token="# [[ installRpmFiles ]]" value="${installRpmFiles}" />
|
|
<copy file="resource/rpm/excludedFiles" tofile="${build.dir}/rpm/SOURCES/excludedFiles" />
|
<replace file="${build.dir}/rpm/SOURCES/excludedFiles" token="# [[ excludedListFiles ]]" value="${excludedRPMFiles}" />
|
|
<copy file="resource/sysv/opendj" tofile="${build.dir}/rpm/SOURCES/opendj" />
|
|
<rpm specfile="specFile"
|
topdir="${build.dir}/rpm"
|
quiet="true"
|
removeSpec="false">
|
</rpm>
|
|
<mkdir dir="${build.dir}/rpm/RPMS/noarch" />
|
<copy todir="${package.dir}">
|
<fileset dir="${build.dir}/rpm/RPMS/noarch">
|
<include name="*.rpm" />
|
</fileset>
|
</copy>
|
</target>
|
|
<!-- Package the Directory Server for the DEB distribution. -->
|
<target name="package-DEB"
|
description="Package the Directory Server for DEB distribution.">
|
<taskdef name="getversionnumber"
|
classname="org.opends.build.tools.CreateVersionString">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</taskdef>
|
|
<getversionnumber property="VERSION_NUMBER_STRING" />
|
|
<property name="prefix" value="/opt/opendj"/>
|
<property name="release" value="1"/>
|
<property name="docprefix" value="/usr/share/doc/opendj"/>
|
<property name="build.deb.dir" value="${build.dir}/deb/${SHORT_NAME}-${VERSION_NUMBER_STRING}"/>
|
|
<mkdir dir="${build.dir}/deb/control" />
|
|
<taskdef name="deb" classname="org.vafer.jdeb.ant.DebAntTask"/>
|
|
<copy todir="${build.dir}/deb/control">
|
<fileset dir="resource/debian/control"/>
|
<filterset begintoken="[[" endtoken="]]">
|
<filter token="version" value="${VERSION_NUMBER_STRING}"/>
|
<filter token="name" value="${PKG_NAME}"/>
|
<filter token="homepage" value="${DOC_REFERENCE_HOME}"/>
|
<filter token="maintainer" value="opendj@forgerock.org"/>
|
<filter token="description" value="${PRODUCT_NAME}"/>
|
</filterset>
|
</copy>
|
|
<copy todir="${build.deb.dir}">
|
<fileset dir="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}"/>
|
</copy>
|
<copy file="resource/debian/copyright" tofile="${build.deb.dir}/copyright" />
|
<copy file="resource/sysv/opendj" tofile="${build.deb.dir}/opendj" />
|
|
<gzip src="resource/debian/changelog" destfile="${build.deb.dir}/changelog.Debian.gz" />
|
<replace dir="${build.dir}/deb/control/" token="@prefix@" value="${prefix}" />
|
|
<deb destfile="${package.dir}/${PKG_NAME}_${pkg_version_string}-${release}${pkg_version_qualifier}_all.deb"
|
control="${build.dir}/deb/control" verbose="false">
|
<tarfileset dir="${build.deb.dir}"
|
includes="**/*"
|
excludes="**/bat/**, **/*.app/**, **/*.bat*, **/*.exe*, bin/*, template/**/*, lib/*.sh, setup, uninstall, upgrade, legal-notices/**, copyright, README, example-plugin.zip, opendj, changelog.Debian.gz"
|
prefix="${prefix}" filemode="644" dirmode="755" />
|
<tarfileset dir="${build.deb.dir}" includes="lib/*.sh"
|
prefix="${prefix}" filemode="755" dirmode="755" />
|
<tarfileset dir="${build.deb.dir}" includes="bin/*"
|
excludes="**/bin/ControlPanel.app/"
|
prefix="${prefix}" filemode="755" dirmode="755" />
|
<tarfileset dir="${build.deb.dir}" includes="setup,uninstall,upgrade"
|
prefix="${prefix}" filemode="755" dirmode="755" />
|
<tarfileset dir="${build.deb.dir}" includes="template/**/*"
|
prefix="${prefix}" filemode="444" dirmode="744" />
|
<tarfileset dir="${build.deb.dir}" includes="legal-notices/**, copyright, example-plugin.zip, changelog.Debian.gz"
|
prefix="${docprefix}" filemode="644" dirmode="755" />
|
<tarfileset dir="${build.deb.dir}" includes="opendj"
|
prefix="/etc/init.d" filemode="755" dirmode="755" />
|
</deb>
|
</target>
|
|
<!-- Prepare the Directory Server DSML library. -->
|
<target name="predsml" depends="prepackage"
|
description="Prepare the Directory Server DSML library.">
|
<delete dir="${dsml.gen.dir}/org/opends/dsml/protocol" />
|
<mkdir dir="${dsml.gen.dir}/org/opends/dsml/protocol" />
|
<exec executable="xjc">
|
<arg value="-d"/>
|
<arg value="${dsml.gen.dir}"/>
|
<arg value="-p"/>
|
<arg value="org.opends.dsml.protocol"/>
|
<arg value="-b"/>
|
<arg value="${dsml.dir}/schema/bindings.xjb"/>
|
<arg value="-target"/>
|
<arg value="2.1"/>
|
<arg value="-npa"/>
|
<arg value="-verbose"/>
|
<arg value="${dsml.dir}/schema/DSMLv2.xsd"/>
|
</exec>
|
<mkdir dir="${dsml.classes.dir}" />
|
|
<javac srcdir="${dsml.gen.dir}" destdir="${dsml.classes.dir}">
|
<compilerarg value="-Xlint:-path" />
|
<classpath>
|
<fileset dir="${dsml.lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</javac>
|
|
<javac srcdir="${dsml.src.dir}" destdir="${dsml.classes.dir}">
|
<compilerarg value="-Xlint:-path" />
|
<classpath>
|
<fileset dir="${dsml.lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
|
<dirset dir="${classes.dir}" />
|
</classpath>
|
</javac>
|
|
<mkdir dir="${dsml.classes.dir}/resources" />
|
<copy file="${dsml.dir}/schema/DSMLv2.xsd"
|
tofile="${dsml.classes.dir}/resources/DSMLv2.xsd"
|
overwrite="true"/>
|
|
<war destfile="${classes.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}-DSML.war"
|
webxml="${dsml.dir}/webapp/web.xml">
|
<fileset file="${dsml.dir}/webapp/server.properties" />
|
|
<webinf dir="${dsml.dir}/webapp" includes="**/*"
|
excludes="web.xml, **/*.jar, **/*.properties" />
|
|
<classes dir="${dsml.classes.dir}" />
|
<lib dir="${pdir}/lib">
|
<include name="${SHORT_NAME}.jar" />
|
<include name="${SHORT_NAME}_fr.jar" />
|
<include name="${SHORT_NAME}_ja.jar" />
|
<include name="${SHORT_NAME}_ko.jar" />
|
<include name="${SHORT_NAME}_de.jar" />
|
<include name="${SHORT_NAME}_es.jar" />
|
<include name="${SHORT_NAME}_zh_TW.jar" />
|
<include name="${SHORT_NAME}_zh_CN.jar" />
|
<include name="${SHORT_NAME}_pl.jar" />
|
<include name="${SHORT_NAME}_ca_ES.jar" />
|
</lib>
|
</war>
|
|
<copy todir="${package.dir}">
|
<fileset file="${classes.dir}/*.war" />
|
</copy>
|
</target>
|
|
|
|
|
<!-- Generate JavaDoc documentation from the source files -->
|
<target name="javadoc" depends="dsml,generateadmin"
|
description="Generate JavaDoc documentation.">
|
<mkdir dir="${javadoc.dir}" />
|
|
<javadoc destdir="${javadoc.dir}" additionalparam="-quiet"
|
linksource="yes" windowtitle="${PRODUCT_NAME} API Documentation"
|
maxmemory="${MEM}">
|
<classpath>
|
<fileset refid="opendj.runtime.jars"/>
|
|
<fileset dir="${dsml.lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
|
<dirset dir="${classes.dir}" />
|
<dirset dir="${dsml.classes.dir}" />
|
<dirset dir="${quicksetup.classes.dir}" />
|
</classpath>
|
|
<packageset dir="${src.dir}" />
|
<packageset dir="${admin.src.dir}" />
|
<packageset dir="${ads.src.dir}" />
|
<packageset dir="${dsml.src.dir}" />
|
<packageset dir="${msg.src.dir}" />
|
</javadoc>
|
</target>
|
|
|
<!-- Internal target to run the Directory Server directly. -->
|
<target name="run-server" depends="dynamicconstants">
|
<!-- Set properties needed to find the packaged files -->
|
<property name="pdir" location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}"/>
|
<java fork="true" classname="org.opends.server.core.DirectoryServer" failonerror="true">
|
<classpath>
|
<fileset dir="${lib.dir}">
|
<include name="**/*.jar"/>
|
</fileset>
|
<dirset dir="${classes.dir}"/>
|
</classpath>
|
<jvmarg value="-Dorg.opends.server.BuildRoot=${pdir}"/>
|
<jvmarg value="-Dorg.opends.server.scriptName=start-ds"/>
|
<jvmarg value="-Dorg.opends.server.ServerRoot=${pdir}"/>
|
<arg value="--configClass=org.opends.server.extensions.ConfigFileHandler"/>
|
<arg value="--configFile=${pdir}/config/config.ldif"/>
|
<arg value="--nodetach"/>
|
</java>
|
</target>
|
|
<!-- Netbeans target to debug the Directory Server. -->
|
<target name="nb-debug-server" depends="dynamicconstants">
|
<!-- Set properties needed to find the packaged files -->
|
<property name="pdir" location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}"/>
|
<path id="cp">
|
<fileset dir="${lib.dir}">
|
<include name="**/*.jar"/>
|
</fileset>
|
<dirset dir="${classes.dir}"/>
|
</path>
|
<nbjpdastart addressproperty="jpda.address" name="Directory Server" transport="dt_socket">
|
<classpath refid="cp"/>
|
</nbjpdastart>
|
<java classname="org.opends.server.core.DirectoryServer" fork="true">
|
<classpath refid="cp"/>
|
<jvmarg value="-Xdebug"/>
|
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
|
<jvmarg value="-Dorg.opends.server.BuildRoot=${pdir}"/>
|
<jvmarg value="-Dorg.opends.server.scriptName=start-ds"/>
|
<jvmarg value="-Dorg.opends.server.ServerRoot=${pdir}"/>
|
<jvmarg value="-Dorg.opends.server.debug.enabled=true"/>
|
<arg value="--configClass=org.opends.server.extensions.ConfigFileHandler"/>
|
<arg value="--configFile=${pdir}/config/config.ldif"/>
|
<arg value="--nodetach"/>
|
</java>
|
</target>
|
|
<!-- Netbeans target to profile the Directory Server. -->
|
<target name="nb-profile-server" depends="dynamicconstants">
|
<!-- Set properties needed to find the packaged files -->
|
<property name="pdir" location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}"/>
|
<path id="cp">
|
<fileset dir="${lib.dir}">
|
<include name="**/*.jar"/>
|
</fileset>
|
<dirset dir="${classes.dir}"/>
|
</path>
|
<nbprofiledirect>
|
<classpath refid="cp"/>
|
</nbprofiledirect>
|
<java fork="true" classname="org.opends.server.core.DirectoryServer">
|
<classpath>
|
<fileset dir="${lib.dir}">
|
<include name="**/*.jar"/>
|
</fileset>
|
<dirset dir="${classes.dir}"/>
|
</classpath>
|
<jvmarg value="${profiler.info.jvmargs.agent}"/>
|
<jvmarg value="-Dorg.opends.server.BuildRoot=${pdir}"/>
|
<jvmarg value="-Dorg.opends.server.scriptName=start-ds"/>
|
<jvmarg value="-Dorg.opends.server.ServerRoot=${pdir}"/>
|
<arg value="--configClass=org.opends.server.extensions.ConfigFileHandler"/>
|
<arg value="--configFile=${pdir}/config/config.ldif"/>
|
<arg value="--nodetach"/>
|
</java>
|
</target>
|
|
<!-- Internal target to run directly dsconfig. -->
|
<target name="run-dsconfig" depends="dynamicconstants">
|
<!-- Set properties needed to find the packaged files -->
|
<property name="pdir"
|
location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}" />
|
<java fork="true" classname="org.opends.server.tools.dsconfig.DSConfig" failonerror="true">
|
<classpath>
|
<fileset refid="opendj.runtime.jars"/>
|
<dirset dir="${classes.dir}" />
|
</classpath>
|
<jvmarg value="-Dorg.opends.server.scriptName=dsconfig" />
|
<jvmarg value="-Dorg.opends.server.BuildRoot=${pdir}"/>
|
<jvmarg value="-Dorg.opends.server.ServerRoot=${pdir}"/>
|
</java>
|
</target>
|
|
<!-- Netbeans target to debug dsconfig. -->
|
<target name="nb-debug-dsconfig" depends="dynamicconstants">
|
<!-- Set properties needed to find the packaged files -->
|
<property name="pdir"
|
location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}" />
|
<path id="cp">
|
<fileset refid="opendj.runtime.jars"/>
|
<dirset dir="${classes.dir}" />
|
</path>
|
<nbjpdastart addressproperty="jpda.address" name="Directory Server" transport="dt_socket">
|
<classpath refid="cp"/>
|
</nbjpdastart>
|
<java classname="org.opends.server.tools.dsconfig.DSConfig" fork="true">
|
<classpath refid="cp"/>
|
<jvmarg value="-Xdebug"/>
|
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
|
<jvmarg value="-Dorg.opends.server.scriptName=dsconfig" />
|
<jvmarg value="-Dorg.opends.server.BuildRoot=${pdir}"/>
|
<jvmarg value="-Dorg.opends.server.ServerRoot=${pdir}"/>
|
<jvmarg value="-Dorg.opends.server.debug.enabled=true"/>
|
</java>
|
</target>
|
|
|
<!-- Internal target to prepare to generate a code coverage report. -->
|
<target name="coverage">
|
<property name="coverage.enabled" value="true" />
|
|
<mkdir dir="${coverage.dir}" />
|
<mkdir dir="${coverage.data.dir}" />
|
<mkdir dir="${coverage.instr.dir}" />
|
<mkdir dir="${coverage.report.dir}" />
|
|
<path id="run.classpath">
|
<pathelement location="${classes.dir}" />
|
</path>
|
|
<path id="quickSetup.classpath">
|
<pathelement location="${quicksetup.classes.dir}" />
|
</path>
|
</target>
|
|
|
|
<!-- Prepare to execute the Directory Server TestNG unit tests. -->
|
<target name="test.OpenDS.package.required" depends="dynamicconstants">
|
<condition property="test.OpenDS.package.required">
|
<available file="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}.zip"/>
|
</condition>
|
</target>
|
|
<target name="testinit-package" depends="test.OpenDS.package.required" unless="test.OpenDS.package.required">
|
<echo message="Performing full rebuild (no OpenDJ zip package found)"/>
|
<antcall target="package"/>
|
</target>
|
|
<target name="testinit-recompile" depends="test.OpenDS.package.required" if="test.OpenDS.package.required">
|
<echo message="Performing partial rebuild (OpenDJ zip package found)"/>
|
<mkdir dir="${classes.dir}" />
|
|
<javac srcdir="${src.dir}:${admin.src.dir}:${msg.src.dir}:${msg.javagen.dir}:${ads.src.dir}:${quicksetup.src.dir}:${guitools.src.dir}"
|
destdir="${classes.dir}">
|
<classpath>
|
<fileset refid="opendj.runtime.jars"/>
|
<fileset refid="opendj.test.jars"/>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="build-tools.jar" />
|
</fileset>
|
<fileset dir="${build.lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</javac>
|
|
<copy todir="${classes.dir}">
|
<fileset dir="${src.dir}" includes="**/*.properties" />
|
<fileset dir="${quicksetup.src.dir}" includes="**/*.properties, **/*.gif, **/*.png" />
|
<fileset dir="${guitools.src.dir}" includes="**/*.properties, **/*.gif, **/*.png" />
|
</copy>
|
</target>
|
|
<target name="testinit" depends="testinit-package,testinit-recompile"
|
description="Prepare to execute the Directory Server TestNG unit tests.">
|
<!-- If we are to perform coverage tests, then set that up. -->
|
<path id="emma.lib">
|
<pathelement location="${emma.dir}/emma.jar" />
|
<pathelement location="${emma.dir}/emma_ant.jar" />
|
</path>
|
|
<taskdef resource="emma_ant.properties" classpathref="emma.lib" />
|
|
<emma enabled="${coverage.enabled}">
|
<instr instrpathref="run.classpath" destdir="${coverage.instr.dir}"
|
metadatafile="${coverage.data.dir}/metadata.emma" merge="true" />
|
</emma>
|
|
<!-- Compile the test cases -->
|
<mkdir dir="${unittest.classes.dir}" />
|
<javac srcdir="${unittest.testng.src.dir}" destdir="${unittest.classes.dir}" excludes="org/opends/server/snmp/**">
|
<classpath>
|
<fileset refid="opendj.runtime.jars"/>
|
<fileset refid="opendj.test.jars"/>
|
|
<fileset dir="${testng.lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
|
<path refid="run.classpath" />
|
<path refid="quickSetup.classpath" />
|
</classpath>
|
</javac>
|
|
<copy todir="${unittest.classes.dir}">
|
<fileset dir="${unittest.testng.src.dir}"
|
includes="**/*.properties" />
|
</copy>
|
|
<!-- Compile SNMP Tests if needed -->
|
<antcall target="testsnmpinit"/>
|
|
<!-- Prep the TestNG XML file -->
|
|
<condition property="test.groups" value="exclude=slow">
|
<not>
|
<or>
|
<isset property="test.groups" />
|
<isset property="test.packages" />
|
<isset property="test.classes" />
|
<isset property="test.methods" />
|
</or>
|
</not>
|
</condition>
|
|
<!-- do not run tests dependent upon creation of the .zip file -->
|
<condition property="test.packages" value="org.opends.server.*,org.opends.messages.*">
|
<and>
|
<not>
|
<or>
|
<isset property="test.packages" />
|
<isset property="test.classes" />
|
<isset property="test.methods" />
|
</or>
|
</not>
|
<not>
|
<equals arg1="${package.built}" arg2="true" />
|
</not>
|
</and>
|
</condition>
|
|
<!-- run tests dependent upon creation of the .zip file -->
|
<condition property="test.packages" value="org.opends.server.*,org.opends.messages.*,org.opends.quicksetup.*">
|
<and>
|
<not>
|
<or>
|
<isset property="test.packages" />
|
<isset property="test.classes" />
|
<isset property="test.methods" />
|
</or>
|
</not>
|
<equals arg1="${package.built}" arg2="true" />
|
</and>
|
</condition>
|
|
|
<condition property="test.classes" value="">
|
<not>
|
<or>
|
<isset property="test.classes" />
|
<isset property="test.methods" />
|
</or>
|
</not>
|
</condition>
|
|
<condition property="test.methods" value="">
|
<not>
|
<or>
|
<isset property="test.methods" />
|
</or>
|
</not>
|
</condition>
|
|
<mkdir dir="${unittest.resource.dir}" />
|
<typedef name="preptestng" classname="org.opends.build.tools.PrepTestNG"
|
classpath="${buildtools.jar}" />
|
|
|
<preptestng file="${testng.dir}/testng.xml"
|
tofile="${unittest.resource.dir}/testng.xml"
|
grouplist="${test.groups}"
|
packagelist="${test.packages}"
|
classList="${test.classes}"
|
methodList="${test.methods}" />
|
|
<antcall target="testinit.checkFailedTestsOnly"/>
|
</target>
|
|
|
|
<!-- If we were asked to run only the tests that failed,
|
then we overwrite the testng.xml that we just generated
|
with testng-failed.xml, which TestNG generated. -->
|
<target name="testinit.checkFailedTestsOnly" if="test.failures">
|
<!-- Ensure that some of the tests failed last time. -->
|
<available property="testng-failed.xml.exists"
|
file="${unittest.report.dir}/testng-failed.xml"/>
|
<fail message="No unit tests failed in the previous run."
|
unless="testng-failed.xml.exists"/>
|
|
<!-- We replace the 'Failed suite [OpenDJ]' with 'OpenDJ' so we
|
don't end up with 'Failed suite [Failed suite [OpenDJ]]]' etc. -->
|
<replace file="${unittest.report.dir}/testng-failed.xml"
|
token="Failed suite [OpenDJ]"
|
value="OpenDJ"/>
|
<replace file="${unittest.report.dir}/testng-failed.xml"
|
token="default(failed)"
|
value="default"/>
|
|
<copy file="${unittest.report.dir}/testng-failed.xml"
|
tofile="${unittest.resource.dir}/testng.xml"
|
overwrite="true"/>
|
|
<echo message="Will run the failed unit tests only"/>
|
</target>
|
|
|
|
<!-- Generate coverage diff report -->
|
<target name="coveragediff">
|
<condition property="test.diff.srcpath" value="">
|
<not>
|
<isset property="test.diff.srcpath" />
|
</not>
|
</condition>
|
|
<condition property="test.diff.enabled" value="true">
|
<not>
|
<isset property="test.diff.disable" />
|
</not>
|
</condition>
|
|
<condition property="test.diff.verbose" value="false">
|
<not>
|
<isset property="test.diff.verbose" />
|
</not>
|
</condition>
|
|
<condition property="test.diff.enabled" value="false">
|
<isset property="test.diff.disable" />
|
</condition>
|
|
<!-- The SVN revision to perform the diff against when calculating
|
the coverage diff. It can be a revision number, a timestamp,
|
or a revision keyword (BASE, COMMITTED, and PREV make the
|
most sense). The primary use case for this setting is to do
|
a coverage diff against the previous revision when there are
|
no changes in the working copy. It defaults to BASE. -->
|
<condition property="test.diff.from.revision" value="BASE">
|
<not>
|
<isset property="test.diff.from.revision" />
|
</not>
|
</condition>
|
|
<mkdir dir="${cvgdiff.report.dir}" />
|
<taskdef name="coveragediff" classname="org.opends.build.tools.CoverageDiff">
|
<classpath>
|
<fileset dir="${build.dir}/build-tools">
|
<include name="*.jar" />
|
</fileset>
|
<fileset dir="${emma.dir}">
|
<include name="*.jar" />
|
</fileset>
|
<fileset dir="${svnkit.dir}">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</taskdef>
|
|
<coveragediff emmadatapath="${coverage.data.dir}"
|
outputpath="${cvgdiff.report.dir}"
|
diffpath="${test.diff.srcpath}"
|
enabled="${test.diff.enabled}"
|
verbose="${test.diff.verbose}"
|
fromrevision="${test.diff.from.revision}" />
|
|
</target>
|
|
|
|
<!-- Execute the Directory Server TestNG unit tests in text mode. -->
|
<target name="enableTestNGAssertions">
|
<property name="TESTASSERT" value="true"/>
|
</target>
|
|
|
|
<!-- Execute Directory Server TestNG unit tests specified from CLI -->
|
<target name="testcustom">
|
<echo message="This target is deprecated. Please use the test target as it now supports the test.* properties." />
|
</target>
|
|
|
|
<!-- Execute all of the Directory Server TestNG unit tests in text mode. -->
|
<target name="testall"
|
depends="enableTestNGAssertions,prepdefaultalltest,testinit,runtests"
|
description="Run all of the TestNG tests (including 'slow' ones) with assertions enabled. See 'testwithcoverage' for properties you can set.">
|
</target>
|
|
|
|
<!-- Execute the Directory Server TestNG unit tests in text mode. -->
|
<target name="test"
|
depends="testinit,runtests"
|
description="Execute the Directory Server TestNG unit tests in text mode. Set '-Dorg.opends.test.suppressOutput=false' to see the output from the unit tests. Set '-Dtest.failures=true' to run only the tests that failed previously.">
|
</target>
|
|
<!-- Display Java version which will be used for tests. -->
|
<target name="displayjavaversion">
|
<echo message="The following Java version will be used :"/>
|
<echo message=""/>
|
<exec executable="java">
|
<arg value="-version"/>
|
</exec>
|
<echo message=""/>
|
<echo message=""/>
|
</target>
|
|
<!-- Execute the Directory Server TestNG unit tests in text mode with a coverage report. -->
|
<target name="testwithcoverage"
|
depends="coverage,test,coveragediff"
|
description="Execute the Directory Server TestNG unit tests in text mode with a coverage report. Use -Dtest.packages, -Dtest.classes, or -Dtest.methods to control which unit tests are run. Use -Dtest.diff.srcpath to control which src files show up in the coverage diff. See the 'test' package for other properties you can set.">
|
</target>
|
|
<!-- Execute the Directory Server TestNG unit tests in text mode with a coverage report and slow tests. -->
|
<target name="testallwithcoverage"
|
depends="coverage,testall,coveragediff"
|
description="The same as 'testwithcoverage' except 'testall' is run instead of 'test'.">
|
</target>
|
|
<!-- Execute the Directory Server TestNG unit tests specified from CLI in text mode with a coverage report. -->
|
<target name="testcustomwithcoverage">
|
<echo message="This target is deprecated. Please use the testwithcoverage target as it now supports the test.* properties." />
|
</target>
|
|
<target name="testhelp" unless="disable.test.help">
|
<echo message="About to run the unit tests. Ant options to control the tests:"/>
|
<echo message=""/>
|
<echo message=" -Dorg.opends.test.suppressOutput=false"/>
|
<echo message=" writes the unit test output to the screen"/>
|
<echo message=""/>
|
<echo message=" -Dtest.progress="default,memory""/>
|
<echo message=" Unless explicity disabled using -Dtest.progress=none, the"/>
|
<echo message=" tests provide continuous progress of the tests that are being"/>
|
<echo message=" run. The specific options to set for this property are"/>
|
<echo message=""/>
|
<echo message=" none: no progress output"/>
|
<echo message=" all: enables all progress (slows tests)"/>
|
<echo message=" default: same as "time,count,restarts""/>
|
<echo message=" time: timing information for the tests"/>
|
<echo message=" count: # of run test classes, methods, and invocations"/>
|
<echo message=" memory: running total of memory usage (slows tests)"/>
|
<echo message=" threadcount: running total of active threads"/>
|
<echo message=" threadchange: +/- changes for active threads between tests"/>
|
<echo message=" restarts: running total of in-core server restarts"/>
|
<echo message=""/>
|
<echo message=" To specifying multiple values, nseparate them with ',' and"/>
|
<echo message=" quote the entire value. For instance, when you want the default"/>
|
<echo message=" output plus more, do -Dtest.progress="default,memory"."/>
|
<echo message=""/>
|
<echo message=" Enabling memory progress slows down the tests significantly."/>
|
<echo message=" Include the otherwise undocumented property "gcs" to see how"/>
|
<echo message=" much time each progress line spends doing garbage collections"/>
|
<echo message=" to get an accurate measure of memory usage."/>
|
<echo message=""/>
|
<echo message=" A new line of progress is written when TestNG completes running tests"/>
|
<echo message=" for a class. This progress is reported immediately before TestNG"/>
|
<echo message=" starts to run the first test of the next class. All @BeforeClass"/>
|
<echo message=" and @BeforeMethod methods will have been invoked for the next"/>
|
<echo message=" class as well as the @DataProvider (if any) for the first test method."/>
|
<echo message=" Keep this in mind when debugging memory usage, running times, and"/>
|
<echo message=" thread creation."/>
|
<echo message=""/>
|
<echo message=" -Dtestng.verbosity0to5=5"/>
|
<echo message=" for example has TestNG dump the maximum amount of debugging"/>
|
<echo message=" output to stdout. This output is useful to check the order"/>
|
<echo message=" in which test methods are invoked. Valid values are integer"/>
|
<echo message=" values from 0 (no output) to 5 (maximum output). Since this"/>
|
<echo message=" implicitly sets -Dorg.opends.test.suppressOutput=false,"/>
|
<echo message=" other stderr/stdout output generated by the unit tests will"/>
|
<echo message=" also be displayed."/>
|
<echo message=""/>
|
<echo message=" -Dorg.opends.test.pauseOnFailure=true"/>
|
<echo message=" pauses the test suite whenever a failure occurs allowing you to inspect"/>
|
<echo message=" the server more closely in the failure state"/>
|
<echo message=""/>
|
<echo message=" -Dorg.opends.test.copyClassesToTestPackage=true"/>
|
<echo message=" copies the classes into the test server root. This enables you to run"/>
|
<echo message=" the server tools on the test server. It can slow down the test startup"/>
|
<echo message=" so the files are not copied by default."/>
|
<echo message=""/>
|
<echo message=" -Dtest.failures=true"/>
|
<echo message=" runs only the tests that failed last time"/>
|
<echo message=""/>
|
<echo message=" -Dorg.opends.server.debug.target=org.opends.server.core:level=verbose,category=data"/>
|
<echo message=" for example only include debug messages in the core"/>
|
<echo message=" package that are related to data access and at the" />
|
<echo message=" verbose level or higher. The syntax of this target" />
|
<echo message=" definition is the same as the org.opends.server.debug.target.x" />
|
<echo message=" property when starting ${SHORT_NAME}. " />
|
<echo message=" Default debug target:"/>
|
<echo message=" org.opends.server:level=warning,category=caught|data|database-access|message|protocol,stack,cause" />
|
<echo message=""/>
|
<echo message=" -Dtest.diff.srcpath=src/server/org/opends/server/core"/>
|
<echo message=" for example includes only the classes in"/>
|
<echo message=" src/server/org/opends/server/core in the coveragediff report."/>
|
<echo message=" To list multiple directories or files, separate them with"/>
|
<echo message=" a space as you would an argument list to 'svn diff' and quote"/>
|
<echo message=" the whole value."/>
|
<echo message=""/>
|
<echo message=" -Dtest.groups=exclude=slow"/>
|
<echo message=" for example excludes the slow tests. Each value is expected" />
|
<echo message=" group inclusion/exclusion clause which consists of either 'include'" />
|
<echo message=" or 'exclude' followed by the '=' character and then a group name." />
|
<echo message=" For multiple group clauses, separate them with a ',' and "/>
|
<echo message=" quote the entire value. Debug logging is disabled."/>
|
<echo message=""/>
|
<echo message=" -Dtest.packages=org.opends.server.api"/>
|
<echo message=" for example runs only the tests in the api package"/>
|
<echo message=" For multiple packages, separate them with a ',' and "/>
|
<echo message=" quote the entire value. Debug logging is disabled."/>
|
<echo message=""/>
|
<echo message=" -Dtest.classes=org.opends.server.types.TestDN"/>
|
<echo message=" for example only runs the TestDN class"/>
|
<echo message=" For multiple classes, separate them with a ',' and "/>
|
<echo message=" quote the entire value. Debug logging is disabled."/>
|
<echo message=""/>
|
<echo message=" -Dtest.methods=org.opends.server.types.TestDN.testGetRDN"/>
|
<echo message=" for example only runs the testGetRDN method"/>
|
<echo message=" For multiple methods within the same class, append additional"/>
|
<echo message=" method names to the end separating them with a ',' and "/>
|
<echo message=" quote the entire value. Debug logging is disabled."/>
|
<echo message=""/>
|
<echo message=" -Dtest.remote.debug.port=5005"/>
|
<echo message=" for example will allow you to remotely debug the unit tests from"/>
|
<echo message=" the debugger of your choice by pointing it at port 5005."/>
|
<echo message=" The unit tests will not start to run until the debugger is attached"/>
|
<echo message=" unless you also specify -Dtest.remote.debug.suspend=n."/>
|
<echo message=""/>
|
</target>
|
|
|
|
<!-- Internal target to execute the Directory Server TestNG unit tests in text mode after everything has been initialized. -->
|
<target name="runtests">
|
<antcall target="testhelp"/>
|
<antcall target="displayjavaversion"/>
|
|
<mkdir dir="${unittest.report.dir}" />
|
|
<taskdef resource="testngtasks">
|
<classpath>
|
<fileset dir="${testng.lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</taskdef>
|
|
<!-- This sets TESTASSERT to false if and only if it's not already set. -->
|
<condition property="TESTASSERT" value="false">
|
<not>
|
<isset property="TESTASSERT" />
|
</not>
|
</condition>
|
|
<!-- This sets testng.verbosity if it's not already set. -->
|
<condition property="testng.verbosity0to5" value="0">
|
<not>
|
<isset property="testng.verbosity0to5" />
|
</not>
|
</condition>
|
|
<!-- This sets unsuppresses the test output if and only if testng
|
is configured to dump debug output. -->
|
<condition property="org.opends.test.suppressOutput" value="false">
|
<not>
|
<equals arg1="${testng.verbosity0to5}" arg2="0"/>
|
</not>
|
</condition>
|
|
<!-- This sets org.opends.test.suppressOutput if and only if it's not
|
already set. -->
|
<condition property="org.opends.test.suppressOutput" value="true">
|
<not>
|
<isset property="org.opends.test.suppressOutput" />
|
</not>
|
</condition>
|
|
<!-- This sets org.opends.test.pauseOnFailure if and only if it's not
|
already set. -->
|
<condition property="org.opends.test.pauseOnFailure" value="false">
|
<not>
|
<isset property="org.opends.test.pauseOnFailure" />
|
</not>
|
</condition>
|
|
<!-- This sets org.opends.server.debug.target if and only if its's not
|
already set. -->
|
<condition property="org.opends.server.debug.target"
|
value="org.opends.server:level=warning,category=caught|data|database-access|message|protocol,stack,cause">
|
<not>
|
<isset property="org.opends.server.debug.target" />
|
</not>
|
</condition>
|
|
<condition property="org.opends.test.copyClassesToTestPackage"
|
value="false">
|
<not>
|
<isset property="org.opends.test.copyClassesToTestPackage" />
|
</not>
|
</condition>
|
|
<condition property="test.progress"
|
value="">
|
<not>
|
<isset property="test.progress" />
|
</not>
|
</condition>
|
|
|
<!-- If the debug port was set, we pass these options into the <testng> target below:
|
-Xdebug
|
-Xnoagent
|
-Djava.compiler=NONE
|
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
|
-->
|
<condition property="test.remote.debug.suspend" value="y">
|
<not>
|
<isset property="test.remote.debug.suspend" />
|
</not>
|
</condition>
|
<condition property="jvm.debug.arg1" value="-Xdebug" else="-Dopends.bogus.debug.arg1">
|
<isset property="test.remote.debug.port" />
|
</condition>
|
<condition property="jvm.debug.arg2" value="-Xnoagent" else="-Dopends.bogus.debug.arg2">
|
<isset property="test.remote.debug.port" />
|
</condition>
|
<condition property="jvm.debug.arg3" value="-Djava.compiler=NONE" else="-Dopends.bogus.debug.arg3">
|
<isset property="test.remote.debug.port" />
|
</condition>
|
<condition property="jvm.debug.arg4"
|
value="-Xrunjdwp:transport=dt_socket,server=y,suspend=${test.remote.debug.suspend},address=${test.remote.debug.port}"
|
else="-Dopends.bogus.debug.arg4">
|
<isset property="test.remote.debug.port" />
|
</condition>
|
|
|
<!-- Cleanout the old reports. Otherwise, the old testng-failed.xml
|
will hang around even if all of the tests pass. -->
|
<delete>
|
<fileset dir="${unittest.report.dir}" includes="*"/>
|
</delete>
|
|
<!-- Our testng listener will remove this file if all of the
|
tests passed. This allows us to generate the coverage
|
report even if the tests failed and still fail the build. -->
|
<touch file="${unittest.report.dir}/.tests-failed-marker"/>
|
|
<testng outputdir="${unittest.report.dir}"
|
haltonfailure="false"
|
verbose="${testng.verbosity0to5}"
|
enableAssert="${TESTASSERT}"
|
listeners="org.opends.server.TestListener org.testng.reporters.FailedReporter"
|
useDefaultListeners="false"
|
suiteRunnerClass="org.opends.server.SuiteRunner">
|
<classpath>
|
<pathelement location="${coverage.instr.dir}" />
|
<pathelement location="${classes.dir}" />
|
<pathelement location="${quicksetup.classes.dir}" />
|
<pathelement location="${unittest.classes.dir}" />
|
<pathelement location="${resource.dir}" />
|
<path refid="run.classpath" />
|
<path refid="emma.lib" />
|
|
<fileset refid="opendj.runtime.jars"/>
|
<fileset refid="opendj.test.jars"/>
|
|
<!-- Needed by quicksetup tests -->
|
<fileset dir="${build.dir}/build-tools">
|
<include name="build-tools.jar" />
|
</fileset>
|
|
<fileset dir="${testng.lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
|
<fileset dir="${opendmk.lib.dir}">
|
<include name="*.jar"/>
|
</fileset>
|
</classpath>
|
|
<jvmarg value="-Demma.coverage.out.file=${coverage.data.dir}/unit.emma" />
|
<jvmarg value="-Demma.coverage.out.merge=false" />
|
<jvmarg value="-Dorg.opends.server.BuildRoot=${basedir}" />
|
<jvmarg value="-Dorg.opends.server.BuildDir=${build.dir}" />
|
<jvmarg value="-Dorg.opends.server.RunningUnitTests=true" />
|
<jvmarg value="-Dorg.opends.server.snmp.opendmk=${opendmk.lib.dir}"/>
|
<jvmarg value="-Dorg.opends.test.suppressOutput=${org.opends.test.suppressOutput}" />
|
<jvmarg value="-Dorg.opends.test.pauseOnFailure=${org.opends.test.pauseOnFailure}" />
|
<jvmarg value="-Dorg.opends.server.debug.target=${org.opends.server.debug.target}" />
|
<jvmarg value="-Dorg.opends.test.copyClassesToTestPackage=${org.opends.test.copyClassesToTestPackage}" />
|
<jvmarg value="-Dtest.progress=${test.progress}" />
|
<jvmarg value="-Xms${MEM}" />
|
<jvmarg value="-Xmx${MEM}" />
|
<jvmarg value="${jvm.debug.arg1}" />
|
<jvmarg value="${jvm.debug.arg2}" />
|
<jvmarg value="${jvm.debug.arg3}" />
|
<jvmarg value="${jvm.debug.arg4}" />
|
|
<xmlfileset dir="${unittest.resource.dir}" includes="testng.xml" />
|
</testng>
|
|
<!-- Our testng listener will create this file if any of the
|
tests failed. This allows us to generate the coverage
|
report even if the tests failed. -->
|
<available property="testng.tests.failed"
|
file="${unittest.report.dir}/.tests-failed-marker"/>
|
|
<!-- Delete all of the report suite sub-directories since we only
|
have a single suite. -->
|
<delete dir="${unittest.report.dir}/${SHORT_NAME}"/>
|
|
<emma enabled="${coverage.enabled}" >
|
<report sourcepath="${src.dir}" >
|
<fileset dir="${coverage.data.dir}" >
|
<include name="unit.emma" />
|
<include name="metadata.emma" />
|
</fileset>
|
|
<txt outfile="${coverage.report.dir}/coverage.txt" />
|
<html outfile="${coverage.report.dir}/index.html" />
|
<xml outfile="${coverage.report.dir}/coverage.xml" />
|
</report>
|
|
</emma>
|
|
<!-- We delay failing until after the coverage report is generated. -->
|
<fail message="The unit tests failed." if="testng.tests.failed"/>
|
|
</target>
|
|
|
|
<target name="prepdefaultalltest">
|
<condition property="test.groups" value="">
|
<not>
|
<or>
|
<isset property="test.groups" />
|
<isset property="test.packages" />
|
<isset property="test.classes" />
|
<isset property="test.methods" />
|
</or>
|
</not>
|
</condition>
|
</target>
|
|
|
|
<target name="testreport"
|
depends="test"
|
description="Takes testng results and convert them into JUnit compatible xml">
|
<junitreport todir="${unittest.report.dir}">
|
<fileset dir="${unittest.report.dir}">
|
<include name="*.xml"/>
|
</fileset>
|
|
<report format="noframes" todir="${unittest.report.dir}"/>
|
</junitreport>
|
</target>
|
|
|
|
|
<target name="buildtools" depends="init"
|
description="Builds the build tools">
|
|
<mkdir dir="${buildtools.classes.dir}" />
|
|
<copy file="${resource.dir}/Messages.java.stub" todir="${buildtools.classes.dir}/org/opends/build/tools/resource"/>
|
|
<javac srcdir="${src.dir}:${msg.src.dir}" destdir="${buildtools.classes.dir}"
|
sourcepath=""
|
includes="org/opends/messages/Severity.java,
|
org/opends/messages/Category.java,
|
org/opends/messages/Message.java,
|
org/opends/messages/MessagePropertyKey.java,
|
org/opends/messages/MessageDescriptor.java,
|
org/opends/server/types/PublicAPI.java,
|
org/opends/server/types/StabilityLevel.java"/>
|
|
|
<javac srcdir="${buildtools.src.dir}" destdir="${buildtools.classes.dir}">
|
<classpath>
|
<fileset dir="${ant.lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
|
<fileset dir="${emma.dir}">
|
<include name="*.jar" />
|
</fileset>
|
|
<fileset dir="${svnkit.dir}">
|
<include name="*.jar" />
|
</fileset>
|
|
<path refid="run.classpath" />
|
</classpath>
|
</javac>
|
|
<jar jarfile="${buildtools.jar}"
|
basedir="${buildtools.classes.dir}" compress="true" index="true" />
|
</target>
|
|
|
|
<!-- Code generation for core administration components. -->
|
<target name="generateadmin" depends="validateadmin" description="Code generation for configuration Object.">
|
<!-- The XSLT task creates a lot of noise.
|
I can't find any other way to shut it up. -->
|
<condition property="antcmd" value="ant.bat">
|
<os family="windows" />
|
</condition>
|
|
<condition property="antcmd" value="ant">
|
<not>
|
<isset property="antcmd" />
|
</not>
|
</condition>
|
|
<exec executable="${ant.dir}/bin/${antcmd}" failonerror="true">
|
<arg value="-buildfile" />
|
<arg value="${ant.file}" />
|
<arg value="-Dbuild.dir=${build.dir}" />
|
<arg value="-Dadmin.src.dir=${admin.src.dir}" />
|
<arg value="-quiet" />
|
<arg value="generateadminsubtask" />
|
<env key="ANT_OPTS" value="-Xmx${MEM}" />
|
<!-- Set classpath to workaround Apple JDK Xalan conflict -->
|
<env key="CLASSPATH" value="${ext.dir}/xalan-j/xalan.jar" />
|
</exec>
|
</target>
|
|
|
|
<target name="generateadminsubtask">
|
<!-- Xalan-J Class Path : refer to it explicitly from each XSLT task. -->
|
<path id="xalan.class.path">
|
<fileset dir="${ext.dir}/xalan-j">
|
<include name="*.jar" />
|
</fileset>
|
</path>
|
|
<!-- Generate introspection API for core administration components. -->
|
<xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml"
|
style="${admin.rules.dir}/metaMO.xsl">
|
<regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.java" />
|
<param name="base-dir" expression="${admin.defn.dir}" />
|
<classpath refid="xalan.class.path" />
|
</xslt>
|
|
<xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/Package.xml" style="${admin.rules.dir}/package-info.xsl">
|
<regexpmapper handledirsep="true" from="^(.*)/([^/]+)\.xml$$" to="\1/meta/package-info.java" />
|
<param name="type" expression="meta" />
|
<classpath refid="xalan.class.path" />
|
</xslt>
|
|
<!-- Generate client API for core administration components. -->
|
<xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml"
|
style="${admin.rules.dir}/clientMO.xsl">
|
<regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/client/\2CfgClient.java" />
|
<param name="base-dir" expression="${admin.defn.dir}" />
|
<classpath refid="xalan.class.path" />
|
</xslt>
|
|
<xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/Package.xml" style="${admin.rules.dir}/package-info.xsl">
|
<regexpmapper handledirsep="true" from="^(.*)/([^/]+)\.xml$$" to="\1/client/package-info.java" />
|
<param name="type" expression="client" />
|
<classpath refid="xalan.class.path" />
|
</xslt>
|
|
<!-- Generate server API for core administration components. -->
|
<xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml"
|
style="${admin.rules.dir}/serverMO.xsl">
|
<regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/server/\2Cfg.java" />
|
<param name="base-dir" expression="${admin.defn.dir}" />
|
<classpath refid="xalan.class.path" />
|
</xslt>
|
|
<xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/Package.xml" style="${admin.rules.dir}/package-info.xsl">
|
<regexpmapper handledirsep="true" from="^(.*)/([^/]+)\.xml$$" to="\1/server/package-info.java" />
|
<param name="type" expression="server" />
|
<classpath refid="xalan.class.path" />
|
</xslt>
|
|
<!-- Generate LDAP profile for core administration components. -->
|
<mkdir dir="${classes.dir}" />
|
<xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/profiles/ldap" includes="**/*Configuration.xml"
|
style="${admin.rules.dir}/ldapMOProfile.xsl">
|
<regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.properties" />
|
<param name="base-dir" expression="${admin.defn.dir}" />
|
<classpath refid="xalan.class.path" />
|
</xslt>
|
|
<!-- Generate CLI profile for core administration components. -->
|
<xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/profiles/cli" includes="**/*Configuration.xml"
|
style="${admin.rules.dir}/cliMOProfile.xsl">
|
<regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.properties" />
|
<param name="base-dir" expression="${admin.defn.dir}" />
|
<classpath refid="xalan.class.path" />
|
</xslt>
|
|
<!-- Generate I18N messages for core administration components. -->
|
<xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/messages" includes="**/*Configuration.xml"
|
style="${admin.rules.dir}/messagesMO.xsl">
|
<regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.properties" />
|
<param name="base-dir" expression="${admin.defn.dir}" />
|
<classpath refid="xalan.class.path" />
|
</xslt>
|
|
<!-- Generate manifest file for core administration components. -->
|
<tempfile property="admin.temp.dir" destDir="${build.dir}" prefix="tmp" />
|
<mkdir dir="${admin.temp.dir}" />
|
<xslt basedir="${admin.defn.dir}" destdir="${admin.temp.dir}" extension=".manifest" includes="**/*Configuration.xml"
|
style="${admin.rules.dir}/manifestMO.xsl">
|
<classpath refid="xalan.class.path" />
|
</xslt>
|
<concat destfile="${classes.dir}/admin/core.manifest">
|
<fileset dir="${admin.temp.dir}" includes="**/*.manifest" />
|
</concat>
|
<delete dir="${admin.temp.dir}" />
|
</target>
|
|
|
|
<!-- Remove all dynamically-generated build files. -->
|
<target name="cleanadmin" if="isadmingendirpresent" description="Clean up any generated source files for admin">
|
<delete includeemptydirs="true">
|
<fileset dir="${admin.src.dir}" includes="**/*" />
|
</delete>
|
</target>
|
|
<!-- Validate core administration component XML definition files. -->
|
<target name="validateadmin" description="Validate core administration component XML definition files.">
|
<schemavalidate>
|
<fileset dir="${admin.defn.dir}" includes="**/*.xml" />
|
<schema namespace="http://www.opends.org/admin" file="${admin.rules.dir}/admin.xsd"/>
|
<schema namespace="http://www.opends.org/admin-ldap" file="${admin.rules.dir}/admin-ldap.xsd"/>
|
<schema namespace="http://www.opends.org/admin-cli" file="${admin.rules.dir}/admin-cli.xsd"/>
|
</schemavalidate>
|
</target>
|
|
<!-- Remove all dynamically-generated build files. -->
|
<target name="cleanmessages" if="ismsggendirpresent" description="Clean up any generated source files for messages">
|
<delete includeemptydirs="true">
|
<fileset dir="${msg.javagen.dir}" includes="**/*" />
|
</delete>
|
</target>
|
|
<!-- Generate a src.zip file containing all the server source. -->
|
<target name="srczip" depends="generateadmin"
|
description="Generate a src.zip file with all the server source.">
|
<zip destfile="${build.dir}/src.zip">
|
<zipfileset dir="${src.dir}" excludes="**/.svn" filemode="644"
|
dirmode="755" />
|
<zipfileset dir="${admin.src.dir}" excludes="**/.svn" filemode="644"
|
dirmode="755" />
|
<zipfileset dir="${ads.src.dir}" excludes="**/.svn" filemode="644"
|
dirmode="755" />
|
<zipfileset dir="${quicksetup.src.dir}" excludes="**/.svn" filemode="644"
|
dirmode="755" />
|
<zipfileset dir="${guitools.src.dir}" excludes="**/.svn" filemode="644"
|
dirmode="755" />
|
</zip>
|
</target>
|
|
|
|
<!-- Generate example plugin package. -->
|
<target name="example-plugin" if="pdir">
|
<!-- Create folder hierarchy in temporary directory. -->
|
<tempfile property="plugin.temp.dir" destDir="${build.dir}" prefix="tmp"/>
|
<mkdir dir="${plugin.temp.dir}/example-plugin" />
|
<mkdir dir="${plugin.temp.dir}/example-plugin/src" />
|
<mkdir dir="${plugin.temp.dir}/example-plugin/src-generated" />
|
<mkdir dir="${plugin.temp.dir}/example-plugin/lib" />
|
<mkdir dir="${plugin.temp.dir}/example-plugin/ext" />
|
<mkdir dir="${plugin.temp.dir}/example-plugin/resource" />
|
<mkdir dir="${plugin.temp.dir}/example-plugin/resource/admin" />
|
<mkdir dir="${plugin.temp.dir}/example-plugin/resource/config" />
|
<mkdir dir="${plugin.temp.dir}/example-plugin/resource/schema" />
|
<mkdir dir="${plugin.temp.dir}/example-plugin/resource/messages" />
|
<copy todir="${plugin.temp.dir}/example-plugin/src">
|
<fileset dir="${admin.defn.dir}" includes="**/*.xml" />
|
</copy>
|
<copy todir="${plugin.temp.dir}/example-plugin/resource/admin">
|
<fileset dir="${admin.rules.dir}" excludes="example-plugin/**" />
|
</copy>
|
<copy todir="${plugin.temp.dir}/example-plugin" file="${admin.rules.dir}/example-plugin/build.xml" />
|
<copy todir="${plugin.temp.dir}/example-plugin" file="${admin.rules.dir}/example-plugin/README" />
|
<copy todir="${plugin.temp.dir}/example-plugin/resource/schema" file="${admin.rules.dir}/example-plugin/99-example-plugin.ldif" />
|
<copy todir="${plugin.temp.dir}/example-plugin/resource/config" file="${admin.rules.dir}/example-plugin/example-plugin.ldif" />
|
<copy todir="${plugin.temp.dir}/example-plugin/src/com/example/opends">
|
<fileset dir="${admin.rules.dir}/example-plugin" includes="*.java,*.xml" excludes="build.xml" />
|
</copy>
|
<copy todir="${plugin.temp.dir}/example-plugin/lib" file="${buildtools.jar}" />
|
<copy todir="${plugin.temp.dir}/example-plugin/resource/messages/com/example/opends/messages" file="${admin.rules.dir}/example-plugin/example_plugin.properties" />
|
<copy todir="${plugin.temp.dir}/example-plugin/resource/messages/com/example/opends/messages" file="${admin.rules.dir}/example-plugin/example_plugin_fr.properties" />
|
<!-- Package up the plugin in the OpenDJ package folder. -->
|
<zip destfile="${pdir}/example-plugin.zip">
|
<zipfileset dir="${plugin.temp.dir}" filemode="644" dirmode="755" />
|
</zip>
|
<delete dir="${plugin.temp.dir}" />
|
</target>
|
|
<target name="snmpmessagebuild" if="isopendmkpresent">
|
<echo message="SNMP extension will be built and included in the delivery."/>
|
<echo message="OpenDMK jar file location is ${opendmk.lib.dir}/jdmkrt.jar"/>
|
</target>
|
|
<target name="snmpmessageNotbuild" unless="isopendmkpresent">
|
<echo message="Building without SNMP extension."/>
|
<echo message="To build with SNMP extension set opendmk.lib.dir build property"/>
|
<echo message="to indicate the location of the OpenDMK jar files. OpenDMK jars"/>
|
<echo message="can be found at OpenDMK project at https://opendmk.dev.java.net"/>
|
</target>
|
|
<target name="snmpecho" depends="snmpmessageNotbuild,snmpmessagebuild"/>
|
|
<!-- SNMP targets -->
|
<target name="cleansnmp" description="Clean up any SNMP generated source files">
|
<delete includeemptydirs="true" failonerror="false">
|
<fileset dir="${snmp.gen.dir}" includes="**/*" />
|
</delete>
|
</target>
|
|
<target name="mibgeneration" if="isopendmkpresent" description="mibgen invocation">
|
<property name="opendmktk.path" location="${opendmk.lib.dir}/jdmktk.jar"/>
|
<mkdir dir="${snmp.gen.dir}/org/opends/server/snmp" />
|
<exec dir="${snmp.mib.dir}" executable="java">
|
<arg line="-classpath ${opendmktk.path}
|
com.sun.jdmk.tools.MibGen -X:use-display-hint
|
-d "${snmp.gen.dir}/org/opends/server/snmp" -mc -desc
|
-tp org.opends.server.snmp "${snmp.mib.dir}/rfc2605.txt"
|
"${snmp.mib.dir}/mib_core.txt"
|
"${snmp.mib.dir}/rfc2021.txt" "${snmp.mib.dir}/rfc2788.txt""/>
|
</exec>
|
</target>
|
|
<target name="compilesnmp"
|
depends="mibgeneration"
|
if="isopendmkpresent"
|
description="Compile the SNMP Connection Handler extension source files.">
|
|
<mkdir dir="${classes.dir}" />
|
|
<javac srcdir="${snmp.gen.dir}" destdir="${classes.dir}" >
|
<compilerarg value="-Xlint:-serial" />
|
<classpath>
|
<fileset refid="opendj.runtime.jars"/>
|
<fileset dir="${opendmk.lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</javac>
|
|
<javac srcdir="${snmp.src.dir}" destdir="${classes.dir}">
|
<classpath>
|
<fileset refid="opendj.runtime.jars"/>
|
<fileset dir="${opendmk.lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
</classpath>
|
</javac>
|
</target>
|
|
|
<!-- Package the SNMP Directory Server extension for distribution. -->
|
<target name="package-snmp" if="isopendmkpresent" depends="snmpecho,compilesnmp"
|
description="Package the SNMP Directory Server extension for distribution.">
|
<property name="pdir" location="${package.dir}/${SHORT_NAME}-${VERSION_NUMBER_STRING}"/>
|
<mkdir dir="${pdir}/lib/extensions" />
|
<mkdir dir="${pdir}/snmp/mib"/>
|
<mkdir dir="${pdir}/template/config/snmp/security" />
|
<!-- Copy security template files -->
|
<copy todir="${pdir}/template/config/snmp/security">
|
<fileset dir="${snmp.security.dir}"/>
|
</copy>
|
<!-- Copy the mib -->
|
<copy todir="${pdir}/snmp/mib" file="${snmp.mib.dir}/rfc2605.txt"/>
|
|
<!-- Update the config.ldif file with snmp config -->
|
<concat destfile="${pdir}/template/config/config.ldif" append="true">
|
<filelist dir="${snmp.config.dir}" files="config.snmp.ldif"/>
|
</concat>
|
|
<!-- Create the jar file -->
|
<jar jarfile="${pdir}/lib/extensions/snmp-mib2605.jar"
|
basedir="${classes.dir}"
|
includes="org/opends/server/snmp/**"
|
compress="true" index="true" >
|
<manifest>
|
<attribute name="Extension-Name" value="snmp-mib2605"/>
|
<attribute name="Implementation-Version" value="${VERSION_NUMBER_STRING}"/>
|
<attribute name="Revision-Number" value="${REVISION_NUMBER}"/>
|
</manifest>
|
</jar>
|
<!-- Add admin/extension.manifest into the extension jar file -->
|
<jar jarfile="${pdir}/lib/extensions/snmp-mib2605.jar"
|
basedir="${snmp.resource.dir}"
|
includes="admin/**"
|
compress="true" index="true" update="yes">
|
</jar>
|
<echo message="SNMP Extension is built"/>
|
<echo message="${pdir}/lib/extensions/snmp-mib2605.jar"/>
|
</target>
|
|
<target name="testsnmpinit" if="isopendmkpresent" depends="init">
|
<!-- Compile the SNMP test cases -->
|
<mkdir dir="${unittest.classes.dir}" />
|
<javac srcdir="${unittest.testng.src.dir}" destdir="${unittest.classes.dir}"
|
includes="org/opends/server/snmp/**">
|
<classpath>
|
<fileset refid="opendj.runtime.jars"/>
|
<fileset refid="opendj.test.jars"/>
|
|
<fileset dir="${testng.lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
|
<fileset dir="${opendmk.lib.dir}">
|
<include name="*.jar" />
|
</fileset>
|
|
<path refid="run.classpath" />
|
<path refid="quickSetup.classpath" />
|
</classpath>
|
</javac>
|
</target>
|
|
<!-- ==============
|
IVY TARGETS
|
=================== -->
|
|
<target name="check-ivy-installed">
|
<available file="${ivy.jar.file}" property="ivy-installed"/>
|
</target>
|
|
<target name="download-ivy" depends="check-ivy-installed" unless="ivy-installed">
|
<mkdir dir="${ext.dir}"/>
|
<!-- download Ivy from web site so that it can be used even without any special installation -->
|
<echo message="installing ivy..."/>
|
<get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar" dest="${ivy.jar.file}" usetimestamp="true"/>
|
</target>
|
|
<target name="install-ivy" depends="download-ivy" description="--> install ivy">
|
<!-- try to load ivy here from local ivy dir, in case the user has not already dropped
|
it into ant's lib dir (note that the latter copy will always take precedence).
|
We will not fail as long as local lib dir exists (it may be empty) and
|
ivy is in at least one of ant's lib dir or the local lib dir. -->
|
<path id="ivy.lib.path">
|
<fileset dir="${ext.dir}" includes="*.jar"/>
|
</path>
|
<taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
|
</target>
|
|
<target name="resolve" depends="install-ivy" description="--> retrieve dependencies with ivy">
|
<ivy:retrieve pattern="${lib.dir}/[type]/[artifact].[ext]">
|
<firstmatchmapper>
|
<regexpmapper from="(.*/(source|javadoc)/.*)" to="\1"/>
|
<!-- Separate test and compile jars ala Maven -->
|
<regexpmapper from="(.*)/(jar)/(.*(?:assertj-core|hamcrest-core|mockito-core|objenesis)\.jar)" to="\1/test/\3"/>
|
<regexpmapper from="(.*)/(jar|bundle)/(.*)" to="\1/compile/\3"/>
|
</firstmatchmapper>
|
</ivy:retrieve>
|
</target>
|
|
<property name="snapshots.dir" value="${lib.dir}/snapshots" />
|
<target name="resolve-snapshots-separately" depends="install-ivy">
|
<ivy:retrieve type="jar,bundle" pattern="${lib.dir}/[artifact]-[revision].[ext]">
|
<firstmatchmapper>
|
<globmapper from="${lib.dir}/*-SNAPSHOT.jar" to="${snapshots.dir}/*-SNAPSHOT.jar" />
|
<globmapper from="${lib.dir}/*" to="${lib.dir}/releases/*" />
|
</firstmatchmapper>
|
</ivy:retrieve>
|
</target>
|
|
<fileset dir="${snapshots.dir}" id="snapshots.dir.ref" erroronmissingdir="false">
|
<include name="**"/>
|
</fileset>
|
<target name="check-no-snapshot-dependencies" depends="cleanlib,resolve-snapshots-separately">
|
<fail message="The project must not depend on snapshot dependencies. Found: ${toString:snapshots.dir.ref}">
|
<condition>
|
<resourcecount refid="snapshots.dir.ref" when="greater" count="0" />
|
</condition>
|
</fail>
|
<antcall target="cleanlib" />
|
<echo message="OK." />
|
</target>
|
|
<target name="cleanlib" description="--> clean the lib directory">
|
<delete includeemptydirs="true">
|
<fileset dir="${lib.dir}">
|
<include name="**" />
|
<exclude name="opendj_service.exe" />
|
<exclude name="winlauncher.exe" />
|
<exclude name="launcher_administrator.exe" />
|
</fileset>
|
</delete>
|
</target>
|
|
<target name="clean-ivy" description="--> clean the ivy installation">
|
<delete file="${ivy.jar.file}"/>
|
</target>
|
|
<target name="clean-ivy-cache" depends="install-ivy" description="--> clean the ivy cache">
|
<ivy:cleancache/>
|
</target>
|
|
<import file="build-svr4.xml"/>
|
<import file="build-pkg.xml"/>
|
</project>
|