HBASE-28381 Support building hbase-operator-tools with JDK17 (#141)

Signed-off-by: Rajeshbabu Chintaguntla <rajeshbabu@apache.org>
Signed-off-by: Peter Somogyi <psomogyi@apache.org>
diff --git a/pom.xml b/pom.xml
index bff91ba..3e05590 100644
--- a/pom.xml
+++ b/pom.xml
@@ -123,6 +123,7 @@
     <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm</maven.build.timestamp.format>
     <buildDate>${maven.build.timestamp}</buildDate>
     <compileSource>1.8</compileSource>
+    <releaseTarget>8</releaseTarget>
     <java.min.version>${compileSource}</java.min.version>
     <maven.min.version>3.3.3</maven.min.version>
     <spotless.version>2.27.2</spotless.version>
@@ -141,6 +142,13 @@
     <!--code coverage properties-->
     <clover-maven-plugin.version>4.4.1</clover-maven-plugin.version>
     <sonar-maven-plugin.version>3.9.1.2184</sonar-maven-plugin.version>
+
+    <jacocoArgLine/>
+    <hbase-surefire.argLine>-Djava.security.manager=allow</hbase-surefire.argLine>
+    <!-- Currently, all of these options are known to be required by the test cases -->
+    <hbase-surefire.jdk11.flags>--add-opens java.base/java.lang=ALL-UNNAMED
+      --add-opens java.base/java.lang.reflect=ALL-UNNAMED</hbase-surefire.jdk11.flags>
+    <hbase-surefire.jdk17.flags/>
   </properties>
   <dependencyManagement>
     <dependencies>
@@ -603,6 +611,41 @@
     </profile>
 
     <profile>
+      <id>build-with-jdk8</id>
+      <activation>
+        <jdk>1.8</jdk>
+      </activation>
+      <properties>
+        <maven.compiler.source>${compileSource}</maven.compiler.source>
+        <maven.compiler.target>${compileSource}</maven.compiler.target>
+      </properties>
+    </profile>
+    <profile>
+      <id>build-with-jdk11</id>
+      <activation>
+        <jdk>[11,)</jdk>
+      </activation>
+      <properties>
+        <maven.compiler.release>${releaseTarget}</maven.compiler.release>
+        <argLine>${hbase-surefire.jdk11.flags}
+          ${hbase-surefire.argLine}
+          @{jacocoArgLine}</argLine>
+      </properties>
+    </profile>
+    <profile>
+      <id>build-with-jdk17</id>
+      <activation>
+        <jdk>[17,)</jdk>
+      </activation>
+      <properties>
+        <argLine>${hbase-surefire.jdk11.flags}
+          ${hbase-surefire.jdk17.flags}
+          ${hbase-surefire.argLine}
+          @{jacocoArgLine}</argLine>
+      </properties>
+    </profile>
+
+    <profile>
       <id>clover</id>
       <activation>
         <activeByDefault>false</activeByDefault>