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:
On 16 Aug 2016, at 19:18, Vincent Massol
<vincent(a)massol.net> 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 <
mariusdumitru.florea(a)xwiki.com> 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
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
--
Guillaume Delhumeau (guillaume.delhumeau(a)xwiki.com)
Research & Development Engineer at XWiki SAS
Committer on the