Houston Putman created SOLR-16157:
-------------------------------------
Summary: Improve jar de-duplication between server/lib(/ext) and
WEB-INF/lib
Key: SOLR-16157
URL: https://issues.apache.org/jira/browse/SOLR-16157
Project: Solr
Issue Type: Improvement
Security Level: Public (Default Security Level. Issues are Public)
Components: Build, Gradle, Server
Affects Versions: 9.0
Reporter: Houston Putman
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.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]