diff --git a/BUILDING.md b/BUILDING.md
index 1ba283819ac..a09d9889772 100644
--- a/BUILDING.md
+++ b/BUILDING.md
@@ -69,6 +69,39 @@ and optionally, to just skip all the tests and build the jars:
Note: javadocs are generated in target/apidocs
+Note: by default `mvn package` does not build `phoenix-mapreduce-byo-shaded-hbase`,
+and the resulting binary tarball does not contain its uberjar. RC / publish builds
+should use `-Prelease`, which adds that module back to the reactor and bundles its
+uberjar into the tarball. See "Faster builds" below.
+
+Faster builds
+-------------
+
+The following options can dramatically reduce wall-clock time:
+
+* `phoenix-mapreduce-byo-shaded-hbase` is the most expensive shade in the project
+ and is only needed for releases, so it is built only under `-Prelease`. A normal
+ `mvn package` skips it, and the binary tarball does not contain its uberjar.
+ Pass `-Prelease` to restore the previous behavior (this is what the ASF release
+ build does).
+
+* The shade modules are reactor-siblings and the shade plugin is thread-safe, so
+ they build concurrently with parallel reactor builds:
+
+ `$ mvn -T 1C clean package -DskipTests`
+
+ (`-T 1C` uses one build thread per CPU core. `-T 4` is also fine.)
+
+* Skip the shaded artifacts and assembly entirely when you are iterating on
+ `phoenix-core*` and do not need the shaded uberjars or the binary tarball.
+ Pass `-DPhoenixPatchProcess` to deactivate the `shade-and-assembly` profile
+ (this is what the ASF Yetus precommit and the Jenkinsfile use):
+
+ `$ mvn package -DskipTests -DPhoenixPatchProcess`
+
+* Shaded sources jars are off by default. `-Prelease` (or `-DshadeSources=true`)
+ re-enables them; RC / publish builds get them automatically.
+
HBase version compatibility
---------------------------
diff --git a/phoenix-assembly/pom.xml b/phoenix-assembly/pom.xml
index ae52be7d23e..d9b97188a95 100644
--- a/phoenix-assembly/pom.xml
+++ b/phoenix-assembly/pom.xml
@@ -32,6 +32,11 @@
true
${project.parent.basedir}
+
+ src/build/components/assembly-noop.xml
@@ -40,10 +45,9 @@
org.apache.phoenix
phoenix-server-${hbase.suffix}
-
- org.apache.phoenix
- phoenix-mapreduce-byo-shaded-hbase-${hbase.suffix}
-
+
org.apache.phoenix
phoenix-client-embedded-${hbase.suffix}
@@ -139,25 +143,8 @@
-
- mapreduce without version
-
- exec
-
- compile
-
- ln
- ${project.basedir}/../phoenix-mapreduce-byo-shaded-hbase/target
-
- -fnsv
- phoenix-mapreduce-byo-shaded-hbase-${hbase.suffix}-${project.version}.jar
-
-
- phoenix-mapreduce-byo-shaded-hbase-${hbase.suffix}.jar
-
-
-
-
+
pherf without version
@@ -214,6 +201,51 @@
+
+
+ release
+
+ src/build/components/release-only-jars.xml
+
+
+
+ org.apache.phoenix
+ phoenix-mapreduce-byo-shaded-hbase-${hbase.suffix}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+
+
+ mapreduce-byo-shaded-hbase
+
+ exec
+
+ compile
+
+ ln
+ ${project.basedir}/../phoenix-mapreduce-byo-shaded-hbase/target
+
+ -fnsv
+ phoenix-mapreduce-byo-shaded-hbase-${hbase.suffix}-${project.version}.jar
+
+
+ phoenix-mapreduce-byo-shaded-hbase-${hbase.suffix}.jar
+
+
+
+
+
+
+
+
+
coverage
diff --git a/phoenix-assembly/src/build/components/all-common-jars.xml b/phoenix-assembly/src/build/components/all-common-jars.xml
index c2f943fc392..3b9dd4808f3 100644
--- a/phoenix-assembly/src/build/components/all-common-jars.xml
+++ b/phoenix-assembly/src/build/components/all-common-jars.xml
@@ -47,14 +47,8 @@
phoenix-server-${hbase.suffix}.jar
-
- ${project.basedir}/../phoenix-mapreduce-byo-shaded-hbase/target
- /
-
- phoenix-mapreduce-byo-shaded-hbase-${hbase.suffix}-${project.version}.jar
- phoenix-mapreduce-byo-shaded-hbase-${hbase.suffix}.jar
-
-
+
${project.basedir}/../phoenix-pherf/target
/
diff --git a/phoenix-assembly/src/build/components/assembly-noop.xml b/phoenix-assembly/src/build/components/assembly-noop.xml
new file mode 100644
index 00000000000..2c5f05fc92b
--- /dev/null
+++ b/phoenix-assembly/src/build/components/assembly-noop.xml
@@ -0,0 +1,31 @@
+
+
+
+
diff --git a/phoenix-assembly/src/build/components/release-only-jars.xml b/phoenix-assembly/src/build/components/release-only-jars.xml
new file mode 100644
index 00000000000..0b5917b3b70
--- /dev/null
+++ b/phoenix-assembly/src/build/components/release-only-jars.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ ${project.basedir}/../phoenix-mapreduce-byo-shaded-hbase/target
+ /
+
+ phoenix-mapreduce-byo-shaded-hbase-${hbase.suffix}-${project.version}.jar
+ phoenix-mapreduce-byo-shaded-hbase-${hbase.suffix}.jar
+
+
+
+
diff --git a/phoenix-assembly/src/build/package-to-tar-all.xml b/phoenix-assembly/src/build/package-to-tar-all.xml
index 9dd292842a2..93c9191dd1d 100644
--- a/phoenix-assembly/src/build/package-to-tar-all.xml
+++ b/phoenix-assembly/src/build/package-to-tar-all.xml
@@ -35,5 +35,8 @@
src/build/components/all-common-jars.xml
src/build/components/all-common-files.xml
src/build/components/all-common-dependencies.xml
+
+ ${assembly.mapreduce.componentDescriptor}
diff --git a/pom.xml b/pom.xml
index 9eb87cd31ed..5fccc53ba53 100644
--- a/pom.xml
+++ b/pom.xml
@@ -92,7 +92,10 @@
true
${project.basedir}/..
${project.build.directory}
- true
+
+ false
2.18.4.1
@@ -161,7 +164,7 @@
1.0.0
5.1.9
3.1.1
- 3.6.0
+ 3.6.2
3.21.0
2.30.0
@@ -2092,13 +2095,22 @@
phoenix-client-parent/phoenix-client-embedded
phoenix-client-parent/phoenix-client-lite
phoenix-server
- phoenix-mapreduce-byo-shaded-hbase
phoenix-assembly
release
+
+
+ phoenix-mapreduce-byo-shaded-hbase
+
+
+
+ true
+