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-dependencies... 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