Hive
  1. Hive
  2. HIVE-2229

Potentially Switch Build to Maven

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Duplicate
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None

      Description

      I want to propose this idea as gently as possible, because I know there's a lot of passion around build tools these days.

      There should at least be some discussion around the merits of Maven vs. Ant/IVY.

      If there's a lot of interest in switching Hive to Maven, I would be willing to volunteer some time to put together a patch.

      The reasons to potentially look at Maven for the build system include:

      • Simplified build scripts/definitions
      • Getting features like publishing test artifacts "automagically"
      • Very good IDE integration using M2 eclipse
      • IDE integration also supports working on multiple projects at the same time which may have dependencies on eachother.
      • If you absolutely must you can use the maven-antrun-plugin
      • Despite the fact that people have trouble thinking in maven at first, it becomes easy to work with once you know it
      • This supports knowledge reuse

      Reasons for Ant/Ivy

      • There's more flexibility
      • The system's imperative style is familiar to all programmers, regardless of their background in the tool

      Reasons not to go Maven

      • The build system is hard to learn for those not familiar with Maven due to its unusual perspective on projects as objects
      • There's less flexibility
      • If you wind up dropping down to the maven ant plugin a lot everything will be a big mess

      Reasons not to continue Ant/Ivy

      • Despite the fact that the programming paradigm is familiar, the structure of Ant scripts is not very standardized and must be re-learned on pretty much every project
      • Ant/Ivy doesn't emphasize reuse very well
      • There's a constant need to continue long-running development cycles to add desirable features to build scripts which would be simple using other build systems

        Activity

        Hide
        John Sichi added a comment -

        I'm -0 on this one. We end up needing to do a lot of "interesting" things in the Hive build (e.g. metastore, thrift interfaces...), so "If you wind up dropping down to the maven ant plugin a lot everything will be a big mess" becomes very relevant. We're already doing an OK job on reuse, although there's certainly a lot of cleanup possible on the existing ant scripts.

        Show
        John Sichi added a comment - I'm -0 on this one. We end up needing to do a lot of "interesting" things in the Hive build (e.g. metastore, thrift interfaces...), so "If you wind up dropping down to the maven ant plugin a lot everything will be a big mess" becomes very relevant. We're already doing an OK job on reuse, although there's certainly a lot of cleanup possible on the existing ant scripts.
        Hide
        Brock Noland added a comment -

        John,

        The "interesting" are mostly code generation I assume?

        I am +1 on this. Maven has it's issues as well but most hadoop projects are using maven these days. Of course that doesn't mean hive must move to maven, but cross project consistency is welcome when achievable.

        Show
        Brock Noland added a comment - John, The "interesting" are mostly code generation I assume? I am +1 on this. Maven has it's issues as well but most hadoop projects are using maven these days. Of course that doesn't mean hive must move to maven, but cross project consistency is welcome when achievable.

          People

          • Assignee:
            David Phillips
            Reporter:
            Ed Kohlwey
          • Votes:
            6 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development