Stack wrote:
Let me revive this thread.
<snip />
Lets do Sean's idea of a pre-build step where we package and relocate
('shade') critical dependencies (Going by the thread above, Ram, Anoop, and
Andy seems good w/ general idea).
In implementation, we (The HBase PMC) would ask for a new repo [1]. In here
we'd create a new mvn project. This project would produce a single artifact
(jar) called hbase-dependencies or hbase-3rdparty or hbase-shaded-3rdparty
libs. In it would be relocated core libs such as guava and netty (and maybe
protobuf). We'd publish this artifact and then have hbase depend on it
changing all references to point at the relocation: e.g. rather than import
com.google.common.collect.Maps, we'd import
org.apache.hadoop.hbase.com.google.common.collect.Maps.
This makes me wonder if we could construct source jars just the same as
we're creating shaded jars. Google has lead me to [2][3], but I've never
tried either. The latter option seems to be acknowledging that the
source might not actually compile, but the package names would at least
be correct.
I think this would be a good early experiment which, if it does work
out, removes the only acknowledged "hole" in the current plan.
We (The HBase PMC) will have to make releases of this new artifact and vote
on them. I think it will be a relatively rare event.
I'd be up for doing the first cut if folks are game.
St.Ack
1. URL via Sean but for committers to view only: https://reporeq.apache.org/
[2]
https://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#createSourcesJar
[3]
https://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#shadeSourcesContent