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? 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

