Here’s how it was done before:
https://github.com/apache/incubator-iceberg/blob/867ec79a5c2f7619cb10546b5cc7f7bbc7d61621/build.gradle#L225-L244

That defines a set of projects called baselineProjects and applies baseline
like this:

configure(baselineProjects) {
  apply plugin: 'com.palantir.baseline-checkstyle'
  ...
}

The baseline config has since been moved into baseline.gradle
<https://github.com/apache/incubator-iceberg/blob/master/baseline.gradle>
so changes should probably go into that file. Thanks for looking into this!

On Thu, Mar 26, 2020 at 6:23 AM Mass Dosage <massdos...@gmail.com> wrote:

> We'd like to know how to do this too. We're working on the Hive
> integration and Hive requires older versions of many of the libraries that
> Iceberg uses (Guava, Calcite and Avro are being the most problematic).
> We're going to need to shade some of these in the iceberg modules we depend
> on but it would also be very useful to be able to override the versions in
> the iceberg-hive and iceberg-mr modules so that they aren't locked to the
> same versions as the rest of the projects.
>
> On Thu, 26 Mar 2020 at 01:53, Saisai Shao <sai.sai.s...@gmail.com> wrote:
>
>> Hi Ryan,
>>
>> As mentioned in the meeting, would you please point me out the way to
>> make some submodules excluded from consistent-versions plugin.
>>
>> Thanks
>> Saisai
>>
>> Anton Okolnychyi <aokolnyc...@apple.com.invalid> 于2020年3月18日周三 上午4:14写道:
>>
>>> I am +1 on having spark-2 and spark-3 modules as well.
>>>
>>> On 7 Mar 2020, at 15:03, RD <rdsr...@gmail.com> wrote:
>>>
>>> I'm +1 to separate modules for spark-2 and spark-3, after the 0.8
>>> release.
>>> I think it would be a big change in organizations to adopt Spark-3 since
>>> that brings in Scala-2.12 which is binary incompatible to previous Scala
>>> versions. Hence this adoption could take a lot of time. I know in our
>>> company we have no near term plans to move to Spark 3.
>>>
>>> -Best,
>>> R.
>>>
>>> On Thu, Mar 5, 2020 at 6:33 PM Saisai Shao <sai.sai.s...@gmail.com>
>>> wrote:
>>>
>>>> I was thinking that if it is possible to limit version lock plugin to
>>>> only iceberg core related subprojects., seems like current
>>>> consistent-versions plugin doesn't allow to do so. So not sure if there're
>>>> some other plugins which could provide similar functionality with more
>>>> flexibility?
>>>>
>>>>  Any suggestions on this?
>>>>
>>>> Best regards,
>>>> Saisai
>>>>
>>>> Saisai Shao <sai.sai.s...@gmail.com> 于2020年3月5日周四 下午3:12写道:
>>>>
>>>>> I think the requirement of supporting different version should be
>>>>> quite common. As Iceberg is a table format which should be adapted to
>>>>> different engines like Hive, Flink, Spark. To support different versions 
>>>>> is
>>>>> a real problem, Spark is just one case, Hive, Flink could also be the case
>>>>> if the interface is changed across major versions. Also version lock may
>>>>> have problems when several engines coexisted in the same build, as they
>>>>> will transiently introduce lots of dependencies which may be conflicted, 
>>>>> it
>>>>> may be hard to figure out one version which could satisfy all, and usually
>>>>> they only confined to a single module.
>>>>>
>>>>>  So I think we should figure out a way to support such scenario, not
>>>>> just maintaining branches one by one.
>>>>>
>>>>> Ryan Blue <rb...@netflix.com> 于2020年3月5日周四 上午2:53写道:
>>>>>
>>>>>> I think the key is that this wouldn't be using the same published
>>>>>> artifacts. This work would create a spark-2.4 artifact and a spark-3.0
>>>>>> artifact. (And possibly a spark-common artifact.)
>>>>>>
>>>>>> It seems reasonable to me to have those in the same build instead of
>>>>>> in separate branches, as long as the Spark dependencies are not leaked
>>>>>> outside of the modules. That said, I'd rather have the additional checks
>>>>>> that baseline provides in general since this is a short-term problem. It
>>>>>> would just be nice if we could have versions that are confined to a 
>>>>>> single
>>>>>> module. The Nebula plugin that baseline uses claims to support that, but 
>>>>>> I
>>>>>> couldn't get it to work.
>>>>>>
>>>>>> On Wed, Mar 4, 2020 at 6:38 AM Saisai Shao <sai.sai.s...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Just think a bit on this. I agree that generally introducing
>>>>>>> different versions of same dependencies could be error prone. But I 
>>>>>>> think
>>>>>>> the case here should not lead to  issue:
>>>>>>>
>>>>>>> 1.  These two sub-modules spark-2 and spark-3 are isolated, they're
>>>>>>> not dependent on either.
>>>>>>> 2. They can be differentiated by names when generating jars, also
>>>>>>> they will not be relied by other modules in Iceberg.
>>>>>>>
>>>>>>> So this dependency issue should not be the case here. And in Maven
>>>>>>> it could be achieved easily. Please correct me if wrong.
>>>>>>>
>>>>>>> Best regards,
>>>>>>> Saisai
>>>>>>>
>>>>>>> Saisai Shao <sai.sai.s...@gmail.com> 于2020年3月4日周三 上午10:01写道:
>>>>>>>
>>>>>>>> Thanks Matt,
>>>>>>>>
>>>>>>>> If branching is the only choice, then we would potentially have two
>>>>>>>> *master* branches until spark-3 is vastly adopted. That will somehow
>>>>>>>> increase the maintenance burden and lead to inconsistency. IMO I'm OK 
>>>>>>>> with
>>>>>>>> the branching way, just think that we should have a clear way to keep
>>>>>>>> tracking of two branches.
>>>>>>>>
>>>>>>>> Best,
>>>>>>>> Saisai
>>>>>>>>
>>>>>>>> Matt Cheah <mch...@palantir.com.invalid> 于2020年3月4日周三 上午9:50写道:
>>>>>>>>
>>>>>>>>> I think it’s generally dangerous and error-prone to try to support
>>>>>>>>> two versions of the same library in the same build, in the same 
>>>>>>>>> published
>>>>>>>>> artifacts. This is the stance that Baseline
>>>>>>>>> <https://github.com/palantir/gradle-baseline> + Gradle Consistent
>>>>>>>>> Versions <https://github.com/palantir/gradle-consistent-versions>
>>>>>>>>> takes. Gradle Consistent Versions is specifically opinionated towards
>>>>>>>>> building against one version of a library across all modules in the 
>>>>>>>>> build.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I would think that branching would be the best way to build and
>>>>>>>>> publish against multiple versions of a dependency.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> -Matt Cheah
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *From: *Saisai Shao <sai.sai.s...@gmail.com>
>>>>>>>>> *Reply-To: *"dev@iceberg.apache.org" <dev@iceberg.apache.org>
>>>>>>>>> *Date: *Tuesday, March 3, 2020 at 5:45 PM
>>>>>>>>> *To: *Iceberg Dev List <dev@iceberg.apache.org>
>>>>>>>>> *Cc: *Ryan Blue <rb...@netflix.com>
>>>>>>>>> *Subject: *Re: [Discuss] Merge spark-3 branch into master
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I didn't realized that Gradle cannot support two different
>>>>>>>>> versions in one build. I think I did such things for Livy to build 
>>>>>>>>> scala
>>>>>>>>> 2.10 and 2.11 jars simultaneously with Maven. I'm not so familiar with
>>>>>>>>> Gradle thing, I can take a shot to see if there's some hacky ways to
>>>>>>>>> make it work.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Besides, are we saying that we will move to spark-3 support after
>>>>>>>>> 0.8 release in the master branch to replace Spark-2, or we maintain 
>>>>>>>>> two
>>>>>>>>> branches for both spark-2 and spark-3 and make two releases? From
>>>>>>>>> my understanding, the adoption of spark-3 may not be so fast, and 
>>>>>>>>> there
>>>>>>>>> still has lots users who stick on spark-2. Ideally, it might be 
>>>>>>>>> better to
>>>>>>>>> support two versions in a near future.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>>
>>>>>>>>> Saisai
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Mass Dosage <massdos...@gmail.com> 于2020年3月4日周三 上午1:33写道:
>>>>>>>>>
>>>>>>>>> +1 for a 0.8.0 release with Spark 2.4 and then move on for Spark
>>>>>>>>> 3.0 when it's ready.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, 3 Mar 2020 at 16:32, Ryan Blue <rb...@netflix.com.invalid>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Thanks for bringing this up, Saisai. I tried to do this a couple
>>>>>>>>> of months ago, but ran into a problem with dependency locks. I 
>>>>>>>>> couldn't get
>>>>>>>>> two different versions of Spark packages in the build with baseline, 
>>>>>>>>> but
>>>>>>>>> maybe I was missing something. If you can get it working, I think 
>>>>>>>>> it's a
>>>>>>>>> great idea to get this into master.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Otherwise, I was thinking about proposing an 0.8.0 release in the
>>>>>>>>> next month or so based on Spark 2.4. Then we could merge the branch 
>>>>>>>>> into
>>>>>>>>> master and do another release for Spark 3.0 when it's ready.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> rb
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Mar 3, 2020 at 6:07 AM Saisai Shao <sai.sai.s...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Hi team,
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I was thinking of merging spark-3 branch into master, also per the
>>>>>>>>> discussion before we could make spark-2 and spark-3 coexisted into 2
>>>>>>>>> different sub-modules. With this, one build could generate both 
>>>>>>>>> spark-2 and
>>>>>>>>> spark-3 runtime jars, user could pick either at preference.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> One concern is that they share lots of common code in read/write
>>>>>>>>> path, this will increase the maintenance overhead to keep consistency 
>>>>>>>>> of
>>>>>>>>> two copies.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> So I'd like to hear your thoughts, any suggestions on it?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>>
>>>>>>>>> Saisai
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>>
>>>>>>>>> Ryan Blue
>>>>>>>>>
>>>>>>>>> Software Engineer
>>>>>>>>>
>>>>>>>>> Netflix
>>>>>>>>>
>>>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Ryan Blue
>>>>>> Software Engineer
>>>>>> Netflix
>>>>>>
>>>>>
>>>

-- 
Ryan Blue
Software Engineer
Netflix

Reply via email to