This is an automated email from the ASF dual-hosted git repository.

stoty pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/master by this push:
     new 8bed517e3ad HBASE-29016 Refactor assembly creation to use only 
DependencySets and move cached classpath creation to a new module
8bed517e3ad is described below

commit 8bed517e3ade91cc39021f0161df994ccd5e6075
Author: Istvan Toth <[email protected]>
AuthorDate: Wed Dec 4 15:22:17 2024 +0100

    HBASE-29016 Refactor assembly creation to use only DependencySets and move 
cached classpath creation to a new module
---
 hbase-assembly/pom.xml                             | 125 ++++++-------------
 hbase-assembly/src/main/assembly/client.xml        | 111 ++++++++---------
 .../src/main/assembly/hadoop-three-compat.xml      | 136 +++++++--------------
 .../pom.xml                                        | 115 +----------------
 pom.xml                                            |   5 +
 5 files changed, 137 insertions(+), 355 deletions(-)

diff --git a/hbase-assembly/pom.xml b/hbase-assembly/pom.xml
index 90be45e9cbf..0e6c2181b45 100644
--- a/hbase-assembly/pom.xml
+++ b/hbase-assembly/pom.xml
@@ -47,24 +47,6 @@
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-shaded-mapreduce</artifactId>
     </dependency>
-    <!-- Intra-project dependencies -->
-    <!-- We don't really add this to assembly tarball, we retain it here just 
to dump it into
-    cached_classpath.txt ! See HBASE-28433 for more info. -->
-    <dependency>
-      <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase-it</artifactId>
-      <type>test-jar</type>
-    </dependency>
-    <!-- Hamcrest is required by hbase-it (via junit), but as long as we're 
grabbing the hbase-it test-jar,
-         maven dependency resolution won't pick it up for us. -->
-    <!-- We don't really add this to assembly tarball, we retain it here just 
to dump it into
-    cached_classpath.txt ! See HBASE-28433 for more info. -->
-    <dependency>
-      <groupId>org.hamcrest</groupId>
-      <artifactId>hamcrest-core</artifactId>
-      <!-- Overriding the scope in depMgmt -->
-      <scope>compile</scope>
-    </dependency>
     <dependency>
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-openssl</artifactId>
@@ -75,27 +57,11 @@
     </dependency>
     <dependency>
       <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase-mapreduce</artifactId>
+      <artifactId>hbase-endpoint</artifactId>
     </dependency>
-    <!-- We don't really add this to assembly tarball, we retain it here just 
to dump it into
-    cached_classpath.txt ! See HBASE-28433 for more info. -->
     <dependency>
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-mapreduce</artifactId>
-      <type>test-jar</type>
-    </dependency>
-    <!-- To dump tools in hbase-procedure into cached_classpath.txt. -->
-    <dependency>
-      <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase-procedure</artifactId>
-    </dependency>
-    <!-- We don't really add this to assembly tarball, we retain it here just 
to dump it into
-    cached_classpath.txt ! See HBASE-28433 for more info. -->
-    <dependency>
-      <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase-procedure</artifactId>
-      <type>test-jar</type>
-      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.hbase</groupId>
@@ -123,12 +89,6 @@
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-external-blockcache</artifactId>
     </dependency>
-    <!-- We don't really add this to assembly tarball, we retain it here just 
to dump it into
-    cached_classpath.txt ! See HBASE-28433 for more info. -->
-    <dependency>
-      <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase-testing-util</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-metrics-api</artifactId>
@@ -154,6 +114,10 @@
       <groupId>org.apache.httpcomponents</groupId>
       <artifactId>httpcore</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.hbase</groupId>
+      <artifactId>hbase-asyncfs</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-backup</artifactId>
@@ -206,6 +170,8 @@
       <groupId>jline</groupId>
       <artifactId>jline</artifactId>
     </dependency>
+    <!-- FIXME this is only kept to simplify reviewing the assembly refactor.
+    See HBASE-29010 -->
     <dependency>
       <groupId>com.sun.xml.ws</groupId>
       <artifactId>jaxws-ri</artifactId>
@@ -245,20 +211,36 @@
       <groupId>io.opentelemetry.javaagent</groupId>
       <artifactId>opentelemetry-javaagent</artifactId>
     </dependency>
-    <!-- We don't really add this to assembly tarball, we retain it here just 
to dump it into
-    cached_classpath.txt ! See HBASE-28433 for more info. -->
+    <!-- This is an optional dependency of hbase-external-blockcache.
+    The assembly traditionally includes it, so we add it as an explicit 
dependency -->
+    <dependency>
+      <groupId>net.spy</groupId>
+      <artifactId>spymemcached</artifactId>
+    </dependency>
+    <!-- The tomcat JSP Compiler dependencies are not needed for runtime -->
+    <dependency>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-juli</artifactId>
+      <version>${tomcat.version.for.exclusion}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-api</artifactId>
+      <version>${tomcat.version.for.exclusion}</version>
+      <scope>provided</scope>
+    </dependency>
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-util-scan</artifactId>
+      <version>${tomcat.version.for.exclusion}</version>
+      <scope>provided</scope>
     </dependency>
-    <!-- We don't really add this to assembly tarball, we retain it here just 
to dump it into
-   cached_classpath.txt ! See HBASE-28433 for more info. -->
     <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-core</artifactId>
-      <!-- Making it compile here so that it can be downloaded during 
packaging. -->
-      <!-- All other modules scope it as test or inherit test scope from 
parent pom.  -->
-      <scope>compile</scope>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-util</artifactId>
+      <version>${tomcat.version.for.exclusion}</version>
+      <scope>provided</scope>
     </dependency>
   </dependencies>
   <build>
@@ -313,45 +295,6 @@
       <plugin>
         <artifactId>maven-dependency-plugin</artifactId>
         <executions>
-          <execution>
-            <!-- generates the file that will be used by the bin/hbase script 
in the dev env -->
-            <id>create-hbase-generated-classpath</id>
-            <goals>
-              <goal>build-classpath</goal>
-            </goals>
-            <phase>test</phase>
-            <configuration>
-              
<outputFile>${project.parent.basedir}/target/cached_classpath.txt</outputFile>
-              
<excludeArtifactIds>jline,jruby-complete,hbase-shaded-client,hbase-shaded-client-byo-hadoop,hbase-shaded-mapreduce</excludeArtifactIds>
-            </configuration>
-          </execution>
-
-          <execution>
-            <!-- generates the file that will be used by the bin/hbase zkcli 
script in the dev env -->
-            <id>create-hbase-generated-classpath-jline</id>
-            <goals>
-              <goal>build-classpath</goal>
-            </goals>
-            <phase>test</phase>
-            <configuration>
-              
<outputFile>${project.parent.basedir}/target/cached_classpath_jline.txt</outputFile>
-              <includeArtifactIds>jline</includeArtifactIds>
-            </configuration>
-          </execution>
-
-          <execution>
-            <!-- generates the file that will be used by the bin/hbase shell 
script in the dev env -->
-            <id>create-hbase-generated-classpath-jruby</id>
-            <goals>
-              <goal>build-classpath</goal>
-            </goals>
-            <phase>test</phase>
-            <configuration>
-              
<outputFile>${project.parent.basedir}/target/cached_classpath_jruby.txt</outputFile>
-              <includeArtifactIds>jruby-complete</includeArtifactIds>
-            </configuration>
-          </execution>
-
           <!--
            Build an aggregation of our templated NOTICE file and the NOTICE 
files in our dependencies.
            If MASSEMBLY-382 is fixed we could do this in the assembly
diff --git a/hbase-assembly/src/main/assembly/client.xml 
b/hbase-assembly/src/main/assembly/client.xml
index 9f95e139332..f8708b363e6 100644
--- a/hbase-assembly/src/main/assembly/client.xml
+++ b/hbase-assembly/src/main/assembly/client.xml
@@ -31,55 +31,10 @@
   <baseDirectory>hbase-${project.version}-client</baseDirectory>
   <componentDescriptors>
     
<componentDescriptor>src/main/assembly/client-components.xml</componentDescriptor>
+    <!-- Not that everything below is an exact copy of hadoop-three-compat.xml
+    Unless differences are introduced on purpose, this should be kept in sync 
with
+    hadoop-three-compat.xml -->
   </componentDescriptors>
-  <moduleSets>
-    <!-- include regular jars so the shell can use them -->
-    <moduleSet>
-      <useAllReactorProjects>true</useAllReactorProjects>
-      <includes>
-        <include>org.apache.hbase:hbase-shell</include>
-      </includes>
-      <binaries>
-        <unpack>false</unpack>
-        <outputDirectory>lib</outputDirectory>
-        <dependencySets>
-          <dependencySet>
-            <excludes>
-              <exclude>org.apache.hadoop:*:test-jar</exclude>
-              <exclude>org.apache.hbase:*:test-jar</exclude>
-            <!-- Exclude J2EE libraries that get pulled in when building on 
JDK11 -->
-              <exclude>com.sun.xml.ws:jaxws-ri</exclude>
-            <!-- Exclude libraries that we put in their own dirs under lib/ -->
-              <exclude>org.jruby:jruby-complete</exclude>
-              <exclude>com.sun.jersey:*</exclude>
-              <exclude>com.sun.jersey.contribs:*</exclude>
-              <exclude>jline:jline</exclude>
-              <exclude>junit:junit</exclude>
-              
<exclude>com.github.stephenc.findbugs:findbugs-annotations</exclude>
-              <exclude>commons-logging:commons-logging</exclude>
-              <exclude>log4j:log4j</exclude>
-              <exclude>org.apache.hbase:hbase-shaded-client</exclude>
-              
<exclude>org.apache.hbase:hbase-shaded-client-byo-hadoop</exclude>
-              <exclude>org.apache.hbase:hbase-shaded-mapreduce</exclude>
-              <exclude>org.apache.htrace:htrace-core4</exclude>
-              <exclude>org.apache.htrace:htrace-core</exclude>
-              <exclude>org.apache.yetus:audience-annotations</exclude>
-              <exclude>org.slf4j:*</exclude>
-              <exclude>org.apache.logging.log4j:*</exclude>
-              <exclude>io.opentelemetry.javaagent:*</exclude>
-              <exclude>org.hamcrest:hamcrest-core</exclude>
-              <exclude>org.mockito:mockito-core</exclude>
-              <!-- Exclude transitive dependencies of tomcat-jasper, not 
needed at runtime -->
-              <exclude>org.apache.tomcat:tomcat-juli</exclude>
-              <exclude>org.apache.tomcat:tomcat-api</exclude>
-              <exclude>org.apache.tomcat:tomcat-util-scan</exclude>
-              <exclude>org.apache.tomcat:tomcat-util</exclude>
-            </excludes>
-          </dependencySet>
-        </dependencySets>
-      </binaries>
-    </moduleSet>
-  </moduleSets>
   <!-- Include the generated LICENSE and NOTICE files -->
   <files>
     <file>
@@ -104,15 +59,40 @@
 
   <dependencySets>
     <dependencySet>
-      <outputDirectory>lib/shaded-clients</outputDirectory>
-      <includes>
-        <include>org.apache.hbase:hbase-shaded-client</include>
-        <include>org.apache.hbase:hbase-shaded-mapreduce</include>
-        <include>org.apache.hbase:hbase-shaded-client-byo-hadoop</include>
-      </includes>
+      <outputDirectory>lib</outputDirectory>
+      <useTransitiveDependencies>true</useTransitiveDependencies>
+      <!-- Exclude artifacts added in the sub-directories to avoid duplication 
-->
+      <excludes>
+        <!-- Exclude the shaded jars that go in the lib/shaded-clients 
directory -->
+        <exclude>org.apache.hbase:hbase-shaded-client</exclude>
+        <exclude>org.apache.hbase:hbase-shaded-mapreduce</exclude>
+        <exclude>org.apache.hbase:hbase-shaded-client-byo-hadoop</exclude>
+        <!-- Exclude the Ruby jar that goes in the lib/ruby directory -->
+        <exclude>org.jruby:jruby-complete</exclude>
+        <!-- Exclude jars that go into the lib/client-facing-thirdparty 
directory -->
+        <exclude>com.github.stephenc.findbugs:findbugs-annotations</exclude>
+        <exclude>commons-logging:commons-logging</exclude>
+        <exclude>log4j:log4j</exclude>
+        <exclude>org.apache.htrace:htrace-core4</exclude>
+        <exclude>org.apache.htrace:htrace-core</exclude>
+        <exclude>org.apache.yetus:audience-annotations</exclude>
+        <exclude>org.slf4j:*</exclude>
+        <exclude>org.apache.logging.log4j:*</exclude>
+        <!-- TODO shouldn't we also exclude duplicate io.opentelemetry.* jars 
which are added to client-facing-thirdparty ? -->
+        <!-- Exclude the opentelemetry agent that goes in the lib/trace 
directory -->
+        <exclude>io.opentelemetry.javaagent:*</exclude>
+        <!-- Exclude jline2 which goes into lib/zk-client. jline3 is a 
different artifact-->
+        <exclude>jline:jline</exclude>
+        <!-- These two exclusions are added here to preserve previous 
behaviour, and are not included in sub-directories -->
+        <!-- TODO investigate using the provided mechanism for these -->
+        <exclude>com.sun.jersey:*</exclude>
+        <exclude>com.sun.jersey.contribs:*</exclude>
+        <!-- FIXME remove when jaxws-ri is removed from assembly -->
+        <exclude>com.sun.xml.ws:jaxws-ri:pom</exclude>
+      </excludes>
     </dependencySet>
-  <!-- Add jruby-complete to hbase_home/lib/ruby.
-       Update JRUBY_PACKAGED_WITH_HBASE in bin/hbase and hbase.cmd if you 
would like to update outputDirectory below -->
+    <!-- Add jruby-complete to hbase_home/lib/ruby.
+         Update JRUBY_PACKAGED_WITH_HBASE in bin/hbase and hbase.cmd if you 
would like to update outputDirectory below -->
     <dependencySet>
       <outputDirectory>lib/ruby</outputDirectory>
       <includes>
@@ -120,8 +100,6 @@
       </includes>
     </dependencySet>
     <!-- Include third party dependencies the shaded clients expose in the lib 
directory
-         N.B. this will conflict with the omnibus tarball but these should be 
precisely
-         the same artifacts so blind overwrite of either should be fine.
       -->
     <dependencySet>
       <outputDirectory>lib/client-facing-thirdparty</outputDirectory>
@@ -152,6 +130,7 @@
            tarball in a different build.
         -->
       <includes>
+        <!-- TODO Review and remove entries that are not present in any 
supported HBase and Hadoop version -->
         <include>com.github.stephenc.findbugs:findbugs-annotations</include>
         <include>commons-logging:commons-logging</include>
         <include>log4j:log4j</include>
@@ -163,6 +142,21 @@
         <include>io.opentelemetry:*</include>
       </includes>
     </dependencySet>
+    <dependencySet>
+      <outputDirectory>lib/shaded-clients</outputDirectory>
+      <includes>
+        <include>org.apache.hbase:hbase-shaded-client</include>
+        <include>org.apache.hbase:hbase-shaded-mapreduce</include>
+        <include>org.apache.hbase:hbase-shaded-client-byo-hadoop</include>
+      </includes>
+    </dependencySet>
+    <dependencySet>
+      <outputDirectory>lib/zkcli</outputDirectory>
+      <includes>
+        <!-- This is jline2 -->
+        <include>jline:jline</include>
+      </includes>
+    </dependencySet>
     <dependencySet>
       <outputDirectory>lib/trace</outputDirectory>
       <includes>
@@ -170,5 +164,4 @@
       </includes>
     </dependencySet>
   </dependencySets>
-
 </assembly>
diff --git a/hbase-assembly/src/main/assembly/hadoop-three-compat.xml 
b/hbase-assembly/src/main/assembly/hadoop-three-compat.xml
index f5da20b2131..3fc5e0c7bd0 100644
--- a/hbase-assembly/src/main/assembly/hadoop-three-compat.xml
+++ b/hbase-assembly/src/main/assembly/hadoop-three-compat.xml
@@ -28,98 +28,6 @@
   <componentDescriptors>
     <componentDescriptor>src/main/assembly/components.xml</componentDescriptor>
   </componentDescriptors>
-  <moduleSets>
-    <moduleSet>
-      <useAllReactorProjects>true</useAllReactorProjects>
-      <includes>
-        <!-- Keep this list sorted by name -->
-        <include>org.apache.hbase:hbase-asyncfs</include>
-        <include>org.apache.hbase:hbase-backup</include>
-        <include>org.apache.hbase:hbase-balancer</include>
-        <include>org.apache.hbase:hbase-client</include>
-        <include>org.apache.hbase:hbase-common</include>
-        <include>org.apache.hbase:hbase-endpoint</include>
-        <include>org.apache.hbase:hbase-external-blockcache</include>
-        <include>org.apache.hbase:hbase-hadoop-compat</include>
-        <include>org.apache.hbase:hbase-http</include>
-        <include>org.apache.hbase:hbase-logging</include>
-        <include>org.apache.hbase:hbase-mapreduce</include>
-        <include>org.apache.hbase:hbase-diagnostics</include>
-        <include>org.apache.hbase:hbase-metrics</include>
-        <include>org.apache.hbase:hbase-metrics-api</include>
-        <include>org.apache.hbase:hbase-procedure</include>
-        <include>org.apache.hbase:hbase-protocol-shaded</include>
-        <include>org.apache.hbase:hbase-replication</include>
-        <include>org.apache.hbase:hbase-rest</include>
-        <include>org.apache.hbase:hbase-server</include>
-        <include>org.apache.hbase:hbase-shell</include>
-        <include>org.apache.hbase:hbase-thrift</include>
-        <include>org.apache.hbase:hbase-zookeeper</include>
-      </includes>
-      <!-- Binaries for the dependencies also go in the hbase-jars directory 
-->
-      <binaries>
-        <outputDirectory>lib</outputDirectory>
-        <unpack>false</unpack>
-        <dependencySets>
-          <dependencySet>
-            <excludes>
-              <exclude>org.apache.hadoop:*:test-jar</exclude>
-              <exclude>org.apache.hbase:*:test-jar</exclude>
-              <!-- Exclude pom file -->
-              <exclude>com.sun.xml.ws:jaxws-ri:pom</exclude>
-              <!-- Exclude libraries that we put in their own dirs under lib/ 
-->
-              <exclude>org.jruby:jruby-complete</exclude>
-              <exclude>com.sun.jersey:*</exclude>
-              <exclude>com.sun.jersey.contribs:*</exclude>
-              <exclude>jline:jline</exclude>
-              <exclude>org.apache.hbase:hbase-shaded-client</exclude>
-              
<exclude>org.apache.hbase:hbase-shaded-client-byo-hadoop</exclude>
-              <exclude>org.apache.hbase:hbase-shaded-mapreduce</exclude>
-              
<exclude>com.github.stephenc.findbugs:findbugs-annotations</exclude>
-              <exclude>commons-logging:commons-logging</exclude>
-              <exclude>log4j:log4j</exclude>
-              <exclude>org.apache.htrace:htrace-core4</exclude>
-              <exclude>org.apache.htrace:htrace-core</exclude>
-              <exclude>org.apache.yetus:audience-annotations</exclude>
-              <exclude>org.slf4j:*</exclude>
-              <exclude>org.apache.logging.log4j:*</exclude>
-              <exclude>io.opentelemetry.javaagent:*</exclude>
-              <exclude>junit:junit</exclude>
-              <exclude>org.hamcrest:hamcrest-core</exclude>
-              <exclude>org.mockito:mockito-core</exclude>
-              <!-- Exclude transitive dependencies of tomcat-jasper, not 
needed at runtime -->
-              <exclude>org.apache.tomcat:tomcat-juli</exclude>
-              <exclude>org.apache.tomcat:tomcat-api</exclude>
-              <exclude>org.apache.tomcat:tomcat-util-scan</exclude>
-              <exclude>org.apache.tomcat:tomcat-util</exclude>
-            </excludes>
-          </dependencySet>
-        </dependencySets>
-      </binaries>
-    </moduleSet>
-    <!-- Include shaded clients in their own directory -->
-    <moduleSet>
-      <useAllReactorProjects>true</useAllReactorProjects>
-      <includes>
-        <include>org.apache.hbase:hbase-shaded-client</include>
-        <include>org.apache.hbase:hbase-shaded-mapreduce</include>
-        <include>org.apache.hbase:hbase-shaded-client-byo-hadoop</include>
-      </includes>
-      <binaries>
-        <outputDirectory>lib/shaded-clients</outputDirectory>
-        <unpack>false</unpack>
-        <dependencySets>
-          <dependencySet>
-            <includes>
-              <include>org.apache.hbase:hbase-shaded-client</include>
-              <include>org.apache.hbase:hbase-shaded-mapreduce</include>
-              
<include>org.apache.hbase:hbase-shaded-client-byo-hadoop</include>
-            </includes>
-          </dependencySet>
-        </dependencySets>
-      </binaries>
-    </moduleSet>
-  </moduleSets>
   <!-- Include the generated LICENSE and NOTICE files -->
   <files>
     <file>
@@ -143,6 +51,39 @@
   </files>
 
   <dependencySets>
+    <dependencySet>
+      <outputDirectory>lib</outputDirectory>
+      <useTransitiveDependencies>true</useTransitiveDependencies>
+      <!-- Exclude artifacts added in the sub-directories to avoid duplication 
-->
+      <excludes>
+        <!-- Exclude the shaded jars that go in the lib/shaded-clients 
directory -->
+        <exclude>org.apache.hbase:hbase-shaded-client</exclude>
+        <exclude>org.apache.hbase:hbase-shaded-mapreduce</exclude>
+        <exclude>org.apache.hbase:hbase-shaded-client-byo-hadoop</exclude>
+        <!-- Exclude the Ruby jar that goes in the lib/ruby directory -->
+        <exclude>org.jruby:jruby-complete</exclude>
+        <!-- Exclude jars that go into the lib/client-facing-thirdparty 
directory -->
+        <exclude>com.github.stephenc.findbugs:findbugs-annotations</exclude>
+        <exclude>commons-logging:commons-logging</exclude>
+        <exclude>log4j:log4j</exclude>
+        <exclude>org.apache.htrace:htrace-core4</exclude>
+        <exclude>org.apache.htrace:htrace-core</exclude>
+        <exclude>org.apache.yetus:audience-annotations</exclude>
+        <exclude>org.slf4j:*</exclude>
+        <exclude>org.apache.logging.log4j:*</exclude>
+        <exclude>io.opentelemetry:*</exclude>
+        <!-- Exclude the opentelemetry agent that goes in the lib/trace 
directory -->
+        <exclude>io.opentelemetry.javaagent:*</exclude>
+        <!-- Exclude jline2 which goes into lib/zk-client. jline3 is a 
different artifact-->
+        <exclude>jline:jline</exclude>
+        <!-- These two exclusions are added here to preserve previous 
behaviour, and are not included in sub-directories -->
+        <!-- TODO investigate using the provided mechanism for these -->
+        <exclude>com.sun.jersey:*</exclude>
+        <exclude>com.sun.jersey.contribs:*</exclude>
+        <!-- FIXME remove when jaxws-ri is removed from assembly -->
+        <exclude>com.sun.xml.ws:jaxws-ri:pom</exclude>
+      </excludes>
+    </dependencySet>
     <!-- Add jruby-complete to hbase_home/lib/ruby.
          Update JRUBY_PACKAGED_WITH_HBASE in bin/hbase and hbase.cmd if you 
would like to update outputDirectory below -->
     <dependencySet>
@@ -182,6 +123,7 @@
            tarball in a different build.
         -->
       <includes>
+        <!-- TODO Review and remove entries that are not present in any 
supported HBase and Hadoop version -->
         <include>com.github.stephenc.findbugs:findbugs-annotations</include>
         <include>commons-logging:commons-logging</include>
         <include>log4j:log4j</include>
@@ -193,9 +135,18 @@
         <include>io.opentelemetry:*</include>
       </includes>
     </dependencySet>
+    <dependencySet>
+      <outputDirectory>lib/shaded-clients</outputDirectory>
+      <includes>
+        <include>org.apache.hbase:hbase-shaded-client</include>
+        <include>org.apache.hbase:hbase-shaded-mapreduce</include>
+        <include>org.apache.hbase:hbase-shaded-client-byo-hadoop</include>
+      </includes>
+    </dependencySet>
     <dependencySet>
       <outputDirectory>lib/zkcli</outputDirectory>
       <includes>
+        <!-- This is jline2 -->
         <include>jline:jline</include>
       </includes>
     </dependencySet>
@@ -206,5 +157,4 @@
       </includes>
     </dependencySet>
   </dependencySets>
-
 </assembly>
diff --git a/hbase-assembly/pom.xml b/hbase-dev-generate-classpath/pom.xml
similarity index 65%
copy from hbase-assembly/pom.xml
copy to hbase-dev-generate-classpath/pom.xml
index 90be45e9cbf..b7fed7a211d 100644
--- a/hbase-assembly/pom.xml
+++ b/hbase-dev-generate-classpath/pom.xml
@@ -26,10 +26,10 @@
     <version>${revision}</version>
     <relativePath>../hbase-build-configuration</relativePath>
   </parent>
-  <artifactId>hbase-assembly</artifactId>
+  <artifactId>hbase-generate-dev-classpath</artifactId>
   <packaging>pom</packaging>
-  <name>Apache HBase - Assembly</name>
-  <description>Module that does project assembly and that is all that it 
does.</description>
+  <name>Apache HBase - Generate Dev Classpath</name>
+  <description>Module that generates a local classpath for running HBase from 
the source directory.</description>
   <properties>
     <license.bundles.dependencies>true</license.bundles.dependencies>
   </properties>
@@ -47,9 +47,6 @@
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-shaded-mapreduce</artifactId>
     </dependency>
-    <!-- Intra-project dependencies -->
-    <!-- We don't really add this to assembly tarball, we retain it here just 
to dump it into
-    cached_classpath.txt ! See HBASE-28433 for more info. -->
     <dependency>
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-it</artifactId>
@@ -57,8 +54,6 @@
     </dependency>
     <!-- Hamcrest is required by hbase-it (via junit), but as long as we're 
grabbing the hbase-it test-jar,
          maven dependency resolution won't pick it up for us. -->
-    <!-- We don't really add this to assembly tarball, we retain it here just 
to dump it into
-    cached_classpath.txt ! See HBASE-28433 for more info. -->
     <dependency>
       <groupId>org.hamcrest</groupId>
       <artifactId>hamcrest-core</artifactId>
@@ -77,25 +72,19 @@
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-mapreduce</artifactId>
     </dependency>
-    <!-- We don't really add this to assembly tarball, we retain it here just 
to dump it into
-    cached_classpath.txt ! See HBASE-28433 for more info. -->
     <dependency>
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-mapreduce</artifactId>
       <type>test-jar</type>
     </dependency>
-    <!-- To dump tools in hbase-procedure into cached_classpath.txt. -->
     <dependency>
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-procedure</artifactId>
     </dependency>
-    <!-- We don't really add this to assembly tarball, we retain it here just 
to dump it into
-    cached_classpath.txt ! See HBASE-28433 for more info. -->
     <dependency>
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-procedure</artifactId>
       <type>test-jar</type>
-      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.hbase</groupId>
@@ -123,8 +112,6 @@
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-external-blockcache</artifactId>
     </dependency>
-    <!-- We don't really add this to assembly tarball, we retain it here just 
to dump it into
-    cached_classpath.txt ! See HBASE-28433 for more info. -->
     <dependency>
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-testing-util</artifactId>
@@ -245,14 +232,10 @@
       <groupId>io.opentelemetry.javaagent</groupId>
       <artifactId>opentelemetry-javaagent</artifactId>
     </dependency>
-    <!-- We don't really add this to assembly tarball, we retain it here just 
to dump it into
-    cached_classpath.txt ! See HBASE-28433 for more info. -->
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
     </dependency>
-    <!-- We don't really add this to assembly tarball, we retain it here just 
to dump it into
-   cached_classpath.txt ! See HBASE-28433 for more info. -->
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
@@ -263,53 +246,6 @@
   </dependencies>
   <build>
     <plugins>
-      <!-- licensing info from our dependencies -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-remote-resources-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>aggregate-licenses</id>
-            <goals>
-              <goal>process</goal>
-            </goals>
-            <configuration>
-              <properties>
-                <copyright-end-year>${build.year}</copyright-end-year>
-                
<debug-print-included-work-info>${license.debug.print.included}</debug-print-included-work-info>
-                
<bundled-dependencies>${license.bundles.dependencies}</bundled-dependencies>
-                <bundled-jquery>${license.bundles.jquery}</bundled-jquery>
-                <bundled-vega>${license.bundles.vega}</bundled-vega>
-                <bundled-logo>${license.bundles.logo}</bundled-logo>
-                
<bundled-bootstrap>${license.bundles.bootstrap}</bundled-bootstrap>
-              </properties>
-              <resourceBundles>
-                
<resourceBundle>${project.groupId}:hbase-resource-bundle:${project.version}</resourceBundle>
-              </resourceBundles>
-              <supplementalModelArtifacts>
-                
<supplementalModelArtifact>${project.groupId}:hbase-resource-bundle:${project.version}</supplementalModelArtifact>
-              </supplementalModelArtifacts>
-              <supplementalModels>
-                <supplementalModel>supplemental-models.xml</supplementalModel>
-              </supplementalModels>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <configuration>
-          <!--Else will use hbase-assembly as final name.-->
-          <finalName>hbase-${project.version}</finalName>
-          <skipAssembly>false</skipAssembly>
-          <appendAssemblyId>true</appendAssemblyId>
-          <tarLongFileMode>posix</tarLongFileMode>
-          <descriptors>
-            <descriptor>${assembly.file}</descriptor>
-            <descriptor>src/main/assembly/client.xml</descriptor>
-          </descriptors>
-        </configuration>
-      </plugin>
       <plugin>
         <artifactId>maven-dependency-plugin</artifactId>
         <executions>
@@ -351,53 +287,8 @@
               <includeArtifactIds>jruby-complete</includeArtifactIds>
             </configuration>
           </execution>
-
-          <!--
-           Build an aggregation of our templated NOTICE file and the NOTICE 
files in our dependencies.
-           If MASSEMBLY-382 is fixed we could do this in the assembly
-           Currently relies on env, bash, find, and cat.
-        -->
-          <execution>
-            <!-- put all of the NOTICE files out of our dependencies -->
-            <id>unpack-dependency-notices</id>
-            <goals>
-              <goal>unpack-dependencies</goal>
-            </goals>
-            <phase>prepare-package</phase>
-            <configuration>
-              <excludeTypes>pom</excludeTypes>
-              <useSubDirectoryPerArtifact>true</useSubDirectoryPerArtifact>
-              <includes>**\/NOTICE,**\/NOTICE.txt</includes>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>exec-maven-plugin</artifactId>
-        <version>${exec.maven.version}</version>
-        <executions>
-          <execution>
-            <id>concat-NOTICE-files</id>
-            <goals>
-              <goal>exec</goal>
-            </goals>
-            <phase>package</phase>
-            <configuration>
-              <executable>env</executable>
-              <arguments>
-                <argument>bash</argument>
-                <argument>-c</argument>
-                <argument>cat maven-shared-archive-resources/META-INF/NOTICE \
-                  `find ${project.build.directory}/dependency -iname NOTICE 
-or -iname NOTICE.txt`</argument>
-              </arguments>
-              
<outputFile>${project.build.directory}/NOTICE.aggregate</outputFile>
-              <workingDirectory>${project.build.directory}</workingDirectory>
-            </configuration>
-          </execution>
         </executions>
       </plugin>
-      <!-- /end building aggregation of NOTICE files -->
     </plugins>
   </build>
 </project>
diff --git a/pom.xml b/pom.xml
index 593506af7f9..dfc511fa93f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -778,6 +778,7 @@
     <module>hbase-logging</module>
     <module>hbase-compression</module>
     <module>hbase-extensions</module>
+    <module>hbase-dev-generate-classpath</module>
   </modules>
   <scm>
     
<connection>scm:git:git://gitbox.apache.org/repos/asf/hbase.git</connection>
@@ -937,6 +938,10 @@
         hbase-thirdparty.
     -->
     <hbase-thirdparty.version>4.1.9</hbase-thirdparty.version>
+    <!-- for.exclusion version are NOT for direct dependencies. To use the 
provided
+    scope to transitively exclude some transitive dependencies, we need to 
specify
+    some existing version to for maven. -->
+    <tomcat.version.for.exclusion>9.0.93</tomcat.version.for.exclusion>
     <!-- Coverage properties -->
     <jacoco.version>0.8.8</jacoco.version>
     <jacocoArgLine/>

Reply via email to