Maven support in IDEs

Maven Logo

I've been switching around between the Eclipse, Netbeans and IntelliJ IDEs at home and at work. I've found that fiddling around with multiple IDE specific project configurations and launchers and class-paths is no fun at all. That's one of the reasons I got interested in Maven. Yes, Maven is a build-system but it's also a sort of IDE portability solution. Maven projects can be loaded right into all the major Java IDEs as you can see in the screenshots below. IDEs can find your sources, resources, dependencies and via the Maven Jetty plugin even run your Java webapps from the IDE -- things that are not possible if you're using a custom Ant build-script as we were doing before with Roller.

Here some screenshots that show the various Maven IDE plugins and their dependency graph feature.

Roller / Maven Eclipse 3.5 / M2Eclipse

Here's Roller loaded into Eclipse via the Maven M2 Eclipse plugin.

Roller / Maven Eclipse 3.5 / M2Eclipse

By the way, if you want detailed instructions for getting Roller 5 up and running in Eclipse with the Eclipse Web tooling, check-out Harald Wellman's helpful blog on the topic: Setting up Eclipse for Roller.

Roller / Maven in Netbeans 6.8

Here's Roller loaded into Netbeans as a Maven project.

Roller / Maven in Netbeans 6.8

Roller / Maven in IDEA IntelliJ 9.0

And here's Roller loaded into IDEA IntelliJ as a Maven project.

Roller / Maven in IDEA IntelliJ 9.0

I'm not sure which I prefer yet.


Built with Maven

Maven Logo

I was a Maven hater and resisted it for a long time but over the years Maven has gotten much better, it's well supported in IDEs and as far as I can tell, Maven has replaced Ant as the de facto build system for Java projects. If you want new developers be able to easily build, debug and run your code via command or their favorite IDE then Maven is the way to go, and that's especially true for open source projects like Roller.

That's why I spent a couple of weekends learning Maven and converting Roller's build process from Ant to Maven (ROL-1849). The process of conversion wasn't too difficult. Getting dependencies under control was a pain, but it believe it will be a one time pain and a worthwhile one. What took the most time was figuring out how to get Maven to start Derby, create the Roller tables and then run Roller's JUnit tests. Also, getting Maven's Jetty plugin setup to run Roller was a little tricky but hopefully also a one-time pain. The result is that Roller now uses a standard and well known directory structure, dependencies are managed and it's easier for developers to get started with the codebase.

If you have Maven and Subversion installed on your computer then these commands will fetch the Roller source code, compile the code, run all JUnit tests and then build the Roller webapp:


   svn co https://svn.apache.org/repos/asf/roller/trunk roller_trunk
   cd roller_trunk 
   mvn install

And once all that is done, the following commands will start the Jetty app server, start the Derby database and start Roller at http://localhost:8080/roller, ready for testing, experimentation, etc.


   cd weblogger-web
   mvn jetty:run-war

I think that's pretty damn useful.

Here are some articles/links that influenced my thinking on Maven recently:

  • Comparing Build Systems - Adrian Sutton concludes that Maven is too much work but "the consistency in how a project is built that the Maven project has brought to the Java would is absolutely revolutionary"
  • Maven in our development process - Sherali Karimov explains how Atlassian and says the need for Maven training is "the most important and most overlooked issue of all."
  • Sonatype - The Maven Company. Founded in 2008 by Jason van Zyl, the creator of Maven. Offers training, support and the Nexus Professional repo manager.

Roller Beginner's Guide available

photo of beginner's guide to Apache Roller 4.0

I blogged about Alfonso Romero's Apache Roller 4.0 Beginner's Guide book before. It's a great resource for folks who want to get the most out of their Apache Roller-based blogs, and not just beginners. As you can see in the photo on the right, I've got my copy. You can get yours directly from Pakt publishing:

Buy a copy of Beginner's Guide to Apache Roller 4.0

To publicize the book, Pakt publishing has been publishing some useful excerpts and even a complete sample chapter online. Here's summary of the excerpts so far:

If you've been following Roller development you know that Roller 5.0 is on the way. Most of the changes in Roller 5.0 are "under the hood" so 5.0 won't make Alfonso's book obsolete. Except for a couple of pages in Chapter 5 "Spicing Up Your Blog" that need updated screenshots, I believe everything in the book applies to Roller 5.0 as well.


The Enterprise OpenSocial white paper

opensocial logo

Here's another thing I've been involved with at IBM: the Enterprise OpenSocial white paper which was published just before Christmas 2009.

The paper is a group effort, written by folks from Alfresco, Atlassian, Cisco, Cubetree, Google, IBM, SAP and SocialText. It explains why OpenSocial is relevant and "ready for both Internet scale web communities and enterprise applications." It also lays out some specific areas for improvement in OpenSocial that will make the technology an even better fit in the enterprise. Here's the opening paragraph to get you started:

Enterprises are collections of people, and thus inherently social. Employees of any organization benefit from social connections, group affiliations and relationships both within their own business and between other businesses. As a result, social networking capabilities have become increasingly popular in business-to-consumer, business-to-business, and internal enterprise collaboration applications. New technologies and standards such as Web 2.0 and OpenSocial [1] are helping software providers better model relationships between people, allowing end-users to benefit from such relationships in day-to-day business processes within their own enterprise, and across business networks.

Read the rest of the Enterprise OpenSocial white paper at OpenSocial.org.


The Jazz Connection

Here's something I've been closely involved with during my entire IBM career (almost 9 months now): making software development more social by integrating Rational Team Concert and Lotus Connections.

In case you don't know, Team Concert is Rational's "complete agile collaborative development environment" with integrated source code control, issue tracking, build management and very slick Eclipse and web-based client UIs -- it's a collaborative environment for software developers. Lotus Connections is IBM's comprehensive social software suite with blogs (Roller based!), wikis, social bookmarking, forums, file sharing, social networking and more -- an environment for more general collaboration.

IBM partner Mainsoft has developed an integration between Team Concert and Connections and it's now available as a tech preview. The product makes it easy for developers to hook a a software development project up to a Lotus Connections and enable software developers to collaborate with the much wider community of folks involved with a software project including end users, subject matter experts, executives and other stakeholders. As you can see from the list of features, it's a pretty tight integration.

If you want to learn more about the integration, check out the links I referenced above. There's also a short podcast available at Developer Works and there will be sessions at Lotusphere 2010 this month and (with luck) at Rational's Innovate 2010 Conference in June.


Apache Roller 4.0 Beginners Guide

Here it is:

Roller book cover

Isn't that cool? An actual book on Apache Roller and I did not have to write it. I did review the drafts and it looks good, especially for beginners. It's filled with helpful step-by-step instructions and screenshots. I also submitted a forward, but I don't have a copy of the final book yet so I'm not sure my text made it in (I'd love a hard copy... hint hint). Anyhow... big congratulations to Roller user and author Alfonso Romero.


IBM at last month's Enterprise 2.0 OpenSocial panel

It's been over a month since the Enterprise 2.0 OpenSocial panel and since we were never able to get a group blog post together, I've decided to publish a short summary of what I said about IBM on the panel. I'm paraphrasing myself from memory so this is not exactly what I said but it should be pretty close:

IBM has been successfully innovating in the area of browser-based components, also known as widgets or gadgets, and social APIs for years now. If you haven't seen the IBM Mashup Center you should visit the IBM booth and take a look at the demo. It allows you to create Web 2.0 style mashup applications by dragging-and-dropping widgets into place and wiring them together. You've probably heard of Lotus Connections. Connections is IBM's social software suite and it includes blogs, wikis, forums, social bookmarking and more. Each one of those components features a comprehensive AtomPub-based REST API.

We're working with the OpenSocial community to ensure that the specification meets the needs of our customers and is able to interoperate with our existing iWidget technology (and I think I mentioned the OpenAjax Hub here too). You can see most of the improvements that we're interested in the slides, so I won't go into detail now, but I will mention a couple of things for example: we would like to see better inter-gadget communication, specification modularity (coming in OpenSocial 1.0) and a stable and predictable specification change process.

I work for Rational, the part of IBM that creates tools for software development and delivery, something that is also social and collaborative in nature. We're enthusiastic about OpenSocial and we hope to enable use of OpenSocial Gadgets in Jazz-based product dashboards sometime in 2010. We may also support some of the OpenSocial Social APIs, but we are still learning and experimenting. Jazz products are developed in an open and transparent way so you can track our progress via our wiki and work-items at Jazz.net.

I won't try to paraphrase what the other panelists said, I'll let them do that, and I'll leave out my SocialSite pitch for now as most of my readers have already heard it. I'll put together an update on SocialSite during the next month and I think I'll have some good news to report.


Trip report: ApacheCon US 2009

$entry.displayContent($url.entry($entry.anchor))

Latest links - Nov. 11, 2009


Trip report: NoSQL meetup at ApacheCon

$entry.displayContent($url.entry($entry.anchor))

Trip report: Social Web Camp, Santa Clara, CA

$entry.displayContent($url.entry($entry.anchor))

Upcoming gigs: ApacheCon and Enterprise 2.0

On Wednesday November fourth I'll be speaking at two conferences on the same day: ApacheCon US in Oakland, CA and Enterprise 2.0 in San Francisco. Here's a write-up of what I will be speaking about.

Enterprise 2.0: Enterprise OpenSocial. This will be a panel discussion with representatives from Atlassian, SocialText, Exo and I'll be representing IBM. I'll be prepared to talk about what IBM is doing with OpenSocial and to give some specifics about what we're doing in Jazz to support OpenSocial Gadgets and other web UI plugin technologies. I'll also be prepared to give an update on Project SocialSite and it's move to the Apache Incubator.

ApacheCon: What's new in Roller 5.0. I'll cover the state of Roller, explain the new features coming in Roller 5.0 and make some suggestions for the future of the Roller code base. I will also explain what folks can do to help ensure that Roller can continue to improve, make releases and avoid getting yanked up into the attic.


Roller status, CC: world

It's been a while since I have blogged about it, but I haven't completely stopped working on Roller. In case you're wondering what's up in Roller-land, here's an update based on an email I recently sent to the Roller dev mailing list.

I've been doing some weekend and evening work on Roller 5.0 to get it ready for release. Ganesh and Tanuja did great work on the new Media Blogging features, but there were a couple of significant pieces missing such as data migration and I18N. I had hoped to finish that work during the summer, but life got in the way. Now I'm scrambling to wrap things up. I'll be speaking at ApacheCon US 2009 in November on the topic of What's New in Roller 5.0, so I'd really like to have a 5.0 release candidate ready by then.

Just as a reminder, here's what's currently on the 5.0 feature list:

  • Media Blogging Support
  • Externalizable User Management
  • OpenID Support
  • Tag Data API
  • OpenSearch
  • OAuth for AtomPub
  • See the full list on the Roller wiki

Except for Media Blogging, all of those features are complete. My plan is this. I'll do some more cleanup work on Media Blogging, which is the major new feature in 5.0, fix some bugs and then I'll cut an RC.


Latest Links - BarCampRDU 2009 edition

barcamprdu logo

BarCampRDU 2009 was a great success, if I don't say so myself. Here's my brief review. We had excellent turn-out, lots of great session pitches and lots of great sessions. Everything went very smoothly and our estimates for meals, t-shirts and party-budget were spot on. We received lots of positive feedback on Twitter and blogs and at the event. We did have some difficulties with the PA system and a couple of projectors, but we got past them with a little help from our friends.

Here are the links I've rounded up since the event. If you want a taste of BarCampRDU 2009 then check Robert Fischer's excellent podcast and Tanner Lovelace's very-cool time-lapse set to spooky music.

We might have to do it again next year ;-)


Latest Links: August 11, 2009

ApacheConUS 2009 registration open, sign up now!

Apache 10th anniversary logo

The early-bird special ends on August 14, so you'd better get moving.

Sign up for ApacheCon US by 14 August and save up to $500!

This year's ApacheCon US promises to deliver our most extensive program to date, and largest anticipated gathering of the global Apache community to celebrate the ASF's milestone 10th Anniversary. The San Francisco Bay Area is where the very first ASF official user conference was held, and we hope that you will join us in celebrating the ASF's success!

Apache members, code contributors, users, developers, system administrators, business managers, service providers, and vendors will convene 2-6 November in Oakland, California, for a week of training, presentations, sharing and hacking. ApacheCon US 2009 features new content tracks, MeetUps, and GetTogethers, as well as a number of events open to the public free of charge, such as the Hackathon and 2-day BarCampApache, in appreciation of their support over the past decade.

Be sure to register by 14 August to save up to $500! To sign up, visit http://www.us.apachecon.com

I'll be there and speaking on the topic of What's New in Roller 5.0. I also plan to attend the Social and Widgets Meetup with folks from Shindig, SocialSite and Wookie. I hope to see you there.


Social data flow

Every time I find something that I want to share with others online, I have to think about how I want to share and whom I want to share it with. Perhaps I've created too much complexity for myself. This diagram below illustrates the situation. It's my social data flow diagram. [Read More]

BarCampRDU

barcamprdu logo

As you might know, I'm involved with organizing BarCampRDU again this year, doing the sponsor-wrangling and attendee registration duties. It's been a lot easier and stress-free than last year because I've been through it once before and so has most of the committee. No matter the stress-level, the end-result is well worth the effort.

Wrangling sponsors was surprisingly easy, even with a bad economy. Basically, all I have to do is chase 'em down, convince them to sponsor, make sure they pay and then ensure that they're recognized on the blog, t-shirt, signage and during the event. Event registration was easy too as we used Eventbrite, which is free for free events like BarCampRDU. My only complaint is there's no automated way for an attendee to cancel a ticket and no automated way to do a waiting-list.

Most of the remaining work was done by my wife Andi and our friend Alicia Weller. Andi took care of vendor selection and coordination and Alicia took up volunteer coordination and t-shirts. I think you're going to like what Alicia did with the t-shorts; very nice colors this time.

What's a little nerve-wracking about running a BarCamp is the estimations you have to make. Once it's time to order t-shirts, food and drink we have a fixed budget but the number of attendees can vary wildly. Last year, we had 250 registered attendees and only 140 showed up. We can't assume we'll have the same registered/attended ratio this year because we've been sending out a lot more email reminders. Anyhow, long story short: we did our best but if everybody currently registered shows up, some folks are not going to get a t-shirt and a lunch.

At this point, all we can really do is enjoy the show and I'm really looking forward to it. This year, I'm going to pitch a session on OpenSocial. Here's the write-up from the proposed session page:

A quick intro to OpenSocial explaining what it is, how it works and why it matters using these What's up with OpenSocial slides. Then a group discussion.on.

It's just about time to head down to the pre-party at Flying Saucer. I hope to see you there.


Month of blogging

Crammed into one post...

After a month of blog neglect, my automatic Latest Links from my Delicious.com account started to pile up. Back in the glory days of this blog, I blogged about things instead just saving links or tweeting about them. I realized that, by adding some commentary/opinion for each, I could turn a month's worth of links into a month's worth of blog posts and thus gain total absolution for my sin of going a full month without a post. So that's what I did.  [Read More]

SLA

I think can stand behind a Service Level Agreement (SLA) of one blog post per month. Oh look, it's August 1st. I'm done for the month.

;-)

« Previous page | Main | Next page »