> On 22 Aug 2016, at 11:58, Vincent Massol <[email protected]> wrote:
> 
> 
>> On 22 Aug 2016, at 11:45, Guillaume Delhumeau 
>> <[email protected]> wrote:
>> 
>> 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-dependenciespackager
> 
> Thanks Guillaume. We mentioned this but it doesn’t work for the WAR packaging.

Forgot the end of my sentence :) Here it is:

That’s why I would prefer a solution that allow to auto-deploy some extensions 
and have it packaged inside the WAR (see my previous answer for more details).

Would be great to have some opinions on the few proposals I made. I think we 
need to move on quite quickly on this topic. It’s going to be a problem for our 
users quite soon now.

Thanks
-Vincent

> 
> Thanks
> -Vincent
> 
>> 
>> 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

Reply via email to