Maven 2.0.9 dependency import and Continuum 1.1
We use Maven2 for developing our huge application, (and few smaller). We have almost 200 projects which depends on each other somehow. That’s why I really like Maven2. It was a nightmare to handle all those dependencies by hand, – as we did it before moving to Maven. Of course there are other great things about Maven, like reports, site and of course the release management. – OK, there is still an annoying bug with release plugin, ranges and snapshots, but we can live with it.
With the release of 2.0.9, we got a new powerful feature for handling dependency versions. The so called “Importing Dependencies” noted in release notes and described in the documentation and in wiki.
It is great that we can now remove all those parents which handled only dependency versions through dependencyManagement.
We have only a minor, – well it’s not really a minor – problem. It does not work with Continuum 1.1. I submitted an issue, and it is now scheduled for v1.2. Until then we’re back to hierarchical parent dependency management…
The problem with Continuum 1.1 is that is fails to load/parse the POM file if it has
<scope>import</scope>
For already imported projects it will fail with something like “no valid POM file”…
Now that looks familiar. That looks like tight integration. I guess that would never happen with Hudson or CC, as those are general purpose CI systems. They just do not care about who and how builds as far as it does not fail. Loose coupling… and we know loose coupling is good. But we choose Continuum because it just handles Maven2 “natively”.
So, now I’m wondering weather we made a good decision… on one hand nice out of the box Maven2 features on the other one problem right now and possibly new problems will arise as the fact of tight coupling.
And in general, when choosing an application should you prefer loose coupling vs. tight integration?
What is your opinion?
The choice would depend on what tight coupling can provide that loose coupling does not.
I suspect that the intention is not to have maven “tighly coupled” but “deeply integrated”.
What’s a bit weird is adding features in a bugfix release (2.0.9 poms have features that can make them incompatible with 2.0.8). This makes hard for integrators to know when a new maven maintenance release will cause problems on their products.
Yes Abel! The intention was to get deep integration, to have as much as we could width minimal configuration and tweaking. – We choose Continuum over the others mainly because the lack of time. The configuration of other CIs were more than we could afford, and Continuum worked just fine at the first look, and needed no extra tweaking. It caught us with “release” feature too. We even managed to integrate it with our LDAP…
For me, it looks like “deep integration” equals “tightly coupled” as long as you do not have a standardized interface. – As there is only one Maven, – which is still in strong evolution, still searching paths -, there is no standard interface… Although I can imaging a loose coupling with deep integration through Maven CLI.
On the other issue on feature in a bugfix release, I agree with you. It wan not a bugfix, so it should go to 2.1, although it is really powerful feature. – Which I personally really like, because this helps us with release/deploy related tasks.