[
https://issues.apache.org/jira/browse/HBASE-27340?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Duo Zhang resolved HBASE-27340.
-------------------------------
Fix Version/s: 2.6.0
2.5.1
3.0.0-alpha-4
Hadoop Flags: Reviewed
Assignee: Michael Stack
Resolution: Fixed
Merged to branch-2.5+.
Thanks [~stack]! Please fill the release note about this great change.
> Artifacts with resolved profiles
> --------------------------------
>
> Key: HBASE-27340
> URL: https://issues.apache.org/jira/browse/HBASE-27340
> Project: HBase
> Issue Type: Brainstorming
> Components: build, pom
> Reporter: Michael Stack
> Assignee: Michael Stack
> Priority: Minor
> Fix For: 2.6.0, 2.5.1, 3.0.0-alpha-4
>
>
> Brainstorming/Discussion. The maven-flatten-plugin makes it so published poms
> are 'flattened'. The poms contain the runtime-necessary dependencies only,
> 'build' and 'test' dependencies and plugins are dropped, versions are
> resolved out of properties, and so on. The published poms are the barebones
> minimum needed to run.
> With a switch, the plugin can also make it so the produced poms have all
> profiles 'resolved' – making it so the produced poms have all resolved
> hadoop2 or hadoop3 dependencies baked-in – based off which profile we used
> building.
> (I've been interested in this flattening technique since I ran into a
> downstreamer using hbase from a gradle build. Gradle does not respect
> profiles. You can't specify that the gradle build pull in hbase with hadoop3
> dependencies using 'profiles'. I notice too our [~gjacoby] , [~apurtell] et
> al. up on the dev list talking about making a hadoop3 set of artifacts...who
> might be interested in this direction).
> The attached patch adds the flatten plugin so folks can take a look-see. It
> uncovers some locations where our versioning on dependencies is not explicit.
> The workaround practiced here was adding hadoop2/hadoop3 profiles into
> sub-modules that were missing them or moving problematic dependencies that
> were outside of profiles under profiles in sub-modules that had them already.
> For the latter, if the dependency specified excludes, the excludes were moved
> up to the parent pom profile (parent pom profiles have dependencyManagement
> sections... sub-modules have explicit dependency mentions... checks with
> dependency:tree seem to show excludes continue to be effective).
> This is the switch that flattens profiles:
> <embedBuildProfileDependencies>true</embedBuildProfileDependencies>
> This is the sort of complaint we had when the flatten plugin was having
> trouble figure dependency versions – particularly hadoop versions
> {{[ERROR] Failed to execute goal
> org.codehaus.mojo:flatten-maven-plugin:1.3.0:flatten (flatten) on project
> hbase-hadoop2-compat: 3 problems were encountered while building the
> effective model for org.apache.hbase:hbase-hadoop2-compat:2.5.1-SNAPSHOT}}
> {{[ERROR] [WARNING] 'build.plugins.plugin.version' for
> org.codehaus.mojo:flatten-maven-plugin is missing. @}}
> {{[ERROR] [ERROR] 'dependencies.dependency.version' for
> org.apache.hadoop:hadoop-mapreduce-client-core:jar is missing. @}}
> {{[ERROR] [ERROR] 'dependencies.dependency.version' for
> javax.activation:javax.activation-api:jar is missing. @}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)