Here's my problem, I have 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
I am a lazy person, I wants my build script to prompt me which mode I would like to deploy, prior it compile, package and deploy my application. Listed below are the steps to how I achieve that:
- Firstly, I create a folder name "cfg" under project project, I 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:
<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>
- Clean and Build my project, surprise, surprise, Netbean actually popup a nice dialog ask me to enter deploy mode, as shown in figure below:
- That's very nice, but I am lazy person, remember. I don't want to type "production", "local", or "test" each time I want to deploy my application. So, I modified ant script a little bit by inserting a validargs element at the input taks, as show in code below:
<target name="-pre-compile">
<input message="Please enter deploy mode? (production, local, test)->"
validargs="local,production,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>
- Clean and Build my project, Netbean surprise me again, by showing me a popup with a pulldown showing available delopyment modes.
Now, that what I called hidden Easter egg in Netbean..Enjoy!
No comments:
Post a Comment