<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed 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. See accompanying LICENSE file.
-->
<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
https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache.ozone</groupId>
    <artifactId>ozone-main</artifactId>
    <version>1.3.0-SNAPSHOT</version>
  </parent>

  <artifactId>hdds</artifactId>
  <version>1.3.0-SNAPSHOT</version>
  <description>Apache Ozone Distributed Data Store Project</description>
  <name>Apache Ozone HDDS</name>
  <packaging>pom</packaging>

  <modules>
    <module>annotations</module>
    <module>hadoop-dependency-client</module>
    <module>hadoop-dependency-test</module>
    <module>hadoop-dependency-server</module>
    <module>interface-client</module>
    <module>interface-admin</module>
    <module>interface-server</module>
    <module>client</module>
    <module>common</module>
    <module>framework</module>
    <module>container-service</module>
    <module>server-scm</module>
    <module>tools</module>
    <module>docs</module>
    <module>config</module>
    <module>test-utils</module>
    <module>erasurecode</module>
  </modules>

  <repositories>
    <repository>
      <id>apache.snapshots.https</id>
      <url>https://repository.apache.org/content/repositories/snapshots</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>apache.snapshots.https</id>
      <url>https://repository.apache.org/content/repositories/snapshots</url>
    </pluginRepository>
  </pluginRepositories>
  <dependencyManagement>
    <dependencies>


      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-common</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-hadoop-dependency-client</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-hadoop-dependency-server</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-hadoop-dependency-test</artifactId>
        <version>${hdds.version}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-interface-server</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-interface-client</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-interface-admin</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-erasurecode</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-client</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-tools</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-server-framework</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-server-scm</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-container-service</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-docs</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-config</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-annotation-processing</artifactId>
        <version>${hdds.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-test-utils</artifactId>
        <version>${hdds.version}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-common</artifactId>
        <version>${hdds.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-container-service</artifactId>
        <version>${hdds.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.ozone</groupId>
        <artifactId>hdds-server-scm</artifactId>
        <type>test-jar</type>
        <version>${hdds.version}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.ratis</groupId>
        <artifactId>ratis-proto-shaded</artifactId>
        <version>${ratis.version}</version>
      </dependency>
      <dependency>
        <artifactId>ratis-common</artifactId>
        <groupId>org.apache.ratis</groupId>
        <version>${ratis.version}</version>
      </dependency>
      <dependency>
        <artifactId>ratis-client</artifactId>
        <groupId>org.apache.ratis</groupId>
        <version>${ratis.version}</version>
      </dependency>
      <dependency>
        <artifactId>ratis-server</artifactId>
        <groupId>org.apache.ratis</groupId>
        <version>${ratis.version}</version>
      </dependency>
      <dependency>
        <artifactId>ratis-netty</artifactId>
        <groupId>org.apache.ratis</groupId>
        <version>${ratis.version}</version>
      </dependency>
      <dependency>
        <artifactId>ratis-grpc</artifactId>
        <groupId>org.apache.ratis</groupId>
        <version>${ratis.version}</version>
      </dependency>

      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>${bouncycastle.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk15on</artifactId>
        <version>${bouncycastle.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>depcheck</id>
            <configuration>
              <rules>
                <DependencyConvergence>
                  <uniqueVersions>false</uniqueVersions>
                </DependencyConvergence>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>

        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>**/hs_err*.log</exclude>
            <exclude>**/.attach_*</exclude>
            <exclude>**/**.rej</exclude>
            <exclude>**/.factorypath</exclude>
            <exclude>public</exclude>
            <exclude>**/*.iml</exclude>
            <exclude>**/target/**</exclude>
            <exclude>**/output.xml</exclude>
            <exclude>**/log.html</exclude>
            <exclude>**/report.html</exclude>
            <exclude>.gitattributes</exclude>
            <exclude>.idea/**</exclude>
            <exclude>src/main/resources/webapps/static/angular-1.8.0.min.js</exclude>
            <exclude>src/main/resources/webapps/static/angular-nvd3-1.0.9.min.js</exclude>
            <exclude>src/main/resources/webapps/static/angular-route-1.8.0.min.js</exclude>
            <exclude>src/main/resources/webapps/static/d3-3.5.17.min.js</exclude>
            <exclude>src/main/resources/webapps/static/nvd3-1.8.5.min.css.map</exclude>
            <exclude>src/main/resources/webapps/static/nvd3-1.8.5.min.css</exclude>
            <exclude>src/main/resources/webapps/static/nvd3-1.8.5.min.js.map</exclude>
            <exclude>src/main/resources/webapps/static/nvd3-1.8.5.min.js</exclude>
            <exclude>src/main/resources/webapps/static/jquery-3.5.1.min.js</exclude>
            <exclude>src/main/resources/webapps/static/bootstrap-3.4.1/**</exclude>
            <exclude>src/test/resources/additionalfields.container</exclude>
            <exclude>src/test/resources/incorrect.checksum.container</exclude>
            <exclude>src/test/resources/incorrect.container</exclude>
            <exclude>src/test/resources/test.db.ini</exclude>
            <exclude>src/test/resources/123-dn-container.db/**</exclude>
            <exclude>src/test/resources/123.container</exclude>
            <exclude>src/main/resources/proto.lock</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>parallel-tests</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-maven-plugins</artifactId>
            <executions>
              <execution>
                <id>parallel-tests-createdir</id>
                <goals>
                  <goal>parallel-tests-createdir</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <forkCount>${testsThreadCount}</forkCount>
              <reuseForks>false</reuseForks>
              <!-- @argLine is filled by jacoco maven plugin. @{} means late evaluation -->
              <argLine>${maven-surefire-plugin.argLine}  @{argLine} -DminiClusterDedicatedDirs=true</argLine>
              <systemPropertyVariables>
                <testsThreadCount>${testsThreadCount}</testsThreadCount>
                <test.build.data>${test.build.data}/${surefire.forkNumber}</test.build.data>
                <test.build.dir>${test.build.dir}/${surefire.forkNumber}</test.build.dir>
                <hadoop.tmp.dir>${hadoop.tmp.dir}/${surefire.forkNumber}</hadoop.tmp.dir>

                <!-- This is intentionally the same directory for all JUnit -->
                <!-- forks, for use in the very rare situation that -->
                <!-- concurrent tests need to coordinate, such as using lock -->
                <!-- files. -->
                <test.build.shared.data>${test.build.data}</test.build.shared.data>

                <!-- Due to a Maven quirk, setting this to just -->
                <!-- surefire.forkNumber won't do the parameter substitution. -->
                <!-- Putting a prefix in front of it like "fork-" makes it -->
                <!-- work. -->
                <test.unique.fork.id>fork-${surefire.forkNumber}</test.unique.fork.id>
              </systemPropertyVariables>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>add-classpath-descriptor</id>
      <activation>
        <file>
          <exists>src/main/java</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>add-classpath-descriptor</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>build-classpath</goal>
                </goals>
                <configuration>
                  <outputFile>${project.build.outputDirectory}/${project.artifactId}.classpath</outputFile>
                  <prefix>$HDDS_LIB_JARS_DIR</prefix>
                  <outputFilterFile>true</outputFilterFile>
                  <includeScope>runtime</includeScope>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
