<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>net.qihoo</groupId>
  <artifactId>hbox-parent</artifactId>
  <version>1.8.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>HBox Parent Pom</name>
  <description>Parent pom and modules registration.</description>

  <modules>
    <module>common</module>

    <!-- core yarn application -->
    <module>core</module>

    <!-- application master web service -->
    <module>web</module>

    <!-- history server web service -->
    <module>history-server</module>
  </modules>

  <properties>
    <maven.min-version>3.6.3</maven.min-version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.build.outputTimestamp>2024-06-28T06:56:34Z</project.build.outputTimestamp>

    <!-- Supporting Tech Matrix
    ~ Build-time JDK: 8+, select by developer or ci environment, prefer LTS JDKs
    ~ Target JVM: 8+, select via property project.target.release, prefer LTS releases
    -->
    <project.target.release>8</project.target.release>

    <hadoop.version>[3.2.4]</hadoop.version>
    <sortpom.version>4.0.0</sortpom.version>
    <sort.verifyFail>warn</sort.verifyFail>

    <project.effective.version>${project.version}</project.effective.version>

    <!-- release, only deploy the tgz archive -->
    <autoVersionSubmodules>true</autoVersionSubmodules>
    <tagNameFormat>v@{project.version}</tagNameFormat>
    <projectVersionPolicyId>SemVerVersionPolicy</projectVersionPolicyId>
    <preparationGoals>-pl . sortpom:sort resources:copy-resources@update-ver-for-tests scm:add -Dincludes=tests/ver.sh</preparationGoals>
    <completionGoals>-pl . sortpom:sort resources:copy-resources@update-ver-for-tests scm:add -Dincludes=tests/ver.sh</completionGoals>
    <checkModificationExcludeList>${project.basedir}/tests/ver.sh</checkModificationExcludeList>
    <maven.deploy.skip>true</maven.deploy.skip>
    <maven.deploy.file.skip>snapshots</maven.deploy.file.skip>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>net.qihoo</groupId>
        <artifactId>hbox-common</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>net.qihoo</groupId>
        <artifactId>hbox-web</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>net.qihoo</groupId>
        <artifactId>hbox-history-server</artifactId>
        <version>${project.version}</version>
      </dependency>
      <!-- hadoop -->
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-yarn-api</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-yarn-common</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-mapreduce-client-core</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-mapreduce-client-app</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-mapreduce-client-common</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-mapreduce-client-hs</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-yarn-client</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.7</version>
        <!-- sync version with hadoop -->
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-text</artifactId>
        <version>1.4</version>
        <!-- sync version with hadoop -->
      </dependency>
      <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>[20231013,)</version>
      </dependency>
      <!-- amazon s3 -->
      <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-s3</artifactId>
        <version>[1.12.261]</version>
      </dependency>
      <!-- junit -->
      <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>5.10.2</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>4.0.0-M15</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.3.1</version>
          <configuration>
            <propertiesEncoding>${project.build.sourceEncoding}</propertiesEncoding>
          </configuration>
          <executions>
            <execution>
              <id>update-ver-for-tests</id>
              <goals>
                <goal>copy-resources</goal>
              </goals>
              <phase>ONLY-FOR-CLI</phase>
              <inherited>false</inherited>
              <configuration>
                <outputDirectory>${project.basedir}/tests</outputDirectory>
                <resources>
                  <resource>
                    <directory>src/test/resources</directory>
                    <includes>
                      <include>ver.sh</include>
                    </includes>
                    <filtering>true</filtering>
                  </resource>
                </resources>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.1.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.1.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.4.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-artifact-plugin</artifactId>
          <version>3.5.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.13.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.6.0</version>
          <configuration>
            <createDependencyReducedPom>false</createDependencyReducedPom>
            <filters combine.children="append">
              <filter>
                <artifact>*:*</artifact>
                <excludes>
                  <!-- exclude MANIFEST.MF, the one from original jar will be processed by ManifestResourceTransformer -->
                  <exclude>META-INF/MANIFEST.MF</exclude>

                  <!-- avoid errors when verifing digital signature -->
                  <exclude>META-INF/*.SF</exclude>
                  <exclude>META-INF/*.DSA</exclude>
                  <exclude>META-INF/*.RSA</exclude>
                  <exclude>META-INF/*.EC</exclude>
                  <exclude>META-INF/*.sf</exclude>
                  <exclude>META-INF/*.dsa</exclude>
                  <exclude>META-INF/*.rsa</exclude>
                  <exclude>META-INF/*.ec</exclude>

                  <!-- exclude common license and notice files -->
                  <exclude>NOTICE</exclude>
                  <exclude>LICENSE</exclude>
                  <exclude>META-INF/LICENSE.txt</exclude>
                  <exclude>META-INF/license.txt</exclude>
                  <exclude>about_files/LICENSE.txt</exclude>
                  <exclude>META-INF/ASL2.0</exclude>
                  <exclude>META-INF/NOTICE.txt</exclude>
                  <exclude>META-INF/notice.txt</exclude>
                  <exclude>about.html</exclude>

                  <!-- exclude some eclipse files -->
                  <exclude>META-INF/eclipse.inf</exclude>
                  <exclude>plugin.properties</exclude>

                  <exclude>META-INF/DEPENDENCIES</exclude>
                </excludes>
              </filter>
            </filters>
            <transformers combine.children="append">
              <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"></transformer>
              <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer"></transformer>
              <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
                <addHeader>false</addHeader>
              </transformer>
              <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"></transformer>
            </transformers>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.5.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-release-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-scm-plugin</artifactId>
          <version>2.1.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>

        <plugin>
          <groupId>pl.project13.maven</groupId>
          <artifactId>git-commit-id-plugin</artifactId>
          <version>4.9.10</version>
        </plugin>

        <plugin>
          <artifactId>maven-wrapper-plugin</artifactId>
          <version>3.3.2</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>3.6.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>versions-maven-plugin</artifactId>
          <version>2.16.2</version>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
        <inherited>false</inherited>
        <executions>
          <execution>
            <id>enforce-building-environment</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>[${maven.min-version},)</version>
                </requireMavenVersion>
                <requireJavaVersion>
                  <!-- build time requires JDK 8+ -->
                  <version>[1.8,)</version>
                </requireJavaVersion>
                <requireProperty>
                  <property>project.target.release</property>
                  <regex>^([89]|[1-9][0-9]+)$</regex>
                  <regexMessage>project.target.release need at least 8, but found "${project.target.release}"</regexMessage>
                </requireProperty>
                <requireProperty>
                  <level>WARN</level>
                  <property>project.target.release</property>
                  <regex>^(8|11|17|23|29|35|41|47)$</regex>
                  <regexMessage>SHOULD NOT USE NON-LTS TARGET JVM (${project.target.release}) IN PRODUCTION ENVIRONMENTS!</regexMessage>
                </requireProperty>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>com.github.ekryd.sortpom</groupId>
        <artifactId>sortpom-maven-plugin</artifactId>
        <version>${sortpom.version}</version>
        <configuration>
          <predefinedSortOrder>custom_1</predefinedSortOrder>
          <lineSeparator>\n</lineSeparator>
          <encoding>${project.build.sourceEncoding}</encoding>
          <keepBlankLines>true</keepBlankLines>
          <!-- Now we only warning the pom style; to sort, add cmd arg: '-Dsort.verifyFail=sort' -->
          <verifyFail>${sort.verifyFail}</verifyFail>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>verify</goal>
            </goals>
            <phase>verify</phase>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>parse-version</id>
            <goals>
              <goal>parse-version</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <url>https://github.com/Qihoo360/hbox</url>
  <inceptionYear>2018</inceptionYear>
  <organization>
    <name>Qihoo 360 Technology Co. Ltd. (Qihoo 360)</name>
    <url>https://360.com/</url>
  </organization>

  <licenses>
    <license>
      <name>Apache-2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <scm>
    <connection>scm:git:https://github.com/Qihoo360/hbox.git</connection>
    <developerConnection>scm:git:git@github.com:Qihoo360/hbox.git</developerConnection>
    <url>https://github.com/Qihoo360/hbox/tree/master</url>
    <tag>HEAD</tag>
  </scm>

  <issueManagement>
    <system>Github Issue</system>
    <url>https://github.com/Qihoo360/hbox/issues</url>
  </issueManagement>

  <profiles>
    <profile>
      <id>before-jdk9-profile</id>
      <activation>
        <jdk>(,1.9)</jdk>
      </activation>
      <properties>
        <!-- javac options for maven-compile-plugin -->
        <maven.compiler.source>${project.target.release}</maven.compiler.source>
        <maven.compiler.target>${project.target.release}</maven.compiler.target>
      </properties>
    </profile>
    <profile>
      <id>since-jdk9-profile</id>
      <activation>
        <jdk>[9,)</jdk>
      </activation>
      <properties>
        <!-- javac options for maven-compile-plugin -->
        <maven.compiler.release>${project.target.release}</maven.compiler.release>
      </properties>
    </profile>
    <profile>
      <id>before-jdk11-profile</id>
      <activation>
        <jdk>(,11)</jdk>
      </activation>
      <properties>
        <maven.version.rules>file://${project.basedir}/plugin-version-ruleset-before-jdk11.xml</maven.version.rules>
        <!-- 3.1.0+ dropped support for jdk 8 -->
        <sortpom.version>3.0.1</sortpom.version>
      </properties>
    </profile>
    <profile>
      <id>with-dot-git-profile</id>
      <activation>
        <file>
          <exists>${maven.multiModuleProjectDirectory}/.git</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>pl.project13.maven</groupId>
            <artifactId>git-commit-id-plugin</artifactId>
            <dependencies>
              <!-- update jgit to avoid the bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=579445 -->
              <dependency>
                <groupId>org.eclipse.jgit</groupId>
                <artifactId>org.eclipse.jgit</artifactId>
                <version>5.13.3.202401111512-r</version>
              </dependency>
              <dependency>
                <groupId>org.eclipse.jgit</groupId>
                <artifactId>org.eclipse.jgit.ssh.jsch</artifactId>
                <version>5.13.3.202401111512-r</version>
              </dependency>
            </dependencies>
            <executions>
              <execution>
                <id>generate-git-commit-id</id>
                <goals>
                  <goal>revision</goal>
                </goals>
                <phase>validate</phase>
                <configuration>
                  <offline>true</offline>
                  <skipPoms>false</skipPoms>
                  <runOnlyOnce>true</runOnlyOnce>
                  <injectAllReactorProjects>true</injectAllReactorProjects>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>bump-minor-version</id>
      <properties>
        <project.effective.version>${parsedVersion.majorVersion}.${parsedVersion.nextMinorVersion}.0${parsedVersion.qualifier?}</project.effective.version>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>bumping-minor-version</id>
                <goals>
                  <goal>set</goal>
                </goals>
                <phase>validate</phase>
                <inherited>false</inherited>
                <configuration>
                  <newVersion>${project.effective.version}</newVersion>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
              <execution>
                <id>sync-ver-for-tests</id>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <phase>validate</phase>
                <inherited>false</inherited>
                <configuration>
                  <outputDirectory>${project.basedir}/tests</outputDirectory>
                  <resources>
                    <resource>
                      <directory>src/test/resources</directory>
                      <includes>
                        <include>ver.sh</include>
                      </includes>
                      <filtering>true</filtering>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>bump-major-version</id>
      <properties>
        <project.effective.version>${parsedVersion.nextMajorVersion}.0.0${parsedVersion.qualifier?}</project.effective.version>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>bumping-major-version</id>
                <goals>
                  <goal>set</goal>
                </goals>
                <phase>validate</phase>
                <inherited>false</inherited>
                <configuration>
                  <newVersion>${project.effective.version}</newVersion>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
              <execution>
                <id>sync-ver-for-tests</id>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <phase>validate</phase>
                <inherited>false</inherited>
                <configuration>
                  <outputDirectory>${project.basedir}/tests</outputDirectory>
                  <resources>
                    <resource>
                      <directory>src/test/resources</directory>
                      <includes>
                        <include>ver.sh</include>
                      </includes>
                      <filtering>true</filtering>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>