Hi Niranjan,

When generating the p2-repository using `carbon-maven-plugin version 3.x`
this issue arises due to the fact that it resolves dependencies for each
given feature with the dependencies we defined in the pom itself (note that
the effective pom is used for the resolving). Since maven picks only one
version of a given dependency due the use of `nearest in the dependency
tree` strategy, a p2-repo with multiple versions of the same feature can
not be created by using the current `carbon-maven-plugin version 3.1.3`.

But in the case of `carbon-maven-plugin version 1.5.x` this is possible as
the dependencies of each feature is defined in a string form as below

org.apache.axis2.transport:org.apache.axis2.transport.jms.feature:
> ${axis2-transports.wso2.version.1.1.0.wso2v17}


and the version `${axis2-transports.wso2.version.1.1.0.wso2v17}` is
replaced with the value of the relevant property we defined in the pom.xml.
Since there are no restrictions like above in defining properties in
pom.xml this works.

Thanks.

On Thu, Aug 17, 2017 at 10:39 AM, Niranjan Karunanandham <[email protected]>
wrote:

> Hi Kasun,
>
> On Thu, Aug 17, 2017 at 10:04 AM, Kasun Siyambalapitiya <[email protected]>
> wrote:
>
>> Hi Niranjan,
>>
>> The build fails before successful generation of the p2-repo by giving the
>> following error
>>
>> [ERROR] Failed to execute goal org.wso2.carbon.maven:carbon-f
>>> eature-plugin:3.1.1:generate-repo (p2-repo-generation) on project
>>> wso2carbon-kernel: Feature org.wso2.carbon.pax.exam.feature_5.2.0.1 not
>>> found -> [Help 1]
>>
>>
>>
>> Since in the new C5 model the p2-repo containing all the features
>> required for all the runtimes of the product, is generated at a single
>> specified directory(by default the target directory) multiple version of
>> the same feature cannot be generated as maven build will pick only one
>> version of the dependency due to the use of "nearest in the dependency
>> tree" strategy as shown in above mail. As a result although we can have
>> multiple versions at the p2-repo per feature due to the above nature of
>> maven, runtimes with different feature versions cannot be created in C5.
>> This problem was not there in the previous C4 model as the profiles(runtime
>> in C5 wording) were generated at separate locations and their respective
>> p2-repos were created at their own locations(where the profile is created)
>> [1]
>>
>> IMO this issue can be avoided by always using the newest feature version
>> available when creating runtimes in C5 products. WDYT?
>>
> The profiles that were used in C4 were used to install features, but only
> one p2-repo is created. In the case of EI, they have created separate
> modules (folders for each profile) and then they are handling it. In the
> case of AS 5.3.0, we had a single pom to create a distribution with
> multiple profiles. Wilkes p2-repo is generated using the
> carbon-feature-repository [1], here in the pom, the p2-repo is generated
> with different versions of the same feature. Similarly for C5, it should
> follow the same. We need to look into the carbon-maven-plugins version
> 1.5.x [2] and 3.x [3].
>
>
>>
>> [1] https://github.com/wso2/product-ei/tree/v6.2.0-m2/p2-profile
>>
>> On Wed, Aug 16, 2017 at 3:51 PM, Niranjan Karunanandham <
>> [email protected]> wrote:
>>
>>> Hi Kasun,
>>>
>>> On Wed, Aug 16, 2017 at 3:30 PM, Kasun Siyambalapitiya <[email protected]
>>> > wrote:
>>>
>>>> Hi all,
>>>>
>>>> When I was creating a custom product using carbon-kernel version
>>>> 5.2.0-alpha[1] the following issue aroused.
>>>> In a scenario where a product is build with 2 runtimes called runtimeA
>>>> and runtimeB.
>>>>
>>>> runtimeA contains the below feature among it's other features
>>>>
>>>> pax.exam.feature v5.2.0.0
>>>> sample-bundle2 v5.2.0.0
>>>> log-bundle v1.5.0
>>>>
>>>>
>>>> while runtmeB contains the below feature among it's other features
>>>>
>>>> sample.feature v5.2.0.1
>>>> sample-bundle1 v5.2.0.0
>>>> monitor-bundle v1.5.0
>>>> pax.exam.feature v5.2.0.1
>>>>
>>>>
>>>>
>>>> As shown above since there is a dependency to the
>>>> `pax.exam.feature,v5.2.0.1` from the `sample.feature,v5.2.0.1`, to have
>>>> both versions of `pax.exam.feature` to be installed into the separate
>>>> runtimes of the product, it is required to define dependency information of
>>>> each `pax.exam.feature` versions (v5.2.0.0 and v5.2.0.1) under the
>>>> <dependencies> tag in the pom.xml file.
>>>>
>>>> But during the build process, maven will only pick one version of that
>>>> dependency and omit the other versions to avoid any conflicts using the 
>>>> *"nearest
>>>> in the dependency tree"* strategy (already asked in stackoverflow
>>>> [1]). This will results in a build failure as if the build process resolves
>>>> dependency of `pax.exam.feature` v5.2.0.0`, the version v5.2.0.1 will not
>>>> be available during build and vice versa.
>>>>
>>>> Is this a legitimate case that we should address?
>>>> IMO it will be a best practise to use the newest versions of the
>>>> features available when creating runtimes than using the older versions
>>>> which in turn will resolve this issue.
>>>>
>>>> Your comments are highly appreciated.
>>>>
>>>
>>> As per the offline discussion, this issue is for generating the p2-repo.
>>> You will need to check whether both versions of the feature are there in
>>> the p2-repo that is being generated. If it does not exist then we would
>>> need to fix it there.
>>>
>>>
>>>>
>>>> [1] https://github.com/wso2/carbon-kernel/tree/v5.2.0-alpha
>>>> [2] https://stackoverflow.com/questions/24962607/multiple-ve
>>>> rsions-of-the-same-dependency-in-maven
>>>>
>>>> Thanks
>>>>
>>>> --
>>>> *Regards,*
>>>>
>>>> *Kasun Siyambalapitiya*
>>>> *Software Engineer*
>>>> WSO2 Inc. - http://wso2.com/
>>>> lean . enterprise . middleware
>>>> Tel : 0715523466
>>>> E mail : [email protected]
>>>> Blog: https://medium.com/@kasunsiyambalapitiya
>>>> <https://wso2.com/signature>
>>>>
>>>
>>> Regards,
>>> Nira
>>>
>>> --
>>>
>>>
>>> *Niranjan Karunanandham*
>>> Associate Technical Lead - WSO2 Inc.
>>> WSO2 Inc.: http://www.wso2.com
>>>
>>>
>>
>>
>> --
>> *Regards,*
>>
>> *Kasun Siyambalapitiya*
>> *Software Engineer*
>> WSO2 Inc. - http://wso2.com/
>> lean . enterprise . middleware
>> Tel : 0715523466
>> E mail : [email protected]
>> Blog: https://medium.com/@kasunsiyambalapitiya
>> <https://wso2.com/signature>
>>
>
> [1] - https://github.com/wso2/carbon-feature-repository
> [2] - https://github.com/wso2/carbon-maven-plugins/tree/1.5.x
> [3] - https://github.com/wso2/carbon-maven-plugins
>
> Regards,
> Nira
>
> --
>
>
> *Niranjan Karunanandham*
> Associate Technical Lead - WSO2 Inc.
> WSO2 Inc.: http://www.wso2.com
>
>


-- 
*Regards,*

*Kasun Siyambalapitiya*
*Software Engineer*
WSO2 Inc. - http://wso2.com/
lean . enterprise . middleware
Tel : 0715523466
E mail : [email protected]
Blog: https://medium.com/@kasunsiyambalapitiya
<https://wso2.com/signature>
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to