<?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.v20210213-M16</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.14</org.apache.commons.codec.version>
    <org.apache.commons.codec.bundleversion>1.14.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.9</org.apache.commons.lang3.version>
    <org.apache.commons.lang3.bundleversion>3.9</org.apache.commons.lang3.bundleversion>
    <org.apache.commons.pool.version>2.8.0</org.apache.commons.pool.version>
    <org.apache.commons.pool.bundleversion>2.8.0</org.apache.commons.pool.bundleversion>
    <org.apache.directory.api.version>2.0.1</org.apache.directory.api.version>
    <org.apache.directory.api.bundleversion>2.0.1</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>
