Introduction

This tip will help the user to deploy the projects under different environments on the fly. The following is the scenario.

The user has three set of application configuration files (e.g. project properties, hibernate configuration, log4j properties, and others) setup for three different deployment environments, there are:

  1. Production, my application will be connected to client's Oracle database, and log level set to warning.
  2. Local, HSQLDB running on my local machine will be use, log level set to debug.
  3. Test, for unit testing purpose.

Details

Firstly, the user has to create a folder name "cfg" under project, and then create "production", "local", and "test" folders under the cfg folder.

Put properties files in to respective folder, shown in figure below:

Open build.xml and add in new target, called "-pre-compile", which will prompt user deployment mode, and copy respective properties to src directory prior any compilation, as shown in code below:

Clean and Build my project, surprise, surprise, NetBeans actually popup a nice dialog ask me to enter deploy mode, as shown in figure below:

 <target name="-pre-compile">
            <input message="Please enter deploy mode? (production, local, test)->"
                    addproperty="mode"
                    defaultvalue="local"/>
            <echo message="Copying application configuration file for ${mode} mode"/>
            <copy todir="${src.dir}" overwrite="true">
                <fileset dir="${basedir}/cfg/${mode}"/>
            </copy>
    </target>