Sunday, February 6, 2011

Setting up a Sophisticated (Java) Development Environment - Part 0

I am busy working on a multi-part post for setting up a fairly sophisticated development environment. I will go pretty broad, and the average developer at home will most likely not need a setup like this, but it will still be nice to see what is possible. Your organization on the other hand will most definitely benefit from a setup like this.

For most parts I will focus on getting it right for Java development, but it should be easy enough to adapt to your individual needs.

Currently (on my TODO list) I will be covering at least the following topics:

This will describe how the whole setup should work in an ideal world, which software will interface with what and where, as well as the purpose of the individual pieces of software.

We will cover how to virtualize your development environment, segregating certain pieces into isolation.

Setting up your development IDE
How to set up the Eclipse IDE to interface with the rest of the development infrastructure. This will include the setup of m2eclipse for easy integration with Apache Maven as your build and project management tool. Also, how to set up Atlassian Clover or Cobertura for code-coverage reports. Will also cover Mylyn integration into issue trackers, build servers, etc.

Issue Tracking
How to setup Atlassian JIRA as your issue tracker to help you keep track of what must be done. Also how you can get those JIRA issues to show up right on your IDE workspace for easy access using Mylyn.

Source Code Management
How to set up a Version Control system like Apache Subversion or Git.

Repository Insight and Browsing
See how Atlassian Fisheye can help you keep an eye on your code base.

Source Code Review
Atlassian Crucible to the rescue to help discuss and gather feedback on that difficult-to-implement feature. See how you can get other people to review your code and vice-versa.

Source Code Metrics
How to set up Sonar to help you determine the quality of your source code.

Continuous Integration
This will cover how to set up Continuous Integration with Atlassian Bamboo, Hudson or Jenkins to get your source code built and tested and a regular basis.

Maven Artifact Management
How to setup Sonatype Nexus repository manager to help you keep your maven artifacts in a central location and easily share them with the rest of your team.

How to set up a wiki to maintain the documentation for your project.

Hopefully I will have part 1 up sometime this week.
If there is anything specific that you would like to see covered, please leave a comment.

Also note that although I will be covering a lot of Atlassian products in this series, I am in no way affiliated with them. They just make brilliant products that makes developers lives a lot easier. Oh, most of their products are dirt cheap at US$10 for starter licenses which gets donated to charity anyway. :)