You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@solr.apache.org by "Kevin Risden (Jira)" <ji...@apache.org> on 2022/04/19 17:30:00 UTC

[jira] [Commented] (SOLR-16157) Improve jar de-duplication between server/lib(/ext) and WEB-INF/lib

    [ https://issues.apache.org/jira/browse/SOLR-16157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17524457#comment-17524457 ] 

Kevin Risden commented on SOLR-16157:
-------------------------------------

Thanks [~houston] for digging into this! 

> 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
>            Assignee: Houston Putman
>            Priority: Blocker
>             Fix For: 9.0
>
>
> 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: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org