Tuesday, August 7, 2007

Seamless Source Code Managment

Lets address source code organization and synchronization of teams. Everyone wants to have a standard environment when developing applications in groups. Really in my experience, it's critical. Honestly this is one thing that is really easy to do AND costs larger teams millions of dollars and jeopardizes deadlines .

Apache maven + SVN is great for keeping environments synchronized and for painless deployment of applications. SVN is great for source control and maven for build management and deployment builds. Mavens real strengths over ANT is dynamic dependency compilation and managing compatible versions.

but before we get into that lets start with a few standards. Here's what I use for my primary development environment:

Ubuntu 7.04
Eclipse 3.3
Jboss 4.0 (Via GEMS installer)
Seam 1.2.1GA

Server Software Configuration

The following is where each of these server components would be installed on a server. Not that they would all be running at the same time. In each of these instances the final element of the path. Bare in mind this is for setting paths on linux. For win32 users it's all done in the control panel's "system" applet . Just look under the Advanced tab you can create these variables in the user environment box at the top of the tab panel.

is a symbolic link to the actual installation. ex: /development/servers/tomcat is a symbolic link (ln -s) to: /development/servers/apache-tomcat-6.0.13. This is so that we can up grade versions and roll back just by changing the symbolic link on the fly.

The directory roots are:

The SDKs directory is for different Java distros , Jruby or Python

This is where we locate our server software like Resin, Apache, Jboss etc etc .. Always in this directory so we know the
deployment standards. Nothing is worse than wasting hours working on the wrong files or checking out old versions

The tools directory is for build, testing and management tools. SVN (while technically a server), CSV, Maven, ANT and Junit etc

All other libs, hibernate, Seam , Spring, apache commons , flavor of the day.

We declare the environment variables in the /etc/profile that loads at system initialization. we will use the following convention:







PATH=$PATH:$ANT_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin.......... etc etc

-- Richard Corsale