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

Reply via email to