• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Pragmatic Project Automation book - What's it all about?

 
Ranch Hand
Posts: 834
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
hi, Mike Clark, can you please briefly explain your book about ? thank you !

[Bear edit: modified topic title]
[ September 21, 2004: Message edited by: Bear Bibeault ]
 
Alvin chew
Ranch Hand
Posts: 834
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
where to get Table of contents for your book ?
 
author
Posts: 83
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The book gives you soup-to-nuts (source code to deployed software) recipes for automating Java projects. It covers how to automate builds with Ant and CruiseControl, create push-button releases from version control using simple scripts, and install and deploy with an installer, Ant tasks, and Java Web Start. The book also covers how to monitor builds with visual devices (e.g. lava lamps) and monitor running programs with devices such as your cell phone.

You can download the Table of Contents and two sample chapters at:

http://www.pragmaticprogrammer.com/sk/auto/

Mike
 
Alvin chew
Ranch Hand
Posts: 834
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
mike, is your book belongs to beginner ?
 
Alvin chew
Ranch Hand
Posts: 834
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
what maven do for us ? i quite confuse on this new technology
 
Ranch Hand
Posts: 1312
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator


It covers how to automate builds with Ant and CruiseControl, create push-button releases from version control using simple scripts



What is CruiseControl ?
 
author
Posts: 799
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Greetings Mike,

I looked at the TOC; looks promising. What significant tools/techniques are "out of scope" for the book? What do you not cover that someone might mistakenly expect to be in the book?

thanks,
Jeff
 
Ranch Hand
Posts: 103
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by somkiat puisungnoen:


What is CruiseControl ?



So you aren't reading the Journal?
http://www.javaranch.com/journal/200409/Journal200409.jsp#a2
 
Mike Clark
author
Posts: 83
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Alvin chew:
mike, is your book belongs to beginner ?



Yes, the Pragmatic Starter Kit, of which Pragmatic Project Automation is the third volume, is intended to help beginners get started on the right foot with what we consider to be the essential basics for software development: version control, unit testing, and automation. These books present the concepts behind the practices, followed up with hands-on recipes for putting the practices to good use on your project.

As well, more advanced readers have used the books in the Starter Kit to help convince and educate other folks within their organization or team. And more often than not, the advanced readers learn a thing or two themselves. :-)

Mike
 
Mike Clark
author
Posts: 83
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by somkiat puisungnoen:


What is CruiseControl ?



CruiseControl is an open source application and framework for continuous integration. You can think of it as a scheduler for your Ant or Maven builds. It watches your version control repository for changes, and if a change has occurred since the last time the build was run, CruiseControl starts another build. In this way, CruiseControl is used to continually build and test your software so that you get timely and accurate feedback about the status of the build.

CruiseControl is also an extensible framework. For example, you can register custom publishers that get notified when the build cycle is complete. My lava lamps, for example, are turned on and off using a custom X10 publisher.

The book devotes an entire chapter (Scheduled Builds) to setting up and running CruiseControl, and the Monitoring chapter describes how to configure publishers that send notification to your cell phone and generate an RSS feed for the build status.

Mike
 
Mike Clark
author
Posts: 83
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Jeff Langr:
I looked at the TOC; looks promising. What significant tools/techniques are "out of scope" for the book? What do you not cover that someone might mistakenly expect to be in the book?



Hi Jeff,

Great question.

It might be easier to answer that by listing what tools *are* described in the book:

Ant (not Maven)
CVS (not Subversion, though the commands are very similar)
CruiseControl
Java Web Start
JUnit
log4j
NSIS installer
RSS
Simple shell scripts and one Ruby script

All the tools used throughout the book are freely available. I tried to keep the automation tool chain simple and, well, pragmatic. Often times a simple shell script or batch file will do the trick. I focused on Ant rather than Maven because Ant is more mature and ubiquitous, and for most projects I think Maven is overkill.

That said, the tools are a means to the end -- project automation. So, for example, although I use CVS in the book, it's really an implementation detail. What's most important is that teams use version control so they can capitalize on automation such as push-button releases.

The automation book does not cover code generation. We thought that topic deserved a book of its own. As an aside, the book's companion web site picks up where the book left off, so the scope of constantly expanding through contributions from other automators in the field:

http://pragmaticautomation.com

I hope that helps. If not, please let me know what tool/technique you're interested in and I'll let you know whether or not it's covered in the book.

Mike
 
Sheriff
Posts: 67747
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
There's seems to be a tendency to pile up questions in this topic. Please keep the discussion in this topic to the spirit of the original post, which was "what is this book about?"

New questions, such as "What is xyz?" should each be started in their own new topics.

thanks,
bear
Forum Barteder
(goes back to wiping the counter)
 
Bear Bibeault
Sheriff
Posts: 67747
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
(looks up from counter)

To that end, I have modified the topic title accordingly.

(goes back to wiping)
 
Ranch Hand
Posts: 160
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I understand this book covers continuous integration with ANT and CRUISE CONTROL. Does this also talk about MAVEN+CRUISE CONTROL integration.

Thanks
Sri Rangan
 
author
Posts: 11962
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Sri Rangan:
I understand this book covers continuous integration with ANT and CRUISE CONTROL. Does this also talk about MAVEN+CRUISE CONTROL integration.


Nope. Maven is given approximately one page, explaining what it is and how it differs from Ant.
 
Greenhorn
Posts: 13
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Mike:

You list the items covered,


"It might be easier to answer that by listing what tools *are* described in the book:

Ant (not Maven)
CVS (not Subversion, though the commands are very similar)
CruiseControl
Java Web Start
JUnit
log4j
NSIS installer
RSS
Simple shell scripts and one Ruby script"



...but what about any QA (besides JUnit) tools - like Checkstyle or Clover - those are the things I'd like to integrate into my builds, however, the TOC looks like the book will be a good read.

Thanks,
-Will
[ September 21, 2004: Message edited by: Bear Bibeault ]
 
Mike Clark
author
Posts: 83
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Sri Rangan:
I understand this book covers continuous integration with ANT and CRUISE CONTROL. Does this also talk about MAVEN+CRUISE CONTROL integration.



The book describes the Ant builder in CruiseControl. To translate that to Maven, you'd simply use the Maven builder:

http://cruisecontrol.sourceforge.net/main/configxml.html#maven

How interested would you be in a supplemental chapter to the book that describes automation with Maven? It would basically be an overlay for the existing book, showing how to do all the same stuff, but with Maven instead of Ant. It would also include a break-down of when and where Maven might be more appropriate to use.

Mike
 
Mike Clark
author
Posts: 83
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by will lopez:
...but what about any QA (besides JUnit) tools - like Checkstyle or Clover - those are the things I'd like to integrate into my builds, however, the TOC looks like the book will be a good read.



The book doesn't cover Checkstyle or Clover specifically, although CruiseControl includes an XSL file that will display Checkstyle results on the build web page. Recent versions of CruiseControl may also include a Clover results publisher.

So, for example, you can run the Checkstyle Ant task as part of your scheduled build, and CruiseControl will slurp up the resulting XML files to be displayed on the build status web page.

Mike

[ September 21, 2004: Message edited by: Mike Clark ]
[ September 21, 2004: Message edited by: Mike Clark ]
 
Ranch Hand
Posts: 54
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Mike Clark:


How interested would you be in a supplemental chapter to the book that describes automation with Maven? It would basically be an overlay for the existing book, showing how to do all the same stuff, but with Maven instead of Ant. It would also include a break-down of when and where Maven might be more appropriate to use.



I, personally, would love to see a Maven supplement. What other resources do you recommend for learning about Maven?
 
Mike Clark
author
Posts: 83
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by E Weibust:
I, personally, would love to see a Maven supplement. What other resources do you recommend for learning about Maven?



Thanks for letting me know. It's something I'm considering writing.

Honestly, I don't have good resources for learning Maven. I'm not saying they're not available, but good documentation for Maven seems to be lacking. I learned what I know about Maven by trial and error. Perhaps I can help change that.

Mike
 
E Weibust
Ranch Hand
Posts: 54
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Yeah, I can't really find anything either.

I'm trying to get something scheduled for the Dallas Java Users group (javamug.org) on the subject. Hopefully, early in 2005.
 
Ranch Hand
Posts: 241
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Mike Clark:


It might be easier to answer that by listing what tools *are* described in the book:

Ant (not Maven)
CVS (not Subversion, though the commands are very similar)
CruiseControl
Java Web Start
JUnit
log4j
NSIS installer
RSS
Simple shell scripts and one Ruby script

Mike



Hi Mike,
What does your book covers about log4j ? Is there any coupling with automation ?
Same question for Java Web Start. Is there any coupling with automation ?

Regards,
 
Mike Clark
author
Posts: 83
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Vinicius Boson:

What does your book covers about log4j ? Is there any coupling with automation ?
Same question for Java Web Start. Is there any coupling with automation ?



As for log4j, the Monitoring chapter shows you how to write a simple custom log4j appender and configure it so the logger acts as a trip wire for monitoring things of interest inside of your program. Say, for example, you want to receive a text message on your cell phone every time somebody orders 2 or more books from your online book store. Inside of your book store program you'd log that event to a log4j logger that has the custom appender registered. The appender receives the logging event and then can send or display a notification of your choosing (e.g., your cell phone beeps). So the automation coupling is in terms of monitoring running programs without having to physically watch them.

In the Installation and Deployment chapter, I use Java Web Start as an example technology for deploying and auto-updating applications over the web. I show you what a JNLP file looks like and walk through the limitations of using Java Web Start. The coupling with automation here is in terms of automating the deployment of applications, and updating to new versions as they are available.

Mike
 
Bear Bibeault
Sheriff
Posts: 67747
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Mike, just curious as to why you chose log4j (which I really like, by the way) over the java.util.logging facility? Did you not want to limit your book audience to JDK 1.4 and beyond?
 
Mike Clark
author
Posts: 83
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Bear Bibeault:
Mike, just curious as to why you chose log4j (which I really like, by the way) over the java.util.logging facility? Did you not want to limit your book audience to JDK 1.4 and beyond?



Actually, I'm just not that fond of the java.util.logging facility. It's a least common denominator approach to logging and you lose some of the power and flexibility of log4j, for example. It's unfortunate, in my opinion, that Sun chooses to expand the size of the JDK by adding layers on top of great libraries that already exist.

My personal tastes aside, I think the development community has already cast their vote on this issue. I did a bit of research before using log4j in the book, and it was clear to me that log4j was by far favored over the logging facility built into the JDK.

Mike
 
Bear Bibeault
Sheriff
Posts: 67747
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
OK, cool. That's exactly my feelings on log4j. I investigated using the JDK logging facility when it became available and chose to retain log4j. Thanks for the sanity check.
[ September 22, 2004: Message edited by: Bear Bibeault ]
 
author
Posts: 14112
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Mike Clark:
The book doesn't cover Checkstyle or Clover specifically, although CruiseControl includes an XSL file that will display Checkstyle results on the build web page. Recent versions of CruiseControl may also include a Clover results publisher.



And if you know some basic XSLT, it isn't too hard to add you own reporting to CC, as long as the tool provides some XML output.
 
Mike Clark
author
Posts: 83
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Ilja Preuss:
And if you know some basic XSLT, it isn't too hard to add you own reporting to CC, as long as the tool provides some XML output.



Exactly. It's easy to look at CruiseControl and think that the build status page of the web application is fixed. In fact, it's dynamically generated by applying stylesheets to the XML output of Ant. So with a little XSLT mojo, you can extend CruiseControl to report on whatever is of interest to you, given that you're able to get XML out of the tool that produces the raw data. I hope to show an example of how to report the results of JDepend using its XML outputter in an upcoming article on pragmaticautomation.com.

And for build notification outside of the web application, you can use an existing CruiseControl publisher or write your own. I use the XSLTLogPublisher to produce an RSS file of the last build results, for example.

Mike
 
Ranch Hand
Posts: 133
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Mike Clark:


Thanks for letting me know. It's something I'm considering writing.

Honestly, I don't have good resources for learning Maven. I'm not saying they're not available, but good documentation for Maven seems to be lacking. I learned what I know about Maven by trial and error. Perhaps I can help change that.

Mike



If you write a Maven book I guarantee at least one sale. :-)
 
Eusebio Floriano
Ranch Hand
Posts: 241
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thx for the aswers Mike )

I have one curiosity ..

Originally posted by Mike Clark:


Exactly. It's easy to look at CruiseControl and think that the build status page of the web application is fixed.
Mike



Is CruiseControl largely used in ther market ?
It�s the first time that i�ve heard about it.

Regards,
 
Greenhorn
Posts: 21
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
In my experience, CruiseControl is being used more and more by more development teams. It's not everywhere like JUnit is, but it's getting downloaded more and more from SourceForge. (JUnit has a total of 794,593 downloads, while CruiseControl has a total of 58,383 downloads.)
 
reply
    Bookmark Topic Watch Topic
  • New Topic