<?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.
-->
<!--
  @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
-->
<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>
  <parent>
    <groupId>org.apache.directory.project</groupId>
    <artifactId>project</artifactId>
    <version>34</version>
    <relativePath />
  </parent>

  <groupId>org.apache.directory.studio</groupId>
  <artifactId>org.apache.directory.studio.parent</artifactId>
  <version>2.0.0.v20160628-M11</version>
  <name>Apache Directory Studio Parent</name>
  <description>Apache Directory Studio is a complete directory tooling platform intended to be used with any LDAP server however it is particularly designed for use with the Apache Directory Server.</description>
  <packaging>pom</packaging>

  <url>http://directory.apache.org/studio/</url>

  <issueManagement>
    <system>JIRA</system>
    <url>http://issues.apache.org/jira/browse/DIRSTUDIO</url>
  </issueManagement>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/directory/studio/trunk/</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/directory/studio/trunk/</developerConnection>
    <url>https://svn.apache.org/viewvc/directory/studio/trunk/</url>
  </scm>

  <distributionManagement>
    <site>
      <id>apache.directory.studio</id>
      <url>${distMgmtSiteUrl}</url>
    </site>
  </distributionManagement>

  <properties>
    <!--
      Set default of various URLs for deployment repositories/paths/....
      Can be overwritten in the settings.xml
    -->
    <studio.dist.url>${project.distributionManagement.repository.url}</studio.dist.url>
    <distMgmtSiteUrl>scpexe://people.apache.org/www/directory.apache.org/studio/gen-docs/${project.version}</distMgmtSiteUrl>

    <!-- Disable Java8 javadoc linter -->
    <additionalparam>-Xdoclint:none</additionalparam>

    <tycho.version>0.24.0</tycho.version>

    <!-- Set versions for dependencies -->
    <antlr.version>2.7.7</antlr.version>
    <antlr.bundleversion>2.7.7</antlr.bundleversion>
    <junit.version>4.11</junit.version>
    <log4j.log4j.version>1.2.17</log4j.log4j.version>
    <log4j.log4j.bundleversion>1.2.17</log4j.log4j.bundleversion>
    <net.sf.ehcache.version>2.8.5</net.sf.ehcache.version>
    <net.sf.ehcache.bundleversion>2.8.5</net.sf.ehcache.bundleversion>
    <org.apache.commons.codec.version>1.10</org.apache.commons.codec.version>
    <org.apache.commons.codec.bundleversion>1.10.0</org.apache.commons.codec.bundleversion>
    <org.apache.commons.collections.version>3.2.2</org.apache.commons.collections.version>
    <org.apache.commons.collections.bundleversion>3.2.2</org.apache.commons.collections.bundleversion>
    <org.apache.commons.lang.version>2.6</org.apache.commons.lang.version>
    <org.apache.commons.lang.bundleversion>2.6.0</org.apache.commons.lang.bundleversion>
    <org.apache.commons.pool.version>1.6</org.apache.commons.pool.version>
    <org.apache.commons.pool.bundleversion>1.6.0</org.apache.commons.pool.bundleversion>
    <org.apache.directory.api.version>1.0.0-RC1</org.apache.directory.api.version>
    <org.apache.directory.api.bundleversion>1.0.0.RC1</org.apache.directory.api.bundleversion>
    <org.apache.directory.server.version>2.0.0-M22</org.apache.directory.server.version>
    <org.apache.directory.server.bundleversion>2.0.0.M22</org.apache.directory.server.bundleversion>
    <org.apache.mina.version>2.0.13</org.apache.mina.version>
    <org.apache.mina.bundleversion>2.0.13</org.apache.mina.bundleversion>
    <org.apache.poi.version>3.9</org.apache.poi.version>
    <org.apache.poi.bundleversion>3.9.0</org.apache.poi.bundleversion>
    <org.apache.xmlgraphics.fop.version>1.0</org.apache.xmlgraphics.fop.version>
    <org.slf4j.version>1.7.10</org.slf4j.version>
    <org.slf4j.bundleversion>1.7.10</org.slf4j.bundleversion>
    <org.xpp3.version>1.1.4.c</org.xpp3.version>
    <org.xpp3.bundleversion>1.1.4.c</org.xpp3.bundleversion>
    <xerces.xercesimpl.version>2.11.0</xerces.xercesimpl.version>
    <xerces.xercesimpl.bundleversion>2.11.0</xerces.xercesimpl.bundleversion>

    <!-- Set versions for skins -->
    <skin.version>1.0.2</skin.version>

    <!-- The repositories -->
    <juno-repo.url>http://download.eclipse.org/releases/juno</juno-repo.url>
    <kepler-repo.url>http://download.eclipse.org/releases/kepler</kepler-repo.url>
    <luna-repo.url>http://download.eclipse.org/releases/luna</luna-repo.url>
  </properties>

  <modules>
    <module>eclipse-trgt-platform</module>
    <module>plugins</module>
    <module>helps</module>
    <module>features</module>
    <module>tests</module>
    <module>p2repositories</module>
    <module>product</module>
  </modules>

  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-maven-plugin</artifactId>
        <extensions>true</extensions>
      </plugin>

      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-compiler-plugin</artifactId>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-packaging-plugin</artifactId>
        <configuration>
          <format>'v'yyyyMMdd</format>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>target-platform-configuration</artifactId>
        <configuration>
          <target>
             <artifact>
                <groupId>org.apache.directory.studio</groupId>
                <artifactId>org.apache.directory.studio.eclipse-trgt-platform</artifactId>
                <version>${project.version}</version>
             </artifact>
          </target>

          <environments>
            <environment>
              <os>linux</os>
              <ws>gtk</ws>
              <arch>x86</arch>
            </environment>

            <environment>
              <os>linux</os>
              <ws>gtk</ws>
              <arch>x86_64</arch>
            </environment>

            <environment>
              <os>win32</os>
              <ws>win32</ws>
              <arch>x86</arch>
            </environment>

            <environment>
              <os>win32</os>
              <ws>win32</ws>
              <arch>x86_64</arch>
            </environment>

            <environment>
              <os>macosx</os>
              <ws>cocoa</ws>
              <arch>x86_64</arch>
            </environment>
          </environments>
        </configuration>
      </plugin>
    </plugins>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-maven-plugin</artifactId>
          <version>${tycho.version}</version>
        </plugin>

        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-compiler-plugin</artifactId>
          <version>${tycho.version}</version>
        </plugin>

        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-packaging-plugin</artifactId>
          <version>${tycho.version}</version>
        </plugin>

        <plugin>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>target-platform-configuration</artifactId>
          <version>${tycho.version}</version>
        </plugin>
        
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <dependencies>
            <dependency>
              <groupId>org.apache.ant</groupId>
              <artifactId>ant-apache-regexp</artifactId>
              <version>1.7.1</version>
              <scope>compile</scope>
            </dependency>

            <dependency>
              <groupId>xalan</groupId>
              <artifactId>xalan</artifactId>
              <version>2.7.0</version>
              <scope>compile</scope>
            </dependency>

            <dependency>
              <groupId>ant</groupId>
              <artifactId>optional</artifactId>
              <version>1.5.4</version>
              <scope>compile</scope>
            </dependency>

            <dependency>
              <groupId>org.apache.xmlgraphics</groupId>
              <artifactId>fop</artifactId>
              <version>${org.apache.xmlgraphics.fop.version}</version>
              <scope>compile</scope>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <configuration>
            <excludeSubProjects>false</excludeSubProjects>
            <excludes>
              <!-- MAVEN_DEFAULT_EXCLUDES -->
              <exclude>**/target/**/*</exclude>
              <exclude>**/cobertura.ser</exclude>
              <exclude>**/META-INF/DEPENDENCIES</exclude>
              <!-- ECLIPSE_DEFAULT_EXCLUDES -->
              <exclude>**/.classpath</exclude>
              <exclude>**/.project</exclude>
              <exclude>**/.settings/**/*</exclude>
              <!-- IDEA_DEFAULT_EXCLUDES -->
              <exclude>**/*.iml</exclude>
              <exclude>**/*.ipr</exclude>
              <exclude>**/*.iws</exclude>
              <!-- MANIFEST_MF_EXCLUDES -->
              <exclude>**/MANIFEST.MF</exclude>
              <!-- Missing license header in dependency reduced pom, see http://jira.codehaus.org/browse/MSHADE-48 -->
              <exclude>**/dependency-reduced-pom.xml</exclude>
              <!-- GITIGNORE_EXCLUDES -->
              <exclude>**/.gitignore</exclude>
              <!-- ABOUT_EXCLUDES -->
              <exclude>**/about.ini</exclude>
              <exclude>**/about_files/*</exclude>
              <!-- LOG_FILES_EXCLUDES -->
              <exclude>**/*.log</exclude>
              <exclude>**/*.vm</exclude>
              <!-- NSIS_EXCLUDES -->
              <exclude>**/src/main/resources/AdvUninstLog.nsh</exclude>
              <!-- IMAGES_EXCLUDES -->
              <exclude>**/studio.xpm</exclude>
              <exclude>**/*.bmp</exclude>
              <!-- OTHER_EXCLUDES -->
              <exclude>**/*.launch</exclude>
              <exclude>**/rfc*/rfc*.txt</exclude>
              <exclude>tools/**/*</exclude>
              <exclude>**/p2.index</exclude>
            </excludes>
          </configuration>
         </plugin>
      </plugins>
    </pluginManagement>
  </build>

</project>
