<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one   *
 or more contributor license agreements.  See the NOTICE file *
 distributed with this work for additional information        *
 regarding copyright ownership.  The ASF licenses this file   *
 to you under the Apache License, Version 2.0 (the            *
 "License"); you may not use this file except in compliance   *
 with the License.  You may obtain a copy of the License at   *
                                                              *
   http://www.apache.org/licenses/LICENSE-2.0                 *
                                                              *
 Unless required by applicable law or agreed to in writing,   *
 software distributed under the License is distributed on an  *
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
 KIND, either express or implied.  See the License for the    *
 specific language governing permissions and limitations      *
 under the License.                                           *
-->
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.esme</groupId>
    <artifactId>esme-server</artifactId>
    <version>apache-esme-1.4</version>
    <packaging>war</packaging>
    <name>Apache Enterprise Social Messaging Environment (ESME)</name>
     <url>http://esme.apache.org</url>
    <description>ESME is a social tool that takes the immediacy of messaging and applies it to real time business process problem solving</description>
    <inceptionYear>2008</inceptionYear>
        <issueManagement>
          <system>JIRA</system>
         <url>http://issues.apache.org/jira/browse/ESME</url>
     </issueManagement>
     <ciManagement>
         <system>Hudson</system>
         <url>http://hudson.zones.apache.org/hudson/job/ESME</url>
     </ciManagement>
    <licenses>
       <license>
           <name>The Apache Software License, Version 2.0</name>
           <url>LICENSE.txt</url>
       </license>
    </licenses>
        <organization>
       <name>Apache Software Foundation</name>
       <url>http://www.apache.org</url>
    </organization>
      <scm>
         <connection>scm:svn:http://svn.apache.org/repos/asf/esme</connection>
         <developerConnection>scm:svn:https://svn.apache.org/repos/asf/esme</developerConnection>
          <url>http://svn.apache.org/repos/asf/esme</url>
     </scm>
    <mailingLists>
     <mailingList>
      <name>ESME Dev List</name>
      <subscribe>dev-subscribe@esme.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@esme.apache.org</unsubscribe>
      <post>dev@esme.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/esme-dev/</archive>
    </mailingList>
   </mailingLists>
     <developers>
    <developer>
      <id>rhirsch</id>
      <name>Dick Hirsch</name>
      <email>rhirsch -at- apache.org</email>
      <organization>Apache</organization>
      <roles>
        <role>Release Manager</role>
        <role>Wiki Gardener</role>
      </roles>
    </developer>
    </developers>
    <properties>
        <lift.version>2.4</lift.version>
        <scala.version>2.9.1</scala.version>
        <scalaz.version>6.0.4</scalaz.version>
        <compass.version>2.1.1</compass.version>
        <lucene.version>2.4.0</lucene.version>
        <netbeans.hint.deploy.server>gfv3</netbeans.hint.deploy.server>
        <scala.stats.version>1.3</scala.stats.version>
    </properties>

    <repositories>
         <repository>
               <id>Base</id>
              <name>http://repo2.maven.org/maven2/</name>
              <url>http://repo2.maven.org/maven2/</url>
          </repository> 
        <repository>
            <id>scala-tools.org</id>
            <name>Scala-Tools Maven2 Repository</name>
            <url>http://scala-tools.org/repo-releases</url>
        </repository>
        <repository>
            <id>scala-tools.org.snapshots</id>
            <name>Scala-Tools Maven2 Repository for Snapshots</name>
            <url>http://scala-tools.org/repo-snapshots</url>
            <snapshots/>
        </repository>
        <repository>
            <id>compass-project.org</id>
            <name>Compass</name>
            <url>http://repo.compass-project.org</url>
        </repository>
         <!--repository>
            <id>scala-stats</id>
            <name>Twitter Repo</name>
            <url>http://www.lag.net/nest</url>
        </repository-->    
        <repository>
          <id>com.twitter</id>
          <name>Twitter</name>
          <url>http://maven.twttr.com</url>
        </repository>
          <repository>
             <id>Apache Repo</id> 
              <name>Apache repository for Derby 10.5.1.1</name> 
              <url>http://people.apache.org/repo/m1-ibiblio-rsync-repository</url> 
              <layout>legacy</layout> 
            </repository>           
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>scala-tools.org</id>
            <name>Scala-Tools Maven2 Repository</name>
            <url>http://scala-tools.org/repo-releases</url>
        </pluginRepository>
    </pluginRepositories>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.scala-lang</groupId>
                <artifactId>scala-library</artifactId>
                <version>${scala.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>


    <dependencies>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>${scala.version}</version>
        </dependency>
       <dependency>
            <groupId>org.openid4java</groupId>
            <artifactId>openid4java-nodeps</artifactId>
            <version>0.9.5</version>
        </dependency>
        <dependency>
            <groupId>net.liftweb</groupId>
            <artifactId>lift-util_${scala.version}</artifactId>
            <version>${lift.version}</version>
        </dependency>
        <dependency>
            <groupId>net.liftweb</groupId>
            <artifactId>lift-webkit_${scala.version}</artifactId>
            <version>${lift.version}</version>
        </dependency>
        <dependency>
            <groupId>net.liftweb</groupId>
            <artifactId>lift-widgets_${scala.version}</artifactId>
            <version>${lift.version}</version>
        </dependency>
        <dependency>
            <groupId>net.liftweb</groupId>
            <artifactId>lift-mapper_${scala.version}</artifactId>
            <version>${lift.version}</version>
        </dependency>
        <dependency>
            <groupId>net.liftweb</groupId>
            <artifactId>lift-testkit_${scala.version}</artifactId>
            <version>${lift.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>net.liftweb</groupId>
            <artifactId>lift-openid_${scala.version}</artifactId>
            <version>${lift.version}</version>
        </dependency>
         <dependency>
            <groupId>net.liftweb</groupId>
            <artifactId>lift-actor_${scala.version}</artifactId>
            <version>${lift.version}</version>
        </dependency>
         <dependency>
            <groupId>net.liftweb</groupId>
            <artifactId>lift-json_${scala.version}</artifactId>
            <version>${lift.version}</version>
        </dependency>
         <dependency>
            <groupId>net.liftweb</groupId>
            <artifactId>lift-common_${scala.version}</artifactId>
            <version>${lift.version}</version>
        </dependency>
        <dependency>
           <groupId>net.liftweb</groupId>
           <artifactId>lift-ldap_${scala.version}</artifactId>
           <version>${lift.version}</version>
       </dependency>
        <dependency>
           <groupId>net.liftweb</groupId>
           <artifactId>lift-textile_${scala.version}</artifactId>
           <version>${lift.version}</version>
        </dependency>
        <dependency>
          <groupId>org.scalaz</groupId>
          <artifactId>scalaz-core_${scala.version}</artifactId>
          <version>${scalaz.version}</version>
        </dependency>
        <dependency>
            <groupId>org.compass-project</groupId>
            <artifactId>compass</artifactId>
            <version>${compass.version}</version>
        </dependency>
         <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
            <version>2.4.0</version>
        </dependency>
         <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <version>10.5.3.0_1</version>
        </dependency>       
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>     
        <dependency>
          <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>7.3.1.v20110307</version> 
        </dependency>  
        <dependency>
          <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-servlet</artifactId>
            <version>7.3.1.v20110307</version> 
        </dependency>
        <dependency>
          <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty</artifactId>
            <version>[6.1.6,)</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <!-- for LiftConsole -->
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-compiler</artifactId>
            <version>${scala.version}</version>
            <!--<scope>test</scope>-->
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-snowball</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
           <groupId>org.slf4j</groupId>
           <artifactId>slf4j-log4j12</artifactId>
           <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>com.twitter</groupId>
            <artifactId>ostrich</artifactId>
            <version>4.7.3</version>
            <exclusions>
              <exclusion> 
                <groupId>org.scala-tools</groupId>
                <artifactId>vscaladoc</artifactId>
              </exclusion>  
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.scala-tools.testing</groupId>
            <artifactId>specs_${scala.version}</artifactId>
            <version>1.6.9</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.4</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <sourceDirectory>src/main/scala</sourceDirectory>
        <testSourceDirectory>src/test/scala</testSourceDirectory>

        <plugins>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.scala-tools</groupId>
                <artifactId>maven-scala-plugin</artifactId>
                <version>2.9</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <jvmArgs>
                        <jvmArg>-Xmx1024m</jvmArg>
                    </jvmArgs>
                    <scalaVersion>${scala.version}</scalaVersion>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <configuration>
                    <contextPath>/</contextPath>
                    <scanIntervalSeconds>0</scanIntervalSeconds>
                </configuration>
            </plugin>
            <plugin>
                <groupId>net.sf.alchim</groupId>
                <artifactId>yuicompressor-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>compress</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <nosuffix>true</nosuffix>
                    <statistics>false</statistics>
                    <jswarn>false</jswarn>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <configuration>
                    <downloadSources>true</downloadSources>
                    <excludes>
                        <exclude>org.scala-lang:scala-library</exclude>
                    </excludes>
                    <classpathContainers>
                        <classpathContainer>ch.epfl.lamp.sdt.launching.SCALA_CONTAINER</classpathContainer>
                    </classpathContainers>
                    <projectnatures>
                        <java.lang.String>ch.epfl.lamp.sdt.core.scalanature</java.lang.String>
                        <java.lang.String>org.eclipse.jdt.core.javanature</java.lang.String>
                    </projectnatures>
                    <buildcommands>
                        <java.lang.String>ch.epfl.lamp.sdt.core.scalabuilder</java.lang.String>
                    </buildcommands>
                </configuration>
            </plugin>
            <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-surefire-plugin</artifactId>
                  <version>2.8</version>
                  <configuration>
                    <forkMode>once</forkMode>
                    <runOrder>filesystem</runOrder>
                    <testFailureIgnore>true</testFailureIgnore>
                  </configuration>
             </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>esme-cma-ldap-jetty</id>
            <dependencies>
                <dependency>
                  <groupId>org.mortbay.jetty</groupId>
                    <artifactId>jetty-plus</artifactId>
                    <version>[6.1.6,)</version>
                    <scope>compile</scope>
                </dependency>
                <dependency>
                  <groupId>org.mortbay.jetty</groupId>
                    <artifactId>jetty-ldap-jaas</artifactId>
                    <version>[6.1.6,)</version>
                    <scope>compile</scope>
                </dependency>
            </dependencies>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.mortbay.jetty</groupId>
                        <artifactId>maven-jetty-plugin</artifactId>
                        <configuration>
                            <contextPath>/</contextPath>
                            <scanIntervalSeconds>0</scanIntervalSeconds>
                            <userRealms>
                                <userRealm implementation="org.mortbay.jetty.plus.jaas.JAASUserRealm">
                                    <name>ESMERealm</name>
                                    <loginModuleName>ldaploginmodule</loginModuleName>
                                </userRealm>
                            </userRealms>
                            <systemProperties>
                              <systemProperty>
                                <name>java.security.auth.login.config</name>
                                <value>ldap-loginModule.conf</value>
                              </systemProperty>
                            </systemProperties>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>esme-cma-simple-jetty</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.mortbay.jetty</groupId>
                        <artifactId>maven-jetty-plugin</artifactId>
                        <configuration>
                            <contextPath>/</contextPath>
                            <scanIntervalSeconds>0</scanIntervalSeconds>
                            <userRealms>
                                <userRealm implementation="org.mortbay.jetty.security.HashUserRealm">
                                    <name>ESMERealm</name>
                                    <config>jetty-login.properties</config>
                                </userRealm>
                            </userRealms>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.scala-tools</groupId>
                <artifactId>maven-scala-plugin</artifactId>
                <configuration>
                    <jvmArgs>
                        <jvmArg>-Xmx1024m</jvmArg>
                    </jvmArgs>

                    <scalaVersion>${scala.version}</scalaVersion>
                </configuration>
            </plugin>
        </plugins>
    </reporting>
</project>

