Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-10386

Add BOM module for ease of dependency management in dependent projects

    XMLWordPrintableJSON

Details

    • Wish
    • Status: Resolved
    • Trivial
    • Resolution: Won't Fix
    • 9.0, 8.4, 8.11.1
    • None
    • general/build
    • New

    Description

      Short description

      Add a Bill-of-Materials (BOM) module to Lucene to allow foreign projects to use it for dependency management.

      Reasoning

      A lot of multi-module projects are providing BOMs in order to simplify dependency management. This allows dependant projects to only specify the version of the BOM module while declaring the dependencies without them (as the will be provided by BOM).

      For example:

      dependencies {
          // Only specify the version of the BOM
          implementation platform('com.fasterxml.jackson:jackson-bom:2.13.1')
      
          // Don't specify dependency versions as they are provided by the BOM
          implementation "com.fasterxml.jackson.core:jackson-annotations"
          implementation "com.fasterxml.jackson.core:jackson-core"
          implementation "com.fasterxml.jackson.core:jackson-databind"
          implementation "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml"
          implementation "com.fasterxml.jackson.datatype:jackson-datatype-guava"
          implementation "com.fasterxml.jackson.datatype:jackson-datatype-jdk8"
          implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310"
          implementation "com.fasterxml.jackson.module:jackson-module-parameter-names"
      }

       
      Not only is this approach "popular" but it also has the following pros:

      • there is no need to declare a variable (via Maven properties or Gradle ext) to hold the version
      • this is more automation-friendly because tools like Dependabot only have to update the single version per dependency group

      Other suggestions

      It may be reasonable to also publish BOMs for old versions so that the projects which currently rely on older Lucene versions (such as 8.4) can migrate to the BOM approach without migrating to Lucene 9.0.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              PROgrm_JARvis Petr Portnov
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h