Lilianne E. Blaze wrote:
> Sergiu Dumitriu wrote:
>> Lilianne E. Blaze wrote:
>>> Hello,
>>>
>>> Vincent Massol wrote:
>>>> On Jun 13, 2008, at 11:17 AM, Lilianne E. Blaze wrote:
>>>>
>>>>> Hello,
>>>>>
>>>>> Vincent Massol wrote:
>>>>>>> 2) It needed mailsender plugin moved from plugins module to core
>>>>>>> module
>>>>>>> to avoid circulars and other nasties.
>>>>>> We need to find a solution for this since we'd like to keep the
>>>>>> modules separate. This is actually our current effort: modularize
>>>>>> XWiki and move everything to components.
>>>>>>
>>>>>> One solution for now could be to set a dependency on the last
>>>>>> released
>>>>>> version of core with a provided scope.
>>>>> I'm not sure I get it. MailSender depending on Core isn't the problem.
>>>>> The problem is Core depending on MailSender to get the glue code in
>>>>> XWiki.sendMessage working.
>>>> xwiki-core SNAPSHOT --> mailsender plugin SNAPSHOT version
>>>> mailsender --> xwiki-core LATEST (i.e. 1.5M1 or 1.4.1)
>>> Make Core snapshot depend on Mailsender snapshot and Mailsender snapshot
>>> depend on Core latest? Isn't that... unhealthy?
>>>
>>>> I'm not sure my solution works with maven. It might still create a
>>>> circular dep but it's worth verifying it.
>>> I'm not sure either if it's possible, I only recently started using Maven.
>>>
>>> But even if it is possible, it _will_ create a circular, and with
>>> different versions it's even more nasty. Having to build a previous
>>> version to build current version? It sounds more hackish than Windows'
>>> leaked alpha version. It should be possible to just check out the
>>> current version source and then build it on- or offline.
>> Not exactly, as you don't have to build a previous core. A released version
>> is never built, it is
>> taken from the repository. So like you depend on a released (final and
>> public)
>> commons-logging-1.1.1, you depend on a released (final and public)
>> xwiki-core-1.4.1, which will not
>> be used except when building, because it is declared as "provided", which
>> means that a compatible
>> version will be available where the plugin will be used. This "provided"
>> scope is used to allow
>> plugins to be reused with different core versions, as otherwise we would
>> need to re-release each
>> plugin whenever we release core.
>
> Could you please tell me what exactly I need to change and where?
>
> I tried making core-core depend on mailsender:
>
> <dependency>
> <groupId>com.xpn.xwiki.platform.plugins</groupId>
> <artifactId>xwiki-plugin-mailsender</artifactId>
> <version>1.3</version>
> <scope>provided</scope>
> </dependency>
>
> Same:
>
> The projects in the reactor contain a cyclic reference: Edge between
> 'Vertex{label='com.xpn.xwiki.platform.plugins:xwiki-plugin-mailsender'}'
> and 'Vertex{label='com.xpn.xwiki.platform:xwiki-core'}' introduces to
> cycle in the graph com.xpn.xwiki.platform:xwiki-core -->
> com.xpn.xwiki.platform.plugins:xwiki-plugin-mailsender -->
> com.xpn.xwiki.platform:xwiki-core
>
> Either I'm still doing something wrong, or circulars just aren't allowed
> at all no matter the versions.
In mailsender/pom.xml:
<dependency>
<groupId>com.xpn.xwiki.platform</groupId>
<artifactId>xwiki-core</artifactId>
<version>1.4.1</version>
<scope>provided</scope>
</dependency>
in xwiki-core/pom.xml:
<dependency>
<groupId>com.xpn.xwiki.platform.plugins</groupId>
<artifactId>xwiki-plugin-mailsender</artifactId>
<version>1.4-SNAPSHOT</version>
</dependency>
This works for me.
> My only B-plan is making it work with reflection, and trust me, it won't
> be any prettier than monolithic code :/
I know, using reflection is NOT the right approach.
--
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs