Spring Framework / Spring Rich Client Library Hell?
I'm working on a Spring Rich Client app. As you knowing, Spring Rich Client depend on Spring Framework. Also, Spring Framework depend on other 3rd party libraries like commons-beanutils.jar. When I first set up my development environment a few months ago, I got Spring Rich Client from CVS. That CVS project includes Spring Framework libraries but some of the libraries Spring Framework relies on (e.g. commons-beanutils.jar) are not in Spring Rich Client CVS project. So, at the time, I got commons-beanutils.jar from Spring Framework's CVS project. Follow me so far?
Okay, so today I try to call method in the commons-beanutils API -- MethodUtils.isAssignmentCompatible(). But compiler complain that this is protected method. I look at JavaDocs and it says public. So I say what the heck? Looking close, I notice that method used to be protected but is now public is later releases of beanutils.
I check Spring Framework CVS now and this jar was updated on 2005-1-14. It now has public method but previous jar had protected method. So, I am thinking, okay, get this new one. But problem is, Spring Framework core library (spring-core.jar) in Spring Rich Client CVS was last updated on 2004-11-27. So now I reluctant to update to newer commons-beanutils.jar because it may break older spring-core.jar.
So maybe now you saying "hey man, you just need to update to newer spring-core.jar too". But, my friend, problem is, new spring-core.jar may break Spring Rich Client code!
So, how to resolve this issue? There are other libraries that have this version problem too, not just commons-beanutils.jar. I thinking solution is this:
1) Spring Rich Client CVS should have the latest RELEASED Spring Framework libraries that Spring Rich Client can successfully compile with. Example, if Spring Framework is at version 1.1.4 but Spring Rich Client can only compile with Spring Framework 1.1.2, then only the 1.1.2 libraries should in Spring Rich Client CVS.
2) Spring Rich Client CVS should include ALL of the 3rd party libraries that Spring Framework relies on. The version of these 3rd party libraries should be the version that accompanied the Spring Framework version in Spring Rich Client CVS. Example, if Spring Framework 1.1.4 uses commons-beanutils 1.7 but Spring Framework 1.1.2 uses commons-beanutils 1.6 and Spring Rich Client is using Spring Framework 1.1.2, then Spring Rich Client CVS should include commons-beanutils 1.6.
Keith, Ollie and friends, what you thinking about this one?
"If I want your opinion, I'll give it to you."