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

Reply via email to