Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-16157

Improve jar de-duplication between server/lib(/ext) and WEB-INF/lib

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • 9.0
    • 9.0
    • Build, Gradle, Server
    • None

    Description

      Currently the jars in the binary release's server/lib, server/lib/ext and WEB-INF/lib directories are manually de-duplicated, and it's very fragile and only works because of transitive dependencies in SolrJ.

      One example of this is done in SOLR-16072.

      Since we have the full-power of Gradle, we should be able to automate this.

      I tried to do a first-pass where all shared-libs between the server and web-app are put into server/lib/ext, and removed from server/lib and WEB-INF/lib. The problem with this approach is that Jetty does not allow webapps to access the Jetty libraries. Therefore this approach didn't buy much since we would have to write exceptions for most of the shared libraries, since they are jetty server libraries.

      I settled on something closer to the current approach. Two configurations in server/build.gradle, serverLib and libExt. in core/build.gradle there is an additional configuration jettyClientImplementation, which implementation inherits from. Both sets  libraries are removed from WEB-INF/lib when it is built, but because of the jetty library limitation, jettyClientImplementation libraries are added back in. This is why they are specified separately in core/build.gradle.

      Therefore the only time a developer has to think about shared dependencies is when adding a client-jetty-library to Solr Core.

      Note: This is somewhat complicated by the fact that solr-core has Jetty Server libraries though it is never used during runtime. They are there just because the embedded Solr Server lives in solr-core. We should split this out into another package, solr-embedded so that the dependencies make more sense. Will create a separate issue for this.

      Attachments

        Issue Links

          Activity

            People

              houston Houston Putman
              houston Houston Putman
              Votes:
              0 Vote for this issue
              Watchers:
              5 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 - 1h
                  1h