<?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">
  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>16</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.apache.activemq</groupId>
  <artifactId>apollo-project</artifactId>
  <version>99-trunk-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Apache ActiveMQ Apollo Project</name>
  <inceptionYear>2005</inceptionYear>

  <properties>

    <!-- base url for site deployment.  See distribution management for full url.  Override this in settings.xml for staging -->
    <website-base-url>svn:https://svn.apache.org/repos/infra/websites/production/activemq/content/apollo</website-base-url>

    <target-dir>target</target-dir>
    <projectName>Apache Apollo</projectName>

    <!-- dependencies that track scala version changes -->
    <scala-version>2.10.0</scala-version>
    <scalatest-version>1.8</scalatest-version>
    
    <activemq-version>5.7.0</activemq-version>
    <servicemix.kernel.version>1.1.0</servicemix.kernel.version>
    <spring-version>2.5.5</spring-version>
    <activesoap-version>1.3</activesoap-version>
    <annogen-version>0.1.0</annogen-version>
    <ant-version>1.6.2</ant-version>
    <aopalliance-version>1.0</aopalliance-version>
    <axion-version>1.0-M3-dev</axion-version>
    <axis-version>1.2-RC1</axis-version>

    <cglib-version>2.0</cglib-version>
    <commons-beanutils-version>1.6.1</commons-beanutils-version>
    <commons-collections-version>3.2.1</commons-collections-version>
    <openjpa-version>1.2.0</openjpa-version>
    <commons-dbcp-version>1.2.2</commons-dbcp-version>
    <commons-httpclient-version>3.1</commons-httpclient-version>
    <commons-logging-version>1.1</commons-logging-version>
    <commons-pool-version>1.4</commons-pool-version>
    <commons-primitives-version>1.0</commons-primitives-version>
    <directory-asn1-version>0.3.2</directory-asn1-version>
    <directory-kerboros-version>0.5</directory-kerboros-version>
    <directory-mina-version>0.7.3</directory-mina-version>
    <directory-version>1.5.4</directory-version>
    <geronimo-version>1.0</geronimo-version>
    <howl-version>0.1.8</howl-version>
    <hsqldb-version>1.7.2.2</hsqldb-version>
    <jdom-version>1.0</jdom-version>
    <jetty-version>8.1.5.v20120716</jetty-version>
    <jmock-version>1.0.1</jmock-version>
    <junit-version>4.10</junit-version>
    <jxta-version>2.0</jxta-version>
    <log4j-version>1.2.14</log4j-version>
    <nlog4j-version>1.5.2</nlog4j-version>
    <org-apache-derby-version>10.1.3.1</org-apache-derby-version>
    <p2psockets-version>1.1.2</p2psockets-version>
    <regexp-version>1.3</regexp-version>
    <rome-version>0.8</rome-version>

    <slf4j-version>1.6.1</slf4j-version>
    <mqtt-client-version>1.9</mqtt-client-version>

    <jaxb-api-version>2.2.7</jaxb-api-version>
    <jaxb-version>2.2.7</jaxb-version>
    <xjc-version>2.2.7</xjc-version>
    <stax-api-version>1.0.1</stax-api-version>
    <stax-version>1.2.0</stax-version>

    <xalan-version>2.6.0</xalan-version>
    <xmlbeans-version>2.0.0-beta1</xmlbeans-version>
    <xmlpull-version>1.1.3.4d_b4_min</xmlpull-version>
    <xstream-version>1.3.1</xstream-version>
    <xbean-version>3.4</xbean-version>
    <felix-version>1.0.0</felix-version>

    <hawtdispatch-version>1.20</hawtdispatch-version>
    <hawtbuf-version>1.10</hawtbuf-version>
    <stompjms-version>1.18</stompjms-version>
    
    <bdb-version>5.0.34</bdb-version>

    <leveldb-api-version>0.6</leveldb-api-version>
    <leveldb-version>0.6</leveldb-version>
    <leveldbjni-version>1.8</leveldbjni-version>

    <jasypt-version>1.6</jasypt-version>

    <scalate-version>1.6.1</scalate-version>
    <scalamd-version>1.6</scalamd-version>

    <servlet-api-version>3.0.0.v201112011016</servlet-api-version>
    <jackson-version>2.1.0</jackson-version>
    <logback-version>0.9.24</logback-version>
    <jersey-version>1.7</jersey-version>
    <snakeyaml-version>1.7</snakeyaml-version>
    <swagger-version>1.2.0</swagger-version>
    <jolokia-version>1.1.1</jolokia-version>

    <selenium-version>2.33.0</selenium-version>
      
    <!-- maven plugin versions -->

    <scala-plugin-version>3.1.0</scala-plugin-version>
    <maven-surefire-plugin-version>2.12</maven-surefire-plugin-version>
    <jetty-plugin-version>7.0.1.v20091125</jetty-plugin-version>
    <maven-release-plugin-version>2.4.1</maven-release-plugin-version>
    
    <!-- disable unique version timestamps in snapshots -->
    <uniqueVersion>false</uniqueVersion>
    
    <josql-version>1.5</josql-version>
    
    <!-- osgi stuff -->
    <osgi-version>4.2.0</osgi-version>
    <jansi-version>1.11</jansi-version>
    <airline-version>0.6</airline-version>
    <features-maven-plugin-version>2.1.0</features-maven-plugin-version>
    
    <osgi.fragment.host>${project.groupId}.apollo-broker</osgi.fragment.host>
    <mvnplugins-version>1.15</mvnplugins-version>
    <qpid-proton-version>0.3.0-fuse-2</qpid-proton-version>
    <qpid-jms-version>0.26</qpid-jms-version>

  </properties>

  <prerequisites>
    <maven>3.0</maven>
  </prerequisites>

  <url>http://activemq.apache.org/apollo</url>

  <mailingLists>
    <mailingList>
      <name>Development List</name>
      <subscribe>dev-subscribe@activemq.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@activemq.apache.org</unsubscribe>
      <post>dev@activemq.apache.org</post>
    </mailingList>
  </mailingLists>

  <distributionManagement>
    <site>
      <!-- this needs to match a server in your settings.xml with upload settings -->
      <id>apollo-website</id>
      <url>${website-base-url}/versions/${project.version}/maven/</url>
    </site>
  </distributionManagement>

  <modules>
    <module>apollo-boot</module>
    <module>apollo-scala</module>
    <module>apollo-util</module>
    <module>apollo-broker</module>
    <module>apollo-selector</module>
    <module>apollo-leveldb</module>
    <module>apollo-bdb</module>
    <module>apollo-dto</module>
    <module>apollo-stomp</module>
    <module>apollo-amqp</module>
    <module>apollo-mqtt</module>
    <module>apollo-web</module>
    <module>apollo-cli</module>
    <module>apollo-website</module>
    <module>apollo-openwire-generator</module>
    <module>apollo-openwire</module>
    <module>apollo-jmx</module>
    <module>apollo-distro</module>
    <module>apollo-war</module>
  </modules>

  <scm>
    <connection>scm:git:http://git-wip-us.apache.org/repos/asf/activemq-apollo.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/activemq-apollo.git</developerConnection>
    <url>https://github.com/apache/activemq-apollo/tree/trunk</url>
    <tag>HEAD</tag>
  </scm>

  <dependencyManagement>
    <dependencies>

      <!-- =============================== -->
      <!-- Setup default exclusions -->
      <!-- =============================== -->
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>${commons-logging-version}</version>
        <exclusions>
          <exclusion>
            <groupId>avalon-framework</groupId>
            <artifactId>avalon-framework</artifactId>
          </exclusion>
          <exclusion>
            <groupId>logkit</groupId>
            <artifactId>logkit</artifactId>
          </exclusion>
          <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      
      <dependency>
        <groupId>com.thoughtworks.xstream</groupId>
        <artifactId>xstream</artifactId>
        <version>${xstream-version}</version>
        <exclusions>
          <exclusion>
            <!-- xom is an optional dependency of xstream and not ASF compatible. -->
            <groupId>xom</groupId>
            <artifactId>xom</artifactId>
          </exclusion>
        </exclusions>
      </dependency>


    </dependencies>
  </dependencyManagement>

  <build>
  
    <!--
    <extensions>
      <extension>
        <groupId>com.google.code.maven-svn-wagon</groupId>
        <artifactId>maven-svn-wagon</artifactId>
        <version>1.4</version>
      </extension>
    </extensions>
    -->
    
    <!-- to allow the eclipse profile to use a different target directory -->
    <outputDirectory>${basedir}/${target-dir}/classes</outputDirectory>
    <testOutputDirectory>${basedir}/${target-dir}/test-classes</testOutputDirectory>

    <pluginManagement>
      <plugins>
      <!-- 
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-eclipse-plugin</artifactId>
          <version>2.7</version>
          <configuration>
            <downloadSources>true</downloadSources>
            <downloadJavadocs>true</downloadJavadocs>
            <outputDirectory>${basedir}/eclipse-classes</outputDirectory>
          </configuration>
        </plugin>
       -->
        <plugin>
          <groupId>com.sun.tools.jxc.maven2</groupId>
          <artifactId>maven-jaxb-schemagen-plugin</artifactId>
          <version>1.3-dev</version>
        </plugin>
        <plugin>
          <groupId>org.apache.servicemix.tooling</groupId>
          <artifactId>features-maven-plugin</artifactId>
          <version>1.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>2.2-beta-4</version>
          <configuration>
            <tarLongFileMode>gnu</tarLongFileMode>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-stage-plugin</artifactId>
          <version>1.0-alpha-1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${maven-surefire-plugin-version}</version>
          <configuration>
            <redirectTestOutputToFile>false</redirectTestOutputToFile>
            <forkMode>once</forkMode>
            <argLine>-enableassertions -Xmx500m</argLine>
            <failIfNoTests>false</failIfNoTests>
            <workingDirectory>${project.build.directory}</workingDirectory>
            <includes>
              <include>**/*Test.java</include>
              <include>**/*TestCase.java</include>
            </includes>
            <excludes>
              <exclude>**/legacy/**</exclude>
              <exclude>**/jaxb/**</exclude>
            </excludes>
          </configuration>
        </plugin>
        
        <!-- <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>ianal-maven-plugin</artifactId>
          <version>1.0-alpha-1</version>
        </plugin> -->
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>javacc-maven-plugin</artifactId>
          <version>2.4.1</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>rat-maven-plugin</artifactId>
          <version>1.0-alpha-3</version>
          <configuration>
            <excludeSubProjects>false</excludeSubProjects>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.mortbay.jetty</groupId>
          <artifactId>maven-jetty-plugin</artifactId>
          <version>${jetty-version}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>1.2</version>
        </plugin>
        <!-- 
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>cobertura-maven-plugin</artifactId>
          <version>2.0</version>
          <configuration>
          </configuration>
        </plugin> 
        -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>${maven-release-plugin-version}</version>
          <configuration>
            <autoVersionSubmodules>true</autoVersionSubmodules>
            <allowTimestampedSnapshots>false</allowTimestampedSnapshots>
            <preparationGoals>clean install</preparationGoals>
            <goals>deploy</goals>
            <remoteTagging>false</remoteTagging>
            <suppressCommitBeforeTag>false</suppressCommitBeforeTag>
            <pushChanges>false</pushChanges>
          </configuration>
          <dependencies>
            <dependency>
             <groupId>org.apache.maven.scm</groupId>
             <artifactId>maven-scm-api</artifactId>
             <version>1.8.1</version>
            </dependency>
          <dependency>
             <groupId>org.apache.maven.scm</groupId>
             <artifactId>maven-scm-provider-gitexe</artifactId>
             <version>1.8.1</version>
           </dependency>
         </dependencies>
        </plugin>
      </plugins>
    </pluginManagement>
    <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>
          <optimize>true</optimize>
          <debug>true</debug>
          <showDeprecation>true</showDeprecation>
          <showWarnings>true</showWarnings>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>[2.0.10,)</version>
                </requireMavenVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.0</version>
        <executions>
         <execution>
           <id>attach-descriptor</id>
           <goals>
             <goal>attach-descriptor</goal>
           </goals>
         </execution>
       </executions>
       
       <configuration>
          <reportPlugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-project-info-reports-plugin</artifactId>
              <version>2.4</version>
              <configuration>
                <dependencyDetailsEnabled>false</dependencyDetailsEnabled>
                <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
              </configuration>
              <!-- simpler configuration without reportSets available for usual cases -->
              <reports>
                <report>index</report>
                <report>dependencies</report>
                <report>issue-tracking</report>
                <report>license</report>
                <report>mailing-list</report>
                <report>modules</report>
                <report>project-team</report>
                <report>plugin-management</report>
                <report>plugins</report>
                <report>scm</report>
              </reports>
            </plugin>
            <plugin>
              <groupId>org.scala-tools</groupId>
              <artifactId>maven-scala-plugin</artifactId>
              <configuration>
                <scalaVersion>${scala-version}</scalaVersion>
              </configuration>
            </plugin>
          </reportPlugins>
        </configuration>
      </plugin>
      
      <!-- <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>2.3.4</version>
        <extensions>true</extensions>
        <inherited>true</inherited>
        <configuration>
          <instructions>
            <Fragment-Host>${osgi.fragment.host}</Fragment-Host>
            <Implementation-Title>${project.artifactId}</Implementation-Title>
            <Implementation-Version>${project.version}</Implementation-Version>
            <Bundle-Name>${project.artifactId}</Bundle-Name>
            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
            <Export-Package>{local-packages};version=${project.version};-noimport:=true</Export-Package>
            <Import-Package>*</Import-Package>
            <Private-Package>!*</Private-Package>
            <_versionpolicy-impl>[$(version;==;$(@)),$(version;=+;$(@)))</_versionpolicy-impl>
            <_versionpolicy-uses>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy-uses>
            <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
            <_failok>false</_failok>
          </instructions>
        </configuration>
      </plugin> -->
      
    </plugins>
  </build>

  <profiles>
    
    <!-- Integration tests.  Take a long time to run so, disabled by default -->
    <profile>
      <id>itests</id>
      <modules>
        <module>apollo-itests</module>
      </modules>
    </profile>

    <!-- to build the unstable modules -->
    <profile>
      <id>unstable</id>
      <modules>
        <module>apollo-network</module>
      </modules>
    </profile>
    
    <!-- 
        Do a license check by running       : mvn -P license license:check  
        UPdate the license check by running : mvn -P license license:format  
      -->
    <profile>
      <id>license</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.mycila.maven-license-plugin</groupId>
            <artifactId>maven-license-plugin</artifactId>
            <version>1.6.0</version>
            <configuration>
              <quiet>false</quiet>
              <header>src/main/resources/license-header.txt</header>
              <aggregate>true</aggregate>
              <includes>
                  <include>src/**</include>
                  <include>**/pom.xml</include>
              </includes>
              <excludes>
                <!-- can remove once http://code.google.com/p/maven-license-plugin/issues/detail?id=72 is resolved -->
                <exclude>**/*.scaml</exclude>
                <exclude>**/LICENSE.txt</exclude>
                <exclude>**/LICENSE</exclude>
                <exclude>**/.svn/**</exclude>
            
                <!-- ignore files produced during a build -->
                <exclude>**/target/**</exclude>
            
                <!-- ignore binary files -->
                <exclude>**/*.jpg</exclude>
                <exclude>**/*.png</exclude>
                <exclude>**/*.gif</exclude>
                <exclude>**/*.ico</exclude>
                <exclude>**/*.keystore</exclude>
                
                <exclude>**/*.keystore</exclude>
                
                <exclude>src/scripts/jquery.js</exclude>
                <exclude>src/main/resources/org/apache/activemq/apollo/cli/commands/etc/black-list.txt</exclude>
                <exclude>src/main/filtered-resources/org/apache/activemq/apollo/cli/banner.txt</exclude>
                <exclude>src/main/filtered-resources/org/apache/activemq/apollo/cli/commands/version.txt</exclude>
                <exclude>src/main/filtered-resources/org/apache/activemq/apollo/cli/tips.txt</exclude>
                <exclude>src/main/filtered-resources/org/apache/activemq/apollo/broker/version.txt</exclude>

                <exclude>src/main/release/examples/websocket/css/bootstrap.min.css</exclude>
                <exclude>src/main/release/examples/websocket/css/bootstrap.min.responsive.css</exclude>
                <exclude>src/main/release/examples/websocket/index.html</exclude>
                <exclude>src/main/release/examples/websocket/js/stomp.js</exclude>
                <exclude>src/main/webapp/api/index.html</exclude>
                <exclude>src/main/webapp/api/javascripts/app.js</exclude>
                <exclude>src/main/webapp/api/javascripts/swagger-service.js</exclude>
                <exclude>src/main/webapp/api/javascripts/swagger-ui.js</exclude>
                <exclude>src/main/webapp/api/stylesheets/screen.css</exclude>
                
                <exclude>src/test/scala/org/scalatest/ParallelBeforeAndAfterAll.scala</exclude>
                <exclude>src/test/scala/org/scalatest/junit/ParallelJUnitRunner.scala</exclude>

              </excludes>
              <useDefaultExcludes>false</useDefaultExcludes>
              <mapping>
                  <jj>JAVADOC_STYLE</jj>
                  <proto>DOUBLESLASH_STYLE</proto>
                  <index>SCRIPT_STYLE</index>
              </mapping>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>        
          </plugin>
        </plugins>
      </build>
    </profile>
    
    <!--
      To generate a graph of the project dependencies, run: mvn -P graph graph:project
    -->
    <profile>
      <id>graph</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.fusesource.mvnplugins</groupId>
            <artifactId>maven-graph-plugin</artifactId>
            <version>${mvnplugins-version}</version>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>eclipse</id>
      <properties>
        <target-dir>eclipse-classes</target-dir>
      </properties>
      <build>
        <testResources>
          <testResource>
            <directory>${basedir}/src/test/ide-resources</directory>
            <includes><include>**</include></includes>
          </testResource>
        </testResources>
      </build>
    </profile>

    <profile>
      <id>apache-release</id>
      <activation>
        <property>
          <name>apache-release</name>
        </property>
      </activation>
      <properties>
        <test>false</test>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>single</goal>
                </goals>
                <phase>package</phase>
                <configuration>
                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                  <descriptorRefs>
                    <descriptorRef>
                      source-release
                    </descriptorRef>
                  </descriptorRefs>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <!-- apache version not yet released -->
                <!--<groupId>org.apache</groupId>-->
                <groupId>org.apache.geronimo.genesis</groupId>
                <artifactId>apache-source-release-assembly-descriptor</artifactId>
                <!-- apache version not yet known -->
                <version>2.0</version>
              </dependency>
            </dependencies>
          </plugin>
          
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${maven-surefire-plugin-version}</version>
            <configuration>
              <test>false</test>
            </configuration>
          </plugin>
          
          <!-- Generate the Scala Docs so that they can be included in the javadoc artifact -->
          <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>scala-maven-plugin</artifactId>
            <version>${scala-plugin-version}</version>
            <executions>
              <execution>
                <id>doc</id>
                <phase>process-classes</phase>
                <goals>
                  <goal>doc</goal>
                </goals>
                <configuration>
                  <jvmArgs>
                    <jvmArg>-Xmx1024m</jvmArg>
                    <jvmArg>-Xss8m</jvmArg>
                  </jvmArgs>
                  <scalaVersion>${scala-version}</scalaVersion>
                </configuration>                
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.3.1</version>
            <executions>
              <execution>
                <id>scaladoc</id>
                <phase>package</phase>
                <goals>
                  <goal>jar</goal>
                </goals>
                <configuration>
                  <classesDirectory>${project.build.directory}/site/scaladocs</classesDirectory>
                  <classifier>scaladoc</classifier>
                </configuration>                
              </execution>
            </executions>
          </plugin>
          
        </plugins> 
      </build>
    </profile>

    <profile>
      <id>undercover</id>
        <repositories>
          <repository>
            <id>zact</id>
            <url>http://zact.googlecode.com/svn/maven/repository</url>
          </repository>
        </repositories>
        <pluginRepositories>
          <pluginRepository>
            <id>zact</id>
            <url>http://zact.googlecode.com/svn/maven/repository</url>
          </pluginRepository>
        </pluginRepositories>
        <build>
          <plugins>
            <plugin>
              <groupId>undercover</groupId>
              <artifactId>undercover-maven-plugin</artifactId>
              <version>0.8.4</version>
              <executions>
                <execution>
                  <phase>test</phase>
                  <goals>
                    <goal>undercover</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </build>      
    </profile>
    
    <!-- If you enable this profile, the console message will have a timestamp -->
    <profile>
      <id>consolets</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.fusesource.mvnplugins</groupId>
            <artifactId>maven-consolets-plugin</artifactId>
            <version>1.30</version>
            <configuration>
              <enabled>true</enabled>
            </configuration>
            <executions>
              <execution>
                <phase>validate</phase>
                <goals>
                  <goal>install</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      <pluginRepositories>
        <pluginRepository>
          <id>com.fusesource.m2</id>
          <url>http://repo.fusesource.com/nexus/content/groups/public/</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>false</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
    
  </profiles>
    
  <repositories>

    <repository>
      <id>apache.snapshots</id>
      <url>https://repository.apache.org/content/repositories/snapshots</url>
      <snapshots><enabled>true</enabled></snapshots>
      <releases><enabled>false</enabled></releases>
    </repository>

    <repository>
      <id>fusesource-snapshots</id>
      <url>http://repo.fusesource.com/nexus/content/groups/public-snapshots</url>
      <releases><enabled>false</enabled></releases>
      <snapshots><enabled>true</enabled></snapshots>
    </repository>
    
    <!-- for the bdb dependency-->
    <repository>
      <id>oracleReleases</id>
      <url>http://download.oracle.com/maven</url>
      <layout>default</layout>
    </repository>

    <!-- for net.sf.josql dependency not yet in central -->
    <repository>
      <id>com.fusesource.m2</id>
      <url>http://repo.fusesource.com/nexus/content/groups/public/</url>
      <releases><enabled>true</enabled></releases>
      <snapshots><enabled>false</enabled></snapshots>
    </repository>

  </repositories>

</project>
