Hi Kasun and All, Let me raise a different, but fundamental concern to this issue. Please correct me if I am wrong.
It's perfectly valid to have the same feature on different run-times (or profiles) of a product, but if that same feature appears in "different versions", meaning, with slight or major differences of their implementations, at different run-times of the product, wouldn't that open up any possibilities of functional inconsistencies or even failures to the overall system ? Thanks, Dilan. *Dilan U. Ariyaratne* Senior Software Engineer WSO2 Inc. <http://wso2.com/> Mobile: +94766405580 <%2B94766405580> lean . enterprise . middleware On Thu, Aug 17, 2017 at 8:19 PM, Kasun Siyambalapitiya <[email protected]> wrote: > 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
