<?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>42</version>
    <relativePath />
  </parent>

  <groupId>org.apache.directory.studio</groupId>
  <artifactId>org.apache.directory.studio.parent</artifactId>
  <version>2.0.0-SNAPSHOT</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:git:https://gitbox.apache.org/repos/asf/directory-studio.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/directory-studio.git</developerConnection>
    <url>https://github.com/apache/directory-studio/tree/${project.scm.tag}</url>
    <tag>master</tag>
  </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 Java 8 Javadoc linter -->
    <doclint>none</doclint>

    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>

    <tycho.version>1.7.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>
    <com.github.ben-manes.caffeine.version>2.7.0</com.github.ben-manes.caffeine.version>
    <com.github.ben-manes.caffeine.bundleversion>2.7.0</com.github.ben-manes.caffeine.bundleversion>
    <org.apache.httpcomponents.httpclient.version>4.5.12</org.apache.httpcomponents.httpclient.version>
    <org.apache.httpcomponents.httpclient.bundleversion>4.5.12</org.apache.httpcomponents.httpclient.bundleversion>
    <org.apache.httpcomponents.httpcore.version>4.4.13</org.apache.httpcomponents.httpcore.version>
    <org.apache.httpcomponents.httpcore.bundleversion>4.4.13</org.apache.httpcomponents.httpcore.bundleversion>
    <org.apache.commons.codec.version>1.15</org.apache.commons.codec.version>
    <org.apache.commons.codec.bundleversion>1.15.0</org.apache.commons.codec.bundleversion>
    <org.apache.commons.collections4.version>4.4</org.apache.commons.collections4.version>
    <org.apache.commons.collections4.bundleversion>4.4.0</org.apache.commons.collections4.bundleversion>
    <org.apache.commons.io.version>2.6</org.apache.commons.io.version>
    <org.apache.commons.io.bundleversion>2.6.0</org.apache.commons.io.bundleversion>
    <org.apache.commons.lang3.version>3.11</org.apache.commons.lang3.version>
    <org.apache.commons.lang3.bundleversion>3.11</org.apache.commons.lang3.bundleversion>
    <org.apache.commons.pool.version>2.9.0</org.apache.commons.pool.version>
    <org.apache.commons.pool.bundleversion>2.9.0</org.apache.commons.pool.bundleversion>
    <org.apache.directory.api.version>2.0.2-SNAPSHOT</org.apache.directory.api.version>
    <org.apache.directory.api.bundleversion>2.0.2.SNAPSHOT</org.apache.directory.api.bundleversion>
    <org.apache.directory.server.version>2.0.0.AM26</org.apache.directory.server.version>
    <org.apache.mina.version>2.1.3</org.apache.mina.version>
    <org.apache.mina.bundleversion>2.1.3</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.25</org.slf4j.version>
    <org.slf4j.bundleversion>1.7.25</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>
  </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>
    <module>installers</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.8</source>
          <target>1.8</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_64</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-compiler-plugin</artifactId>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </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>
