[ 
https://jira.codehaus.org/browse/MSANDBOX-13?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Osipov closed MSANDBOX-13.
----------------------------------

    Resolution: Won't Fix

Please refer to 
https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014
 if you're wondering why this issue was closed out.

> CSharp Plugins-Version overriding and transitive dependencies
> -------------------------------------------------------------
>
>                 Key: MSANDBOX-13
>                 URL: https://jira.codehaus.org/browse/MSANDBOX-13
>             Project: Maven Sandbox
>          Issue Type: Bug
>         Environment: Windows XP
>            Reporter: James Carpenter
>
> Further experience with the maven csharp plugins has revealed an interesting 
> side affect of the current way in which maven built csharp libraries are 
> used.  As mentioned in MNG-2369, the csharp libraries built by maven have the 
> version number in their name. 
> Assume the following library heiarchy: A depends upon B which depends upon C 
> (A->B->C).
> Lets assume the initial versioned dependencies are as follows:
> A_1.0 (explict dependency upon B_1.0)
> B_1.0 (explict dependency upon C_1.0)
> C_1.0
> Now lets assume C has changed to add some new feature needed by a new version 
> of A.  Lets assume that although A needs the new feature of C, the interfaces 
> from C used B have not changed and hence no code changes are necessary to B.
> So we now try (Will not work with CSharp even though Java code would be fine):
> A_2.0 (explict dependency upon B_1.0, and C_2.0) Note: 2.0 version of C 
> superceeds 1.0 in typical mvn fashion
> B_1.0 (explict dependency upon C_1.0)
> C_2.0
> This new configuration fails when the unit tests for A_2.0 are run.  When the 
> unit tests in A_2.0 are run we see that B_1.0 is looking for C_1.0 which 
> doesn't exist as C_2.0 has taken its place in the dependency list.  Remember 
> that B_1.0 is looking for C_1.0 because the assembly meta-data in B_1.0 says 
> it needs an assembly named C_1.0.dll.
> If none of the assemblies are strongly-named (assembly meta-data contains 
> digital signatures for each dependency) it would be sufficient if the 
> dependencies within the assembly meta-data didn't contain the version 
> numbers.  (Such a change would have synergies with whatever was done for 3rd 
> party libraries.)
> Alternatively, I think one can probably include all versions mentioned by any 
> of the dependencies.  In this case it is important to maintain version 
> numbers as part of the dependency names as doing so allows them to co-exist 
> in the same directory.  (Could be problematic for 3rd party dlls without 
> version numbers in their name.)
> All of the above solutions require a change to the csharp maven support in 
> some fashion.  The only solution available today is to create a new release 
> of B which uses the newer version of C.
> A_2.0 (explict dependency upon B_2.0)
> B_2.0 (explict dependency upon C_2.0)
> C_2.0
> The inability to override versions is both an advantage and disadvantage.  As 
> you can see there the advantage to the current solution is that B is now 
> known to work with C_2.0.   The disadvantage is one must re-release B just to 
> get the updated C version.
> Summary: Version overriding with CSharp dependencies doesn't work out.  A 
> general solution to the problem is either impossible or at least awkward.  
> The issue stems from the decision by MS to support digitally signed 
> libraries, and the particulars of the current mvn csharp plugin behavior.



--
This message was sent by Atlassian JIRA
(v6.1.6#6162)

Reply via email to