From d5405bbfef235a096147dbea84a909f97be6facb Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 25 Apr 2013 09:08:39 +0000
Subject: [PATCH] Use Maven to build OpenDJ server
---
opends/build.xml | 23 ++-
opends/pom-maven.xml | 284 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 297 insertions(+), 10 deletions(-)
diff --git a/opends/build.xml b/opends/build.xml
index f6f19ef..0b03924 100644
--- a/opends/build.xml
+++ b/opends/build.xml
@@ -707,15 +707,18 @@
- <!-- Compile the Directory Server source files. -->
<target name="cleancompile"
depends="cleaninit,compilequicksetup"
description="Recompile the Directory Server source files.">
</target>
- <!-- Compile the Directory Server source files. -->
+ <target name="generatesources"
+ depends="dynamicconstants,generatemessages,generateadmin"
+ description="Generate all the sources.">
+ </target>
+
<target name="compile"
- depends="init,checkjavaversion,dynamicconstants,generatemessages,compileadmin,resolve"
+ depends="init,checkjavaversion,generatesources,resolve"
description="Compile the Directory Server source files.">
<mkdir dir="${classes.dir}" />
<mkdir dir="${build.lib.dir}" />
@@ -866,7 +869,7 @@
<delete file="${package.dir}/lib/quicksetup.jar" />
<!-- Regenerate configuration files if necessary -->
- <antcall target="compileadmin" />
+ <antcall target="generateadmin" />
<!-- Recreate the classes directory and recompile into it. -->
<mkdir dir="${classes.dir}" />
@@ -1434,7 +1437,7 @@
<!-- Generate JavaDoc documentation from the source files -->
- <target name="javadoc" depends="dsml,compileadmin"
+ <target name="javadoc" depends="dsml,generateadmin"
description="Generate JavaDoc documentation.">
<mkdir dir="${javadoc.dir}" />
@@ -2284,10 +2287,9 @@
<!-- Code generation for core administration components. -->
- <target name="compileadmin" depends="validateadmin" description="Code generation for configuration Object.">
+ <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>
@@ -2302,8 +2304,9 @@
<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="compileadminsubtask" />
+ <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" />
@@ -2312,7 +2315,7 @@
- <target name="compileadminsubtask">
+ <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">
@@ -2427,7 +2430,7 @@
</target>
<!-- Generate a src.zip file containing all the server source. -->
- <target name="srczip" depends="compileadmin"
+ <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"
diff --git a/opends/pom-maven.xml b/opends/pom-maven.xml
new file mode 100644
index 0000000..dec04a6
--- /dev/null
+++ b/opends/pom-maven.xml
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ! 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
+ ! trunk/opendj3/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
+ ! trunk/opendj3/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 2013 ForgeRock AS
+ !
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.forgerock.opendj</groupId>
+ <artifactId>opendj-project</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>opendj-server</artifactId>
+ <version>2.5.0-SNAPSHOT</version>
+ <name>OpenDJ Directory Server</name>
+ <description>
+ OpenDJ is a new LDAPv3 compliant directory service, developed for the Java
+ platform, providing a high performance, highly available and secure store
+ for the identities managed by enterprises.
+ </description>
+ <inceptionYear>2006</inceptionYear>
+ <scm>
+ <url>https://svn.forgerock.org/opendj/trunk/opends/</url>
+ <connection>scm:svn:https://svn.forgerock.org/opendj/trunk/opends/</connection>
+ <developerConnection>scm:svn:https://svn.forgerock.org/opendj/trunk/opends/</developerConnection>
+ <tag>HEAD</tag>
+ </scm>
+ <ciManagement>
+ <system>jenkins</system>
+ <url>http://builds.forgerock.org/job/OpenDJ%20-%20trunk%20-%20postcommit</url>
+ <notifiers>
+ <notifier>
+ <type>mail</type>
+ <sendOnError>true</sendOnError>
+ <sendOnFailure>true</sendOnFailure>
+ <sendOnSuccess>false</sendOnSuccess>
+ <sendOnWarning>false</sendOnWarning>
+ <address>opendj-dev@forgerock.org</address>
+ </notifier>
+ </notifiers>
+ </ciManagement>
+
+ <repositories>
+ <repository>
+ <id>forgerock-staging-repository</id>
+ <name>ForgeRock Release Repository</name>
+ <url>http://maven.forgerock.org/repo/releases</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>forgerock-snapshots-repository</id>
+ <name>ForgeRock Snapshot Repository</name>
+ <url>http://maven.forgerock.org/repo/snapshots</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ </repository>
+ <repository>
+ <id>oracle</id>
+ <name>Oracle Release Repository</name>
+ <url>http://download.oracle.com/maven</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
+ <properties>
+ <grizzly.version>2.3</grizzly.version>
+ <opendj.sdk.version>3.0.0-SNAPSHOT</opendj.sdk.version>
+ <crest.version>2.0.0-SNAPSHOT</crest.version>
+
+ <ant.home>ext/ant</ant.home>
+ <generatedSourcesDirectory>target/generated-sources</generatedSourcesDirectory>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ <version>1.4.5</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <version>[3.1-b02]</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sleepycat</groupId>
+ <artifactId>je</artifactId>
+ <version>5.0.73</version>
+ </dependency>
+ <dependency>
+ <groupId>org.forgerock.opendj</groupId>
+ <artifactId>opendj-rest2ldap-servlet</artifactId>
+ <version>${opendj.sdk.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.forgerock.opendj</groupId>
+ <artifactId>opendj-server2x-adapter</artifactId>
+ <version>${opendj.sdk.version}</version>
+ <!--exclude module="opendj-server"/-->
+ </dependency>
+ <dependency>
+ <groupId>org.glassfish.grizzly</groupId>
+ <artifactId>grizzly-http-servlet</artifactId>
+ <version>${grizzly.version}</version>
+ <!--exclude module="javax.servlet-api" /-->
+ </dependency>
+
+ <dependency>
+ <!-- this is built when we are calling maven-antrun-plugin -->
+ <groupId>org.forgerock.opendj</groupId>
+ <artifactId>build-tools</artifactId>
+ <version>1.0</version>
+ <scope>system</scope>
+ <systemPath>${user.dir}/build/build-tools/build-tools.jar</systemPath>
+ </dependency>
+
+ <dependency>
+ <groupId>org.testng</groupId>
+ <artifactId>testng</artifactId>
+ <version>5.7</version>
+ <classifier>jdk15</classifier>
+ <scope>test</scope>
+ <!-- FIXME: We are using a custom built version, but because of this
+ we cannot use test scope, let's find a version that works better
+ <scope>system</scope>
+ <systemPath>${user.dir}/ext/testng/lib/testng-5.7b-jdk15.jar</systemPath-->
+ </dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <version>1.0.0</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>1.9.5</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <sourceDirectory>src/server</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>resource</directory>
+ </resource>
+ </resources>
+ <!--testSourceDirectory>tests/unit-tests-testng</testSourceDirectory>
+ <testResources>
+ <testResource>
+ <directory>tests/unit-tests-testng/resource</directory>
+ </testResource>
+ </testResources-->
+ <!--build>
+ <directory>target</directory>
+ <outputDirectory>target/classes</outputDirectory>
+ <finalName>${artifactId}-${version}</finalName>
+ <testOutputDirectory>target/test-classes</testOutputDirectory>
+ <sourceDirectory>src/main/java</sourceDirectory>
+ <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
+ <testSourceDirectory>src/test/java</testSourceDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ </resources>
+ <testResources>
+ <testResource>
+ <directory>src/test/resources</directory>
+ </testResource>
+ </testResources>
+ </build-->
+
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.6</source>
+ <target>1.6</target>
+ <!-- Use <excludes> tag for excluding from production code -->
+ <testExcludes>
+ <exclude>**/snmp/*.java</exclude>
+ </testExcludes>
+ </configuration>
+ </plugin>
+ <!--plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.14.1</version>
+ <configuration>
+ <suiteXmlFiles>
+ <suiteXmlFile>ext/testng/testng.xml</suiteXmlFile>
+ </suiteXmlFiles>
+ </configuration>
+ </plugin-->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-release-plugin</artifactId>
+ <configuration>
+ <!-- Required for release:perform: the parent pom specifies a value
+ for "arguments" in the plugin configuration. This prevents
+ command line setting of the option. -->
+ <arguments>-Penforce -Dopendmk.lib.dir=${opendmk.lib.dir}</arguments>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <inherited>true</inherited>
+ <executions>
+ <execution>
+ <id>generate-sources</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <target>
+ <property name="absoluteGenSrcDir" location="${user.dir}/${generatedSourcesDirectory}" />
+ <property name="msg.javagen.dir" location="${absoluteGenSrcDir}" />
+ <property name="admin.src.dir" location="${absoluteGenSrcDir}" />
+ <!--property name="snmp.gen.dir" location="${absoluteGenSrcDir}" /-->
+
+ <ant target="generatesources" inheritAll="true" inheritRefs="true" />
+ </target>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.7</version>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <goals><goal>add-source</goal></goals>
+ <configuration>
+ <sources>
+ <source>${generatedSourcesDirectory}</source>
+ <source>src/ads</source>
+ <!--source>src/build-tools</source--><!-- We are using build-tools.jar -->
+ <source>src/guitools</source>
+ <source>src/messages/src</source>
+ <source>src/quicksetup</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
--
Gitblit v1.10.0