You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Duo Zhang (Jira)" <ji...@apache.org> on 2022/08/28 13:41:00 UTC

[jira] [Updated] (HBASE-27340) Artifacts with resolved profiles

     [ https://issues.apache.org/jira/browse/HBASE-27340?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Duo Zhang updated HBASE-27340:
------------------------------
    Component/s: build
                 pom

> 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
>            Priority: Minor
>
> 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)