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 +