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