<?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>0.5.0-beta</version>
  </parent>
  <artifactId>hadoop-ozone</artifactId>
  <version>0.5.0-beta</version>
  <description>Apache Hadoop Ozone Project</description>
  <name>Apache Hadoop Ozone</name>
  <packaging>pom</packaging>

  <properties>
    <docker.image>apache/ozone:${project.version}</docker.image>
  </properties>
  <modules>
    <module>common</module>
    <module>client</module>
    <module>ozone-manager</module>
    <module>tools</module>
    <module>integration-test</module>
    <module>ozonefs</module>
    <module>datanode</module>
    <module>s3gateway</module>
    <module>dist</module>
    <module>upgrade</module>
    <module>csi</module>
    <module>fault-injection-test</module>
    <module>insight</module>
  </modules>

  <repositories>
    <repository>
      <id>apache.snapshots.https</id>
      <url>https://repository.apache.org/content/repositories/snapshots</url>
    </repository>
  </repositories>

  <dependencyManagement>

    <dependencies>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-ozone-common</artifactId>
        <version>${ozone.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-ozone-client</artifactId>
        <version>${ozone.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-ozone-ozone-manager</artifactId>
        <version>${ozone.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-ozone-s3gateway</artifactId>
        <version>${ozone.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-ozone-csi</artifactId>
        <version>${ozone.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-ozone-datanode</artifactId>
        <version>${ozone.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-ozone-tools</artifactId>
        <version>${ozone.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-ozone-filesystem</artifactId>
        <version>${ozone.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-ozone-filesystem-lib-current</artifactId>
        <version>${ozone.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-ozone-filesystem-lib-legacy</artifactId>
        <version>${ozone.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-ozone-integration-test</artifactId>
        <version>${ozone.version}</version>
        <type>test-jar</type>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-ozone-ozone-manager</artifactId>
        <version>${ozone.version}</version>
        <type>test-jar</type>
      </dependency>
      <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-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-docs</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-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-ozone-insight</artifactId>
        <version>${hdds.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-ozone-recon</artifactId>
        <version>${ozone.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-ozone-upgrade</artifactId>
        <version>${ozone.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-hdds-container-service</artifactId>
        <version>${hdds.version}</version>
        <type>test-jar</type>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-hdds-server-scm</artifactId>
        <type>test-jar</type>
        <version>${hdds.version}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.3.0.1</version>
      </dependency>
      <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>2.3.0.1</version>
      </dependency>
      <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
      </dependency>
      <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>${bouncycastle.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
  </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>**/*.json</exclude>
            <exclude>**/hs_err*.log</exclude>
            <exclude>**/target/**</exclude>
            <exclude>.gitattributes</exclude>
            <exclude>.idea/**</exclude>
            <exclude>dev-support/*tests</exclude>
            <exclude>dev-support/checkstyle*</exclude>
            <exclude>dev-support/jdiff/**</exclude>
            <exclude>src/contrib/**</exclude>
            <exclude>src/main/webapps/datanode/robots.txt</exclude>
            <exclude>src/main/webapps/hdfs/robots.txt</exclude>
            <exclude>src/main/webapps/journal/robots.txt</exclude>
            <exclude>src/main/webapps/router/robots.txt</exclude>
            <exclude>src/main/webapps/secondary/robots.txt</exclude>
            <exclude>src/site/resources/images/*</exclude>
            <exclude>src/test/all-tests</exclude>
            <exclude>src/test/empty-file</exclude>
            <exclude>src/test/resources/*.log</exclude>
            <exclude>src/test/resources/*.tgz</exclude>
            <exclude>src/test/resources/data*</exclude>
            <exclude>src/test/resources/empty-file</exclude>
            <exclude>src/test/resources/ssl/*</exclude>
            <exclude>src/main/compose/ozonesecure/docker-image/runner/build/apache-rat-0.12/README-CLI.txt</exclude>
            <exclude>src/main/compose/ozonesecure/docker-image/runner/build/apache-rat-0.12/README-ANT.txt</exclude>
            <exclude>webapps/static/angular-1.6.4.min.js</exclude>
            <exclude>webapps/static/angular-nvd3-1.0.9.min.js</exclude>
            <exclude>webapps/static/angular-route-1.6.4.min.js</exclude>
            <exclude>webapps/static/bootstrap-3.4.1/**</exclude>
            <exclude>webapps/static/d3-3.5.17.min.js</exclude>
            <exclude>webapps/static/jquery-3.4.1.min.js</exclude>
            <exclude>webapps/static/jquery.dataTables.min.js</exclude>
            <exclude>webapps/static/nvd3-1.8.5.min.css.map</exclude>
            <exclude>webapps/static/nvd3-1.8.5.min.css</exclude>
            <exclude>webapps/static/nvd3-1.8.5.min.js.map</exclude>
            <exclude>webapps/static/nvd3-1.8.5.min.js</exclude>
            <exclude>**/dependency-reduced-pom.xml</exclude>
            <exclude>**/node_modules/**</exclude>
            <exclude>**/yarn.lock</exclude>
            <exclude>**/ozone-recon-web/build/**</exclude>
            <exclude>src/main/license/**</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>add-classpath-descriptor</id>
            <phase>package</phase>
            <goals>
              <goal>build-classpath</goal>
            </goals>
            <configuration>
              <outputFile>${project.build.directory}/classpath</outputFile>
              <prefix>$HDDS_LIB_JARS_DIR</prefix>
              <outputFilterFile>true</outputFilterFile>
              <includeScope>runtime</includeScope>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-classpath-artifact</id>
            <phase>package</phase>
            <goals>
              <goal>attach-artifact</goal>
            </goals>
            <configuration>
              <artifacts>
                <artifact>
                  <file>${project.build.directory}/classpath</file>
                  <type>cp</type>
                  <classifier>classpath</classifier>
                </artifact>
              </artifacts>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>**/node_modules/*</exclude>
            <exclude>**/ozone-recon-web/**</exclude>
          </excludes>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>docker-build</id>
      <properties>
        <docker.image>${user.name}/ozone:${project.version}</docker.image>
      </properties>
    </profile>
    <profile>
      <id>build-with-ozonefs</id>
      <activation>
        <property>
          <name>!skipShade</name>
        </property>
      </activation>
      <modules>
        <module>ozonefs-lib-current</module>
        <module>ozonefs-lib-legacy</module>
      </modules>
    </profile>
    <profile>
      <id>build-with-recon</id>
      <activation>
        <property>
          <name>!skipRecon</name>
        </property>
      </activation>
      <modules>
        <module>recon</module>
        <module>recon-codegen</module>
      </modules>
    </profile>
    <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>
  </profiles>
</project>
