[ http://jira.codehaus.org/browse/MECLIPSE-120?page=comments#action_77004 ] Joerg Schaible commented on MECLIPSE-120: -----------------------------------------
bq. Your first problem is another issue (MECLIPSE-152), that I'd like to see solved there. Forcing snapshot versions only fixes that problem in certain situations. IMHO this is strongly related to MNG-1245 (just another issue that starts to embarass me, since it is fixed for months and 2.0.5 seems not going to happen anwhere in near time - just a different story) bq. But you actually mean -forceProjectReference here, right? Yep. bq. Second issue: I see that as a good thing - you'll find out soon enough which artifacts are affected by a change since you can't change them because they reference jar files, not projects. ?? If your project refer jars, then they are not affected by a refactoring. This is the point! If you have a central jar with APIs and you change it, none of the other projects are affected at all. Even worse - Eclipse does not detect, that some of those are affected. Now the developer has to guess. bq. Also, when you do a lot of refactoring etc, I get the impression you don't have multiple release cycles, but just 1, for the entire project tree. If that's the case, you could use a dependencyManagement section in the root pom, specifying ${version} for all modules. That way they're always referring to reactor/workspace projects. This should fix your issue, no? No. A lot of our ~100 artifacts have an own release cycles and this for good reason. Nevertheless sometimes you have to refactor something. It's like changing commons-logging, but with the fortune to get an impression by the impact a change will have. bq. Third issue: this is fixing it afterwards, and hoping that the developer will indeed update the poms. As I mentioned above, if you still have jar references and not project references, you're forced to update the pom at that time, or decide not to since it's an unwanted change. Isn't that safer? Developers are confronted with making a good decision on what to upgrade and what for. So you say it is better to run into the problems, when you are actually building the release? Sorry, *then* you're normally under time constraints and it is really no fun to sort things out at that level. bq. What I meant with my third comment is that you see stuff working in eclipse, but it won't compile on the commandline. That gives the developer another responsibility - mvn install before a commit, and update the poms. It's an iterative process and requires more time on big projects. Just updating a pom and mvn eclipse:eclipse, then refresh in eclipse gives you much faster feedback on wheter it still works. Exaclty. It *is* the developers responsibility. The difference to the situation now is that he actually has a chance to be responsible. And as I said, this is optional and not the default working mode of the Eclipse plugin. And currently the situation is even worse, since of MNG-1245 Eclipse *is* using the SNAPSHOT to compile when invoked from the command line ignoring the POM defining a released version. Therefore the generated Eclipse projects are often broken anyway. Currently it took me quite a complete day to get this into sync again by adding depednencyManagement sections to the POMs that affect the Eclipse plugin's project generation (and I don't blame the Eclipse plugin here - there are too may bugs in the reelase core, but the complete situation starts to get unmanagable). bg. On the EAR thing: shouldn't that be solved in the dependencyManagement section? That way it'll work both for eclipse and on the commandline. No, it won't. We already use a company wide POM with dependencyManagement section. But if you release an EJB it will refer a special version of it as parent. Releasing another EJB might refer another parent. Now a project P wants to build an EAR of those two EJBs and it simply does not work. EJB1 is depending on artifact X-1.1, EJB2 is depending on artifact X-1.2. Building the EAR will package one of those X artifacts, but either EJB1 is broken or EJB2, because they refer X in their manifests. Now the project realizes, that it also needs an updated EJB1 and then somebody of the core team providing EJB1 recognizes that upgrading EJB1 to dependency X-1.2 will break the code of EJB1 ... This all could have been avoided if team of X would have known that their change also had impact on EJB1. Therefore they should have been able to see the results of their refactoring. bq. Let me know what you think. I feel this change will probably make things worse because it requires a lot of extra attention from developers, and makes it much easier for them to commit breaking builds. IMHO the Eclipse projects cannot really reflect the Maven build anyway. Eclipse has no means of test scope, you don't use the transitive deps from Eclipse itself (at least not in the released version of the eclipse plugin). A developer has to take always attention. And since Maven is behaving differently for multi-module builds vs. local builds (see MNG-1245) some developers here even started to manage their Eclipse projects on their own (Another team has meanwhile kicked off Maven at all). > Force inter-project dependencies > -------------------------------- > > Key: MECLIPSE-120 > URL: http://jira.codehaus.org/browse/MECLIPSE-120 > Project: Maven 2.x Eclipse Plugin > Issue Type: Improvement > Components: multiproject > Affects Versions: 2.2 > Reporter: Joerg Schaible > > In a multi-module setup, the dependencies between the projects are only > created, if the project's version match the one of the referenced artfiact. > After a release this is normally no longer the case if you have modules with > independent release cycles. Therefore it would be good, if the plugin could > be forced with an option (e.g. -forceSnapshot) to use a dependency to a > module's project with a snapshot version instead of a dependency to the > released artifact in the local repository. The plugin detects this situation > already, but logs just a warning. Without this feature, refactorings are > getting really tedious. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira