I had a similar problem in a custom flavor for XWiki SAS. For the Jetty/HSQL package, I made a custom maven plugin, based on the packager plugin, which install all JAR dependencies in "data/extensions" instead of WEB-INF/lib, and I did not include these dependences in the WAR
See: https://github.com/xwikisas/xcs/tree/master/xcs-tools/xcs-tools-dependenciespackager 2016-08-16 21:03 GMT+02:00 Vincent Massol <[email protected]>: > > > > On 16 Aug 2016, at 19:18, Vincent Massol <[email protected]> wrote: > > > > Interesting problem :) > > > > So the CKEditor extension should not be considered a core extension, > i.e. it should not find its way in WEB-INF/lib. > > > > One idea to achieve this is to allow bundling some uninstalled > extensions in WEB-INF (for example inside WEB-INF/extensions) and have > XWiki install them when it starts the first time (as a DW step for example). > > > > Basically they’re considered as bundled third-party extensions and not > as core extensions, and we define a mechanism to bundle third-party > extensions inside an XWiki WAR. > > > > For the Jetty/HSQLDB distribution, we could install them directly since > we have access to the permanent directory. But we could also leave it as > part of a DW step. > > > > WDYT? > > Note that an alternative would be to map WEB-INF/extensions as an > additional extension repository. However, an important issue with this > would be that a WAR file should be considered as read only by servlet > containers (they can do whatever they want with it, expand it in some > custom directory, etc) and thus it would not be possible to remove/update > extensions. This is why I proposed that WEB-INF/extensions would contain > uninstalled extensions that XWiki would need to install. > > Thanks > -Vincent > > > > > Thanks > > -Vincent > > > >> On 01 Aug 2016, at 14:45, Marius Dumitru Florea < > [email protected]> wrote: > >> > >> Hi devs, > >> > >> Thomas raised this issue http://jira.xwiki.org/browse/XE-1570 . One of > the > >> reasons we decided to keep the CKEditor Integration extension in > contrib, > >> with its own release cycle, was to allow the users to upgrade it without > >> the need to upgrade the entire XWiki distribution. > >> > >> There wouldn't be any problem if the CKEditor Integration extension > didn't > >> had any JAR dependencies. But it depends on the CKEditor WebJar which > ends > >> up in the XWiki WAR and thus is considered a core extension, and core > >> extensions cannot be upgraded. > >> > >> Here's what happens: > >> * xwiki-enterprise-ui-common depends on ckeditor-ui ( > >> https://github.com/xwiki/xwiki-enterprise/blob/xwiki- > enterprise-8.2.1/xwiki-enterprise-ui/xwiki-enterprise-ui-common/pom.xml# > L168 > >> ) > >> * both xwiki-enterprise-ui-mainwiki and xwiki-enterprise-ui-wiki depend > on > >> xwiki-enterprise-ui-common > >> * xwiki-enterprise-web depends on both xwiki-enterprise-ui-mainwiki and > >> xwiki-enterprise-ui-wiki ( > >> https://github.com/xwiki/xwiki-enterprise/blob/xwiki- > enterprise-8.2.1/xwiki-enterprise-web/pom.xml#L837 > >> ) in order to "transitively include all JAR dependencies in the > generated > >> WAR" > >> > >> So the ckeditor-webjar ends up in the XE WAR, thus it becomes a core > >> extension. In order to fix this Thomas has proposed two solutions: > >> > >> (1) Build 2 XE WARs: one that bundles the transitive JAR dependencies of > >> the UI (what we have currently) and one that doesn't bundle them. We > would > >> offer only the later for download on xwiki.org, > >> knowing that the transitive JAR dependencies will be installed when the > UI > >> is installed (with the Distribution Wizard for instance). The first WAR > >> would be used only for building the Jetty+HSQLDB distribution. > >> > >> The downside of this solution is: > >> * we don't fix the problem for the Jetty+HSQLDB distribution > >> * the ui-all XAR would work only with the "all" WAR (the first one that > >> bundles the XAR dependencies) > >> > >> (2) Exclude the JARs we don't want as core extensions from > >> https://github.com/xwiki/xwiki-enterprise/blob/xwiki- > enterprise-8.2.1/xwiki-enterprise-web/pom.xml#L837 > >> , one by one. This would fix the WAR-based installations but not the > >> Jetty+HSQLDB distribution which uses the Import Mojo ( > >> https://github.com/xwiki/xwiki-enterprise/blob/xwiki- > enterprise-8.2.1/xwiki-enterprise-data/pom.xml#L145 > >> ) to generate the distribution data folder and thus won't get the > >> ckeditor-webjar. For this we would need to introduce a new Install Mojo > and > >> explicitly install the JAR dependecies we want (ckeditor-webjar in this > >> case). > >> > >> The problem with this solution is the maintenance cost. We'll forget for > >> sure to exclude/install the JAR in XE's pom whenever we add a new JAR > >> dependency to one of the contrib extensions that are bundled in XE > >> (CKEditor and Tour for the moment). > >> > >> Do you have any other ideas? > >> > >> Solution (1) seems the best so far. > >> > >> Thanks, > >> Marius > >> _______________________________________________ > >> devs mailing list > >> [email protected] > >> http://lists.xwiki.org/mailman/listinfo/devs > > > > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > -- Guillaume Delhumeau ([email protected]) Research & Development Engineer at XWiki SAS Committer on the XWiki.org project _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

