<?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.hadoop</groupId>
    <artifactId>hadoop-main-ozone</artifactId>
    <version>1.1.0-SNAPSHOT</version>
  </parent>

  <artifactId>hadoop-hdds</artifactId>
  <version>1.1.0-SNAPSHOT</version>
  <description>Apache Hadoop Distributed Data Store Project</description>
  <name>Apache Hadoop HDDS</name>
  <packaging>pom</packaging>

  <modules>
    <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>
  </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.hadoop</groupId>
        <artifactId>hadoop-hdds-common</artifactId>
        <version>${hdds.version}</version>
      </dependency>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-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>
