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…
)
* 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…
) 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…
, 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…
) 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