Matt RaibleMatt Raible is a Web Developer and Java Champion. Connect with him on LinkedIn.

The Angular Mini-Book The Angular Mini-Book is a guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.

Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.

For book updates, follow @angular_book on Twitter.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.

10+ YEARS


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

Continuum vs. CruiseControl for Maven 2

I spent some time this past weekend getting automated builds setup for AppFuse 2. Since the project now uses Maven 2, I figured I'd give Continuum a try. I pointed it at my pom.xml in SVN and expected everything to work out-of-the-box. No dice. It seems that Continuum reads the artifactIds instead of the module names for sub-project resolution. To workaround this issue, I'd basically have to rename all my sub-projects to have an "appfuse-" prefix. Doesn't that violate the whole DRY principle? Sure, there's projects that do this, but there's others that don't.

Since I didn't feel like renaming the modules/directories in SVN, I gave CruiseControl a try instead. It took a bit of elbow grease on my part, but I ended up with a config.xml file that works splendidly. It seems somewhat ironic to me that the CruiseControl works better with Maven 2 than Continuum does.

Posted in Java at Sep 05 2006, 03:29:04 PM MDT 28 Comments
Comments:

cruise control is posibly the worst build system. i would rather go for Hudson ( https://hudson.dev.java.net/ ) or LuntBuild. Especially Hudson is damn good if you are in windows system (may give you some grief related with permissions in linux ). Yet, i am not sure maven2 support for both tough

Posted by afsina on September 05, 2006 at 04:39 PM MDT #

<em>> cruise control is posibly the worst build system. </em>

Care to back up your claim with some reasons? Everytime I post something about CruiseControl, I get comments like yours - often with no reasons to switch. If CruiseControl works for me, what's wrong with using it?

Posted by Matt Raible on September 05, 2006 at 04:42 PM MDT #

That's certainly crappy. I'll see about getting it fixed.

Posted by Brett Porter on September 05, 2006 at 05:12 PM MDT #

Matt, I have been stumbling down the same road now since late last year...and when I finally got Continuum to build my project successfully (after a lot of command line hacking), I don't dare touch it because at this point I have no idea what I did to get it imported and building regularly.

I have provided feedback on the Continuum issue tracker, but the ensuing release seems just as frustrating as its predecessor. Hats off to the maven team for making it look pretty, but after all, it is a build system, and where it really needs to shine is getting the builds right.

I will throw another curveball your way that will be sure to bring Continuum to its knees. Try to setup multiple branches so that they are all building on a regular schedule. Good luck figuring out how to kick off a manual build. I might sound frustrated, but I am...because I don't like it when software is called final when it isn't. Continuum is beta software in my opinion. Don't get me wrong, it is going to be great, it just isn't yet.

Posted by Dan Allen on September 05, 2006 at 08:40 PM MDT #

Hi, Matt.

If you looking for simplest solution for your maven2 project then I would recommend you to try Cerberus tool.

Well, it is written on Ruby but It works for Maven2 projects also. It is less resource exacting cause it starts from scheduler (and there is no Ruby process most of the time).

I have never use it for Maven2 - but I use it for my RubyOnRails projects and am very happy with it. Cerberus gives me exactly what I need from Continuous Integration tool.

Posted by Jean Grund on September 06, 2006 at 01:41 AM MDT #

ok, maybe it was a bit hursh. but i had very bad experiences in the past with cruise control. it is (was) very difficult to install and configure, had a stupid user inteface and there was very limited limited documentation. i had grief and had to switched to anthill back in time. Maybe they improved those problem areas and i might as well be talking crap then. However, still, i suggest checking the two products i mentioned. Luntbuild probably may give you the answer since it is pretty detailed, but i should say i am disappointed with them since they are now more like acting as a open source flimsy facade for promoting the commercial product (which is excellet quickbuild)..Lastly, i think atlassian is enterin to the continuous build systems, it may as well worth checking later (i think bamboo is the name)

Posted by afsina on September 06, 2006 at 05:56 AM MDT #

If you already use IntelliJ, IMHO the best choice would be to take a look at Team City server from Jetbrains.

Posted by Ahmed Mohombe on September 06, 2006 at 06:00 AM MDT #

Team City has a lot of nice features but some of the features that really distinguish it from other products are only available under very specific environments. For instance 1) it's clearly targeted at only Intellij Idea users (a group to which I belong so no problem for me there), and 2) the delayed commit feature only works with JUnit or NUnit as the testing framework.

Posted by Matt W on September 06, 2006 at 09:07 AM MDT #

+1 for Luntbuild

Posted by hparra on September 06, 2006 at 10:06 PM MDT #

I've tried setting up Continuum and while I was impressed with the UI, I was very disappointed with the feature set and how little it could be configured. One thing it was missing back then was control over build schedules. If you wanted a light, incremental integration build as well as a complete, clean, site-deploy night build then you couldn't configure Continuum to do so. Same thing if you wanted to force a manual build.

Since then I've tried Luntbuild and was thoroughly impressed. We've been running it for half a year now and we've never felt the need to evaluate another solution. Give it a try!

Posted by GB on September 07, 2006 at 02:16 AM MDT #

+1 for LuntBuild too, comparing to CruiseControl and Continuum at least. Configuration on browser it is very nice. I didn't know Hudson, it seems to do a good job as well.

Posted by Eduardo Rocha on September 07, 2006 at 10:14 PM MDT #

I'm actually fairly satisifed with Continuum. I don't remember exactly, but I think I worked around the SCM checkout error by specifying the scm URL in all my poms. I know, I know, evil of duplication etc. but it's no biggie doing it (I've got about 12 poms or something).

Posted by Anders on September 08, 2006 at 09:20 AM MDT #

2Jean: Cerberus works perfect with Maven2 projects. See live example for Wicket (java web application framework) http://sourceforge.net/mailarchive/forum.php?forum_id=45806

Posted by Anatol Pomozov on September 13, 2006 at 06:41 AM MDT #

The new version of Continuum almost finished will have a good amount of security features that will delight enterpise users

Posted by Carlos Sanchez on September 15, 2006 at 05:19 PM MDT #

Hello Matt, I was wondering if you could post your configuration file (config.xml, the link on this page is broken). I've been tasked with adding our maven project in subversion and I'm new at it......needless to say I'm struggling to get this done. Additional, any information you can provide on how to set up the maven cruisecontrol plugin, would be most appreciated. Thanks head of time. Pedro

Posted by ppl on September 27, 2006 at 02:59 PM MDT #

ppl - I've fixed the link to config.xml.

Posted by Matt Raible on September 27, 2006 at 03:45 PM MDT #

Matt, Thanks for fixing the link. I appreciate all your hard work, appfuse has been of great help to us. Pedro

Posted by ppl on September 27, 2006 at 05:37 PM MDT #

Matt,

Thanks for the great postings about your Cruise Control and Maven2 integration attempts.

I am curious, did you consider using the maven scm:bootstrap task?

I am pretty sure with that, you could do a true, clean build from source code control. Pat

Posted by Pat McNerthney on February 19, 2007 at 09:29 PM MST #

Pat - I tried changing from "clean scm:update install deploy -DperformRelease=true" to "scm:bootstrap clean install deploy -DperformRelease=true" and deleted my projects/appfuse-2.x directory. This resulted in the following error:

'localWorkingCopy' must be an existing directory.

Posted by Matt Raible on February 19, 2007 at 09:42 PM MST #

Matt,

It will be more involved than just that. I am currently working on reworking our CC build process from ant to maven and have a theory I am working on. I am heading towards using a CC specific pom file to drive the build, exactly like is done with ant.

I'll post something here if I get it working.

Pat

Posted by Pat McNerthney on February 19, 2007 at 11:41 PM MST #

CruiseControl is so stupid. Just try to start for example JBoss with it and let me know how many weeks you tried to do this!!!

Posted by Niki on July 30, 2007 at 01:59 AM MDT #

I had a VERY bad experience with Continuum.

1) It claimed support for ClearCase, but could not properly create a view. During release was trying to do things that are not allowed (create a view within view). A clean build was destroying a view (deleting view.dat)
2) It had many minor and not-so-minor bugs. It had a candy GUI and nothing more...
3) It lacked the documentation - I was constantly struggling with things - how to deploy on Tomcat? How to connect to PostgreSQL? How to create UCM view? How to customize the build for my project?
4)It's database schema was awful
5) It had nasty performance problems when I added more users and more projects.
... and so on...
In short, I had to constantly nurse it. I had to develop scripts to adjust and monitor it. I hated that application.
One day I could not stand it any more.
In 3 hours I wrote a set of bash scripts that did what I wanted continuum to do: build, test, deploy, deploy site, send notifications, display results on a web page.
Those scripts still work today. They never broke. After a few days all developers abandoned Continuum. A month later I removed it from the build machine. I regret the time I lost by trying it out.

Posted by David on January 23, 2008 at 04:02 PM MST #

Hi you there! I had to get this thing called cruisecontrol going hence it was on my crq in the beginning of this week. First I had to do it on a windows machine, later on a unix server. It works well now on both machines. Yes, there is a lot of reading and learning first, but if you have figured out where to put all the files, links, directories ect, it will work. Sooo... head up... I like Cruisecontrol... greetings from Tyrol/Innsbruck

Posted by Carsten on February 01, 2008 at 07:27 AM MST #

First - I use Maven2. Second - I've used both CruiseControl and Contiuum.

CruiseControl: It is definately a headache getting the config file setup right, and the GUI tools help, but with the lack of good 'default' or convential setup for what you are trying to build (Maven2 build with java for instance), you can spend a lot of time researching what are some good defaults. But, once you get there, it works great. Also, if you are looking for a central automated build system, but have multiple build environments (or, more likely, you know you will be changing build systems every 3 years or so) -- CruiseControl is a good long-term investment.

Contiuum: Beta quality 'final', yes. In fact, I'm still on 1.0.3 because I'm afraid to upgrade to the newer versions. The install process needs some cleanup (and I have posted a couple gotchas back to Contiuum), but once it is actually running for your environment it is very quick to add new projects. So, if you have a lot of Maven2 projects and/or in an environment with a lot of small projects, Contiuum works great. I was hoping it would be a good, long term build tool, but I'm just not convinced yet.

As a side note, the 'Maestro' install with contiuum makes the installation process easier.

My two coppers -- reading through a lot of comments of various build system likes/dislikes without Maven2 experience, which Maven2 was Matt's focus :-P

Posted by dhartford on February 07, 2008 at 08:04 AM MST #

My biggest issue with Maven is that it never works. I can try maven X or maven x or maven x.x and I can never seem to find the right combination of project that I am compiling with the maven version that project supports. Yes I know I know, I am a big dumb idiot and I have no hope of ever seeing the open source light. Yet however, I also am a person who can make decisions, and if it takes me longer than an hour to install some hard to configure open source project, I will look elsewhere. 10 hours of my time = team server.

Wasn't maven supposed to make all that stuff easier?

How about this, as soon as I start seeing maven built releases become maven version agnostic, I will give maven a try, but for right now all this maven bs is frankly just a pain in my ass. I want the control that ant gives me because I know it won't break if I give it to a new developer. An ant script is an ant script no matter the version (negating some obscure ubernerd version that was in RC.00001).

Anyways, Cruise Control is great for what it is designed to do, repeatedly build an ant script. I have yet to get maven to perform its task at any rating more than adequate, while I have frequently wanted to take Ant out for dinner with hopes of talking it into some late night walks by the bay.

Posted by Clint Hanson on April 01, 2008 at 01:11 AM MDT #

Hello,

Over the past few years I have been getting more return on daily and even continuous builds. Right now my favorite build system is Luntbuild. I have used Cruise Control.NET, not CC/Java. Finding the .net GUI, http://cc-config.sourceforge.net/index.html, helped get CC running. Luntbuild has a tightly linked web interface. Any time I can change over to Luntbuild I will.

Why you may ask? CruiseControl (Java/.NET) setup and maintenance is never easy. Once it works, teams are defensive about the time spent to do so. From changing the logger to publishing unit tests, the team is changing xml files. These may or may not be in your VCS/SCM. Since most people don't understand XML, it is not clear what the actual build process does.

What we should strive for is using the same script that the developers use. I do not like the "It worked on my machine" problem. If both th developer and Luntbuild are using the same ant file, you reduce the machine specific issues.

Luntbuild generally will let you run your scripts right away, but you will soon find that you want to change them slightly to take advantage of the poorly documented variables luntbuild provides for labels and such. They always could provide more!

Finally, I got a script not set up for CI builds to build continually in about 30 minutes in Luntbuild. I have never done that in CruiseControl. Just remember to have the jar app in your path.

So, while I have heard good things about many tools I don't use. Luntbuild does what it does well. I would say Luntbuild is better than the rest!

Posted by Peter Hecht on April 29, 2008 at 09:56 PM MDT #

Matt,

Thanks for posting the example of embedding Maven 2 properties in the CC goal. >>"clean scm:update install deploy -DperformRelease=true" <<


We are currently using CC 2.4.1 (yes very old) and Maven 2.0.10.

I had a project where I had used the CC flags to pass properties to Maven, but this stopped working with Maven 2.0.10. So, I was trying to figure out if I needed to upgrade CC. Fortunately, I found this information, and was able to get things working.

We have been using Cruise Control for four years. I originally looked at a number of build tools: Anthill, Anthill Pro, Cruise Control and I can't remember if was able to install Luntbuild. The major criteria for picking a product was "find something for 'free'". I used this website as good resource for finding out about the CI products that were available in 2006. CI Feature Matrix

The CC build process executes an ant script to update the files from CVS then runs Maven2 to build the project.

I like the fact that I was able to use the Entity in the Cruise Control Config file to bring in other project specific configuration files. This way each project has its own configuration file in the project directory. (Well actually four as there is one for each environment: dev, test, qa, and prod. I opted to have separate files instead of using branched files with CVS.)

I also created a groovy script to automate the "adding of a new project" to the Cruise Control configuration file. (No more hand editing of the .xml files)

Bottom-line: Cruise Control has done what we needed it to do. It is like Ron Popeil says: "Set it and forget it." I know we are not using every possible feature, but then I hardly use any of the features of a Word Processor.

Posted by Mike Farnham on January 20, 2010 at 08:07 PM MST #

Wow... nice rants. For those that made insightful comments, thank you. For the others, I hope you felt better after you vented.

We've been using continuum and archiva for more than a couple years now and these tools have worked well for us (70+ projects - 10s of users). The general level of quality has not always been tip-top, but it takes a different approach than many of the other tools. For instance, it knows about the internals of your maven projects, allowing the tool to do some interesting things such as configuring notifiers (and other things) right from the project meta data. This has allowed us to support some interesting work flows not readily possible with other tools. To be fair, at times this also has been the source of reliability issues.

Where we hit issues with continuum, we decided to submit patches to solve our issues and contribute back to the project. I understand many people are not interested in having that relationship with their tools. However, we felt it made sense strategically; gaining an understanding of our supporting development tools and backing our investment will help ensure they will be available for years to come.

Posted by Brent Atkinson on April 14, 2010 at 04:52 PM MDT #

Post a Comment:
  • HTML Syntax: Allowed