blob: 10c5b36669179d7b1e0b3874631fbb875b2730a2 [file]
<?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>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-main</artifactId>
<version>3.6.0-SNAPSHOT</version>
<description>Apache Hadoop Main</description>
<name>Apache Hadoop Main</name>
<packaging>pom</packaging>
<distributionManagement>
<repository>
<id>${distMgmtStagingId}</id>
<name>${distMgmtStagingName}</name>
<url>${distMgmtStagingUrl}</url>
</repository>
<snapshotRepository>
<id>${distMgmtSnapshotsId}</id>
<name>${distMgmtSnapshotsName}</name>
<url>${distMgmtSnapshotsUrl}</url>
</snapshotRepository>
<site>
<id>apache.website</id>
<url>scpexe://people.apache.org/www/hadoop.apache.org/docs/r${project.version}</url>
</site>
</distributionManagement>
<repositories>
<repository>
<id>${distMgmtSnapshotsId}</id>
<name>${distMgmtSnapshotsName}</name>
<url>${distMgmtSnapshotsUrl}</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
<repository>
<id>repository.jboss.org</id>
<url>https://repository.jboss.org/nexus/content/groups/public/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<licenses>
<license>
<name>Apache-2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<organization>
<name>Apache Software Foundation</name>
<url>https://www.apache.org</url>
</organization>
<properties>
<!-- required as child projects with different version can't use ${project.version} -->
<hadoop.version>3.6.0-SNAPSHOT</hadoop.version>
<!-- Skip JaCoCo instrumentation/reporting by default; enable with
-Djacoco.skip=false. jacoco.skip is the jacoco-maven-plugin's own skip
property; we only set its default here. Defined in hadoop-main (not
only in hadoop-project) so modules that inherit directly from
hadoop-main, such as hadoop-coverage, resolve it too. -->
<jacoco.skip>true</jacoco.skip>
<docker.image>apache/hadoop:${project.version}</docker.image>
<distMgmtSnapshotsId>apache.snapshots.https</distMgmtSnapshotsId>
<distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>
<distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>
<distMgmtStagingId>apache.staging.https</distMgmtStagingId>
<distMgmtStagingName>Apache Release Distribution Repository</distMgmtStagingName>
<distMgmtStagingUrl>https://repository.apache.org/service/local/staging/deploy/maven2</distMgmtStagingUrl>
<!-- platform encoding override -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- maven plugin versions -->
<maven-deploy-plugin.version>2.8.1</maven-deploy-plugin.version>
<maven-site-plugin.version>3.9.1</maven-site-plugin.version>
<maven-stylus-skin.version>1.5</maven-stylus-skin.version>
<maven-antrun-plugin.version>1.7</maven-antrun-plugin.version>
<maven-assembly-plugin.version>2.4</maven-assembly-plugin.version>
<maven-dependency-plugin.version>3.8.1</maven-dependency-plugin.version>
<maven-enforcer-plugin.version>3.5.0</maven-enforcer-plugin.version>
<restrict-imports.enforcer.version>2.0.0</restrict-imports.enforcer.version>
<maven-javadoc-plugin.version>3.8.0</maven-javadoc-plugin.version>
<maven-gpg-plugin.version>1.5</maven-gpg-plugin.version>
<maven-remote-resources-plugin.version>1.5</maven-remote-resources-plugin.version>
<maven-resources-plugin.version>3.0.1</maven-resources-plugin.version>
<apache-rat-plugin.version>0.12</apache-rat-plugin.version>
<wagon-ssh.version>2.4</wagon-ssh.version>
<jacoco-maven-plugin.version>0.8.15</jacoco-maven-plugin.version>
<maven-bundle-plugin.version>2.5.0</maven-bundle-plugin.version>
<lifecycle-mapping.version>1.0.0</lifecycle-mapping.version>
<maven-checkstyle-plugin.version>3.6.0</maven-checkstyle-plugin.version>
<checkstyle.version>11.1.0</checkstyle.version>
<dependency-check-maven.version>12.2.2</dependency-check-maven.version>
<spotbugs.version>4.9.7</spotbugs.version>
<spotbugs-maven-plugin.version>4.9.7.0</spotbugs-maven-plugin.version>
<jsonschema2pojo-maven-plugin.version>1.1.1</jsonschema2pojo-maven-plugin.version>
<maven-compiler-plugin.version>3.10.1</maven-compiler-plugin.version>
<cyclonedx.version>2.9.1</cyclonedx.version>
<docker-maven-plugin.version>0.29.0</docker-maven-plugin.version>
<shell-executable>bash</shell-executable>
<leveldbjni.group>org.fusesource.leveldbjni</leveldbjni.group>
<!--
Surefire option to not fail a build if -Dtest=NAME doesn't find a
test called NAME. This is needed when running integration tests through
failsafe, as setting -Dtest=none is the way to stop surefire
running all unit tests before the it.test option is picked up.
-->
<surefire.failIfNoSpecifiedTests>false</surefire.failIfNoSpecifiedTests>
<!-- define the Java language version used by the compiler -->
<javac.version>17</javac.version>
<!-- The java version enforced by the maven enforcer -->
<!-- more complex patterns can be used here, such as
[${javac.version})
for an open-ended enforcement
-->
<enforced.java.version>[${javac.version},)</enforced.java.version>
<enforced.maven.version>[3.9.15,)</enforced.maven.version>
</properties>
<modules>
<module>hadoop-project</module>
<module>hadoop-project-dist</module>
<module>hadoop-assemblies</module>
<module>hadoop-maven-plugins</module>
<module>hadoop-common-project</module>
<module>hadoop-hdfs-project</module>
<module>hadoop-yarn-project</module>
<module>hadoop-mapreduce-project</module>
<module>hadoop-tools</module>
<module>hadoop-minicluster</module>
<module>hadoop-client-modules</module>
<module>hadoop-build-tools</module>
<module>hadoop-cloud-storage-project</module>
<module>hadoop-dist</module>
</modules>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven-dependency-plugin.version}</version>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${docker-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${maven-enforcer-plugin.version}</version>
<configuration>
<rules>
<requireMavenVersion>
<version>${enforced.maven.version}</version>
</requireMavenVersion>
<requireJavaVersion>
<version>${enforced.java.version}</version>
</requireJavaVersion>
</rules>
</configuration>
<dependencies>
<dependency>
<groupId>de.skuzzle.enforcer</groupId>
<artifactId>restrict-imports-enforcer-rule</artifactId>
<version>${restrict-imports.enforcer.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>banned-illegal-imports</id>
<phase>process-sources</phase>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use hadoop-thirdparty shaded instead of curator shaded</reason>
<bannedImports>
<bannedImport>org.apache.curator.shaded.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use hadoop-common provided Sets rather than Guava provided Sets</reason>
<bannedImports>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.collect.Sets</bannedImport>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.collect.Sets.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use hadoop-common provided Lists rather than Guava provided Lists</reason>
<bannedImports>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.collect.Lists</bannedImport>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.collect.Lists.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use hadoop-annotation provided VisibleForTesting rather than the one provided by Guava</reason>
<bannedImports>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.annotations.VisibleForTesting</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use alternatives to Guava common classes</reason>
<bannedImports>
<bannedImport>com.google.common.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use alternative to Guava provided BaseEncoding</reason>
<bannedImports>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.io.BaseEncoding</bannedImport>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.io.BaseEncoding.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use java.nio.charset.StandardCharsets rather than Guava provided Charsets</reason>
<bannedImports>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.base.Charsets</bannedImport>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.base.Charsets.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use alternative to Guava provided Optional</reason>
<bannedImports>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.base.Optional</bannedImport>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.base.Optional.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use alternative to Guava provided Function</reason>
<bannedImports>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.base.Function</bannedImport>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.base.Function.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use alternative to Guava provided Predicate</reason>
<bannedImports>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.base.Predicate</bannedImport>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.base.Predicate.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use alternative to Guava provided Supplier</reason>
<bannedImports>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.base.Supplier</bannedImport>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.base.Supplier.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use alternative to Guava provided ImmutableListMultimap</reason>
<bannedImports>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.collect.ImmutableListMultimap</bannedImport>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.collect.ImmutableListMultimap.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use hadoop-common provided Preconditions rather than Guava provided</reason>
<bannedImports>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.base.Preconditions</bannedImport>
<bannedImport>org.apache.hadoop.thirdparty.com.google.common.base.Preconditions.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use Fasterxml Jackson 2 dependency in place of org.codehaus Jackson 1</reason>
<bannedImports>
<bannedImport>org.codehaus.jackson.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use HttpServlet APIs instead</reason>
<bannedImports>
<bannedImport>org.glassfish.grizzly</bannedImport>
<bannedImport>org.glassfish.grizzly.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use slf4j based Logger</reason>
<bannedImports>
<bannedImport>org.apache.commons.logging.**</bannedImport>
</bannedImports>
</restrictImports>
<restrictImports>
<includeTestCode>true</includeTestCode>
<reason>Use JUnit5</reason>
<bannedImports>
<bannedImport>org.junit.**</bannedImport>
</bannedImports>
<allowedImports>
<allowedImport>org.junit.jupiter.**</allowedImport>
<allowedImport>org.junit.platform.**</allowedImport>
</allowedImports>
</restrictImports>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven-assembly-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven-deploy-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<version>${apache-rat-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>${maven-antrun-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${maven-site-plugin.version}</version>
<dependencies>
<dependency><!-- add support for ssh/scp -->
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>${wagon-ssh.version}</version>
</dependency>
</dependencies>
</plugin>
<!--This plugin's configuration is used to store Eclipse m2e settings only.
It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>${lifecycle-mapping.version}</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<versionRange>[1.7,)</versionRange>
<goals>
<goal>run</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<versionRange>[2.2,)</versionRange>
<goals>
<goal>testResources</goal>
<goal>resources</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<versionRange>[1.5.3,)</versionRange>
<goals>
<goal>schema</goal>
<goal>protocol</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo.jspc</groupId>
<artifactId>jspc-maven-plugin</artifactId>
<versionRange>[2.0-alpha-3,)</versionRange>
<goals>
<goal>compile</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<versionRange>[2.4,)</versionRange>
<goals>
<goal>copy-dependencies</goal>
<goal>build-classpath</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<versionRange>[1.2,)</versionRange>
<goals>
<goal>exec</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<versionRange>[2.3.1,)</versionRange>
<goals>
<goal>test-jar</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>${maven-bundle-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${maven-checkstyle-plugin.version}</version>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-build-tools</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>${checkstyle.version}</version>
</dependency>
</dependencies>
<configuration>
<configLocation>checkstyle/checkstyle.xml</configLocation>
<suppressionsLocation>checkstyle/suppressions.xml</suppressionsLocation>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<failOnViolation>false</failOnViolation>
<outputFile>${project.build.directory}/test/checkstyle-errors.xml</outputFile>
</configuration>
</plugin>
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>${dependency-check-maven.version}</version>
<configuration>
<!-- often misidentied native binaries as .net native binaries then looks for .Net tooling to scan them -->
<assemblyAnalyzerEnabled>false</assemblyAnalyzerEnabled>
<!-- requires separate sonatype account and sometimes fails if not present -->
<ossindexAnalyzerEnabled>false</ossindexAnalyzerEnabled>
</configuration>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>${spotbugs-maven-plugin.version}</version>
<dependencies>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs</artifactId>
<version>${spotbugs.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.jsonschema2pojo</groupId>
<artifactId>jsonschema2pojo-maven-plugin</artifactId>
<version>${jsonschema2pojo-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<release>${javac.version}</release>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<id>clean</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>pre-clean</phase>
</execution>
<execution>
<id>default</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>validate</phase>
</execution>
<execution>
<id>site</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>pre-site</phase>
</execution>
<execution>
<id>enforce-property</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireProperty>
<property>hadoop.version</property>
<message>You must set a hadoop.version to be the same as ${project.version}</message>
<regex>${project.version}</regex>
<regexMessage>The hadoop.version property should be set and should be ${project.version}.</regexMessage>
</requireProperty>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<configuration>
<excludes>
<exclude>.gitattributes</exclude>
<exclude>.gitignore</exclude>
<exclude>.git/**</exclude>
<exclude>.github/pull_request_template.md</exclude>
<exclude>AGENTS.md</exclude>
<exclude>SECURITY.md</exclude>
<exclude>.idea/**</exclude>
<exclude>.mvn/*.config</exclude>
<exclude>**/build/**</exclude>
<exclude>**/dependency-reduced-pom.xml</exclude>
<exclude>**/patchprocess/**</exclude>
<exclude>**/*.js</exclude>
<exclude>licenses/**</exclude>
<exclude>licenses-binary/**</exclude>
<exclude>dev-support/docker/pkg-resolver/packages.json</exclude>
<exclude>dev-support/docker/pkg-resolver/platforms.json</exclude>
<exclude>dev-support/docker/vcpkg/vcpkg.json</exclude>
<exclude>hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/JSON.java</exclude>
<exclude>**/target/**</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
<executions>
<execution>
<id>attach-descriptor</id>
<goals>
<goal>attach-descriptor</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<inherited>true</inherited>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${maven-checkstyle-plugin.version}</version>
</plugin>
<plugin>
<!-- OWASP's dependency-check plugin will scan the third party
dependencies of this project for known CVEs (security
vulnerabilities against them). It will produce a report
in target/dependency-check-report.html. To invoke, run
'mvn dependency-check:aggregate'.
-->
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>${dependency-check-maven.version}</version>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.cyclonedx</groupId>
<artifactId>cyclonedx-maven-plugin</artifactId>
<version>${cyclonedx.version}</version>
</plugin>
</plugins>
</build>
<reporting>
<excludeDefaults>true</excludeDefaults>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
<inherited>false</inherited>
<reportSets>
<reportSet>
<id>aggregate</id>
<configuration>
<quiet>true</quiet>
<verbose>false</verbose>
<legacyMode>true</legacyMode>
<source>${maven.compile.source}</source>
<charset>${maven.compile.encoding}</charset>
<reportOutputDirectory>${project.build.directory}/site</reportOutputDirectory>
<destDir>hadoop-project/api</destDir>
<!-- Non-public APIs -->
<excludePackageNames>org.apache.hadoop.authentication*,org.apache.hadoop.mapreduce.v2.proto,org.apache.hadoop.yarn.proto,org.apache.hadoop.yarn.server*,org.apache.hadoop.yarn.webapp*</excludePackageNames>
<groups>
<group>
<title>Common</title>
<packages>org.apache.hadoop*</packages>
</group>
<group>
<title>HDFS</title>
<packages>org.apache.hadoop.hdfs*</packages>
</group>
<group>
<title>MapReduce</title>
<packages>org.apache.hadoop.mapred*</packages>
</group>
<group>
<title>YARN</title>
<packages>org.apache.hadoop.yarn*</packages>
</group>
</groups>
<doclet>org.apache.hadoop.classification.tools.IncludePublicAnnotationsStandardDoclet</doclet>
<docletArtifacts>
<docletArtifact>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-annotations</artifactId>
<version>${project.version}</version>
</docletArtifact>
</docletArtifacts>
<additionalJOptions>
<!-- To fix doclet runtime error -->
<additionalJOption>-J--add-exports=jdk.javadoc/jdk.javadoc.internal.tool=ALL-UNNAMED</additionalJOption>
</additionalJOptions>
<additionalOptions>
<!-- To fix doclet compile error -->
<additionalOption>--add-exports</additionalOption>
<additionalOption>jdk.javadoc/jdk.javadoc.internal.tool=ALL-UNNAMED</additionalOption>
</additionalOptions>
<!-- switch on dependency-driven aggregation -->
<includeDependencySources>false</includeDependencySources>
<dependencySourceIncludes>
<!-- include ONLY dependencies I control -->
<dependencySourceInclude>org.apache.hadoop:hadoop-annotations</dependencySourceInclude>
</dependencySourceIncludes>
<additionalDependencies>
<additionalDependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>${project.version}</version>
<classifier>tests</classifier>
</additionalDependency>
</additionalDependencies>
</configuration>
<reports>
<report>aggregate</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven-dependency-plugin.version}</version>
<reportSets>
<reportSet>
<reports>
<report>analyze-report</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
<profiles>
<!-- The coverage aggregate module joins the reactor only when coverage is
explicitly requested (-Djacoco.skip=false). Keeping it out of the
unconditional <modules> means normal install/site/deploy/package builds
neither resolve its (reactor-wide) dependency list nor run its guard,
so the default build is unaffected and coverage stays opt-in. The
documented coverage command already passes -Djacoco.skip=false,
so it still builds as a full reactor that includes hadoop-coverage. -->
<profile>
<id>coverage</id>
<activation>
<property>
<name>jacoco.skip</name>
<value>false</value>
</property>
</activation>
<modules>
<module>hadoop-coverage</module>
</modules>
</profile>
<profile>
<id>src</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<id>src-dist</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<attach>false</attach>
<finalName>hadoop-${project.version}-src</finalName>
<outputDirectory>hadoop-dist/target</outputDirectory>
<!-- Not using descriptorRef and hadoop-assembly dependency -->
<!-- to avoid making hadoop-main to depend on a module -->
<descriptors>
<descriptor>hadoop-assemblies/src/main/resources/assemblies/hadoop-src.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<id>src-dist-msg</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<echo/>
<echo>Hadoop source tar available at: ${basedir}/hadoop-dist/target/hadoop-${project.version}-src.tar.gz</echo>
<echo/>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>dist</id>
<build>
<plugins>
<plugin>
<groupId>org.cyclonedx</groupId>
<artifactId>cyclonedx-maven-plugin</artifactId>
<version>${cyclonedx.version}</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>makeBom</goal>
</goals>
</execution>
</executions>
<configuration>
<outputFormat>xml</outputFormat>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>sign</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>aarch64</id>
<properties>
<leveldbjni.group>org.openlabtesting.leveldbjni</leveldbjni.group>
</properties>
<activation>
<os>
<family>linux</family>
<arch>aarch64</arch>
</os>
</activation>
</profile>
<profile>
<id>docker-build</id>
<properties>
<docker.image>${user.name}/hadoop:${project.version}</docker.image>
</properties>
</profile>
</profiles>
</project>