views:

110

answers:

2

Hi all,

I am using cruise control to constantly check my projects and so far it appears to be working better than continuum except for some minor issues.

If I have a project that depends on several other projects and I update one of those dependencies without updating its version number thus requiring no change in the parent pom, the parent will never get rebuilt.

Is this possible, or should I just go back and keep incrementing the pom after each change then make the corresponding changes in the parents as needed?

I was hoping this would be done automatically (if cruise control had tighter maven integration), so that I would magically know this change broke something downstream.

I am guessing my new format will probably be:

${date}.${buildNumber}

2009.12.18.1

Thanks, Walter

A: 

Unfortunately I don't know enough about cruise control to directly answer your question.

However I have had positive experience with Hudson. Hudson is widely used as a CI server, is free, and has excellent Maven integration plus handles what you describe perfectly.

Peter Lynch
I just set hudson up in about 5 minutes. It looks like it might work better for what I want. Cruise Control can probably do it, but configuration is a little more involved.
+1  A: 

If your projects are in a parent->child relationship in maven, building the parent should also the build its modules with the newly resolved dependencies everytime if you are using the install goal.

Based on your description, it sounds like you don't have a parent project with modules but instead of a handful of separate projects with dependencies between them. In this case, I would suggest you do two things

  1. Change the versions in top level of your poms and in your to include -SNAPSHOT on the end. This forces maven to check for new versions of any dependency in a specified timeframe - daily by default. This behavior can by altered by specifically changing the updatePolicy for your repositories - you can have it check every single time if you wish. When it comes to tag and then build/release your projects, you'll want to remove the -SNAPSHOT qualifier for the release, and then re-add it back in after incrementing your version number to support your next development cycle.
  2. In your CI server, you can force projects to build in succession. Since it looks like you switched to Hudson, it should involve setting up build trigger based on the completion of another project just like you'd like add a trigger for scm polling.
whaley
I'll give that a try later.
I changed the way I am labeling releases to now use SNAPSHOT. The main thing I need to do is force builds in succession or implement the parent-child relationship.I think the parent-child relationship will probably be the best and will give that a try. It is important that every time I change a child, that the changes are propagated to the parent so that I integration test all components automatically.