Thanks. I'll probably apply it in the coming week. Cheers, Scott
On Fri, Oct 2, 2009 at 12:55 AM, Robert Winch <rwi...@gmail.com> wrote: > I created a JIRA issue and attached a patch based upon to > http://www.ja-sig.org/issues/browse/CAS-802 > > > On Thu, Oct 1, 2009 at 10:03 PM, Scott Battaglia < > scott.battag...@gmail.com> wrote: > >> Would you be able to attach a diff to a JIRA issue for me to apply to the >> project? >> >> Thanks! >> Scott >> >> >> On Thu, Oct 1, 2009 at 7:13 PM, Robert Winch <rwi...@gmail.com> wrote: >> >>> I too have seen this problem and am embarrassed to say that I silently >>> fixed it locally and did not contribute back (hopefully I can rectify my >>> wrong). >>> >>> Maven2 "Dependency mediation" specifies that the version that is resolved >>> is the "nearest definition" [1]. With that said, if you explicitly list >>> spring-core-2.5.6.jar that will be the version that is resolved. This is the >>> safest approach when a specific version of a jar is required. >>> >>> The latest version of the m2eclipse plugin uses Maven 3 which is suppose >>> to be compatible (except internal APIs) with Maven 2. I think the >>> discrepancy is in how the shortest path is defined when a parent and child >>> exist. I'm not sure which is the desired behavior, but asked on the maven >>> mailing list [2]. The m2eclipse plugin treats parent dependencies as closer >>> and Maven 2 thinks child dependencies are closer. For example, below is a >>> very simplified list of dependencies that simulates the issue [3]. Both >>> spring-webflow and spring-aop have direct dependencies on spring-core. The >>> m2eclipse plugin thinks that the spring-core-2.0.7.jar found as a direct >>> dependency of spring-webflow (found in the parent) is the "nearest >>> definition". On the other hand maven2 seems to think that >>> spring-core-2.5.6.jar found as a direct dependency of spring-aop (found in >>> the child) is the "nearest definition". If you change the example below to >>> have spring-webflow to be the first dependency directly in the child both >>> m2eclipse and maven2 agree that spring-core-2.0.7 should be resolved. If you >>> move spring-aop to be the second dependency in the parent the version of >>> spring is consistent too. >>> >>> Regards, >>> Rob >>> >>> [1] >>> http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Transitive_Dependencies >>> >>> [2] >>> http://www.nabble.com/Transitive-Dependencies%3A-Is-the-parent-or-child-dependency-the--%22nearest-dependency%22--td25708104.html >>> >>> [3] >>> >>> parent >>> >>> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" >>> http://www.w3.org/2001/XMLSchema-instance" >>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 >>> http://maven.apache.org/maven-v4_0_0.xsd"> >>> <modelVersion>4.0.0</modelVersion> >>> <groupId>parent</groupId> >>> <artifactId>parent</artifactId> >>> <packaging>pom</packaging> >>> <version>1.0-SNAPSHOT</version> >>> <dependencies> >>> <dependency> >>> <groupId>org.springframework</groupId> >>> <artifactId>spring-webflow</artifactId> >>> <version>1.0.6</version> >>> </dependency> >>> </dependencies> >>> </project> >>> >>> child >>> >>> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" >>> http://www.w3.org/2001/XMLSchema-instance" >>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 >>> http://maven.apache.org/maven-v4_0_0.xsd"> >>> <parent> >>> <artifactId>parent</artifactId> >>> <groupId>parent</groupId> >>> <version>1.0-SNAPSHOT</version> >>> </parent> >>> <modelVersion>4.0.0</modelVersion> >>> <groupId>child</groupId> >>> <artifactId>child</artifactId> >>> <packaging>war</packaging> >>> <version>1.0-SNAPSHOT</version> >>> >>> <dependencies> >>> <dependency> >>> <groupId>org.springframework</groupId> >>> <artifactId>spring-aop</artifactId> >>> <version>2.5.6</version> >>> </dependency> >>> </dependencies> >>> </project> >>> >>> >>> On Thu, Oct 1, 2009 at 1:02 PM, Howard Gilbert >>> <howard.gilb...@yale.edu>wrote: >>> >>>> The problem is triggered because (at least) the >>>> spring-webflow-1.0.6.pom calls up as a dependency (among others) >>>> >>>> >>>> >>>> <dependency> >>>> >>>> >>>> <groupId>org.springframework</groupId> >>>> >>>> >>>> <artifactId>spring-core</artifactId> >>>> >>>> <version>2.0.7</version> >>>> >>>> </dependency> >>>> >>>> >>>> >>>> That is, while all elements of the SpringFramework proper tend to lock >>>> step from release to release, the independent Spring components like >>>> webflow >>>> that have their own release numbers depend on whatever they regard as the >>>> lowest allowable version of the Framework proper. Unfortunately, the >>>> m2eclipse (but apparently not Maven itself) regards this literally and adds >>>> an additional requirement for 2.0.7 as well as the current 2.5.6. >>>> >>>> >>>> >>>> This appears to be a bug in m2eclipse. There is no plausible reason why >>>> any valid Maven technology would use two different versions of the same >>>> artifact name. There seems, however, to be some local (to the subproject) >>>> and global disconnect in the dependency resolution that generates both of >>>> them. >>>> >>>> >>>> >>>> If there is some Maven syntax that will knock m2eclipse hard on the head >>>> and make it realize the problem and fix it automatically, then it would be >>>> great to fix it properly. If not, then the nasty solution I have tested is >>>> to edit : >>>> >>>> >>>> >>>> $HOME/.m2/repository/org/springframework/spring-x/1.0.y/spring-x-1.0.y.pom >>>> >>>> >>>> >>>> >>>> Where x is either “webflow” or “bindings” and y is either “5” or “6”. >>>> >>>> In these POM files delete the <version>2.0.7</version> line in all >>>> spring-xxx artifact dependencies. In think there is one incorrect $Project >>>> version dependency as well and I got rid of it too. >>>> >>>> >>>> >>>> Then you rebuild the m2eclipse Maven dependencies by selecting the >>>> project, Disable Dependency Mangement, Enable Dependency Management, and >>>> Enable Nested Modules. >>>> >>>> >>>> >>>> [Disclaimer: following these instructions may destroy the known >>>> universe. I cannot be responsible for results. Use only on a test >>>> project/reponsitory/machine or if you are prepared to deal with anything >>>> that goes wrong.] >>>> >>>> >>>> >>>> Or we could wait for m2eclipse to fix this, but it is already somewhat >>>> magic that it works as well as it does and I am not sure how easy it will >>>> be >>>> for them to deal with this problem. >>>> >>>> >>>> >>>> >>>> >>>> *From:* Scott Battaglia [mailto:scott.battag...@gmail.com] >>>> *Sent:* Thursday, October 01, 2009 12:26 PM >>>> *To:* cas-dev@lists.jasig.org >>>> *Subject:* Re: [cas-dev] Building cas server with m2eclipse >>>> >>>> >>>> >>>> Howard, if you know what Poms hey came from I can add explicit >>>> exclusions for 3.3.5 I can also see if the dependency tree plugin will >>>> tell >>>> me if you're not sure. >>>> >>>> >>>> -- >>>> You are currently subscribed to cas-dev@lists.jasig.org as: >>>> rwi...@gmail.com >>>> >>>> >>>> To unsubscribe, change settings or access archives, see >>>> http://www.ja-sig.org/wiki/display/JSG/cas-dev >>>> >>>> >>> -- >>> You are currently subscribed to cas-dev@lists.jasig.org as: >>> scott.battag...@gmail.com >>> >>> >>> >>> To unsubscribe, change settings or access archives, see >>> http://www.ja-sig.org/wiki/display/JSG/cas-dev >>> >>> >> -- >> You are currently subscribed to cas-dev@lists.jasig.org as: rwi...@gmail.com >> To unsubscribe, change settings or access archives, see >> http://www.ja-sig.org/wiki/display/JSG/cas-dev >> >> > -- > You are currently subscribed to cas-dev@lists.jasig.org as: > scott.battag...@gmail.com > > To unsubscribe, change settings or access archives, see > http://www.ja-sig.org/wiki/display/JSG/cas-dev > > -- You are currently subscribed to cas-dev@lists.jasig.org as: arch...@mail-archive.com To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-dev