You can do this with ANT
build.xml
<?xml version="1.0"?>
<project default="setup-hibernate.cfg.xml" name="TEST" basedir=".">
<property file="${user.home}/build.properties" />
<loadproperties srcfile="build.properties" />
<target name="prompt">
<input message="Database: " addproperty="test.input.dialect" defaultvalue="${test.default.dialect}" validargs="${test.build.dialect.options}" />
</target>
<target name="set_conditions">
<condition property="test.input.dialect" value="${test.default.dialect}">
<not>
<isset property="test.input.dialect" />
</not>
</condition>
<condition property="hibernate.dialect" value="${test.hibernate.dialect.db2}">
<equals arg1="${test.input.dialect}" arg2="db2" casesensitive="false" />
</condition>
<condition property="hibernate.dialect" value="${test.hibernate.dialect.sqlserver}">
<equals arg1="${test.input.dialect}" arg2="sqlserver" casesensitive="false" />
</condition>
<condition property="hibernate.dialect" value="${test.hibernate.dialect.oracle}">
<equals arg1="${test.input.dialect}" arg2="oracle" casesensitive="false" />
</condition>
</target>
<target name="setup-hibernate.cfg.xml" depends="prompt, set_conditions">
<delete dir="build/temp" />
<filter token="hibernateDialect" value="${hibernate.dialect}" />
<mkdir dir="build/temp" />
<copy todir="build/temp" filtering="true">
<fileset dir=".">
<include name="hibernate.cfg.xml" />
</fileset>
</copy>
</target>
</project>
build.properties
# Default Dialect
test.default.dialect=db2
# Available Dialects
test.build.dialect.options=db2,sqlserver,oracle
# Dialect Replacement Strings
test.hibernate.dialect.sqlserver=org.hibernate.dialect.SQLServerDialect
test.hibernate.dialect.db2=org.hibernate.dialect.DB2Dialect
test.hibernate.dialect.oracle=org.hibernate.dialect.Oracle9Dialect
hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?>
<hibernate-configuration>
<session-factory name="TestSessionFactory">
<property name="dialect">@hibernateDialect@</property>
</session-factory>
</hibernate-configuration>
resulting hibernate.cfg.xml if you run the default target and select sqlserver as the input dialect
<?xml version="1.0" encoding="utf-8"?>
<hibernate-configuration>
<session-factory name="TestSessionFactory">
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
</session-factory>
</hibernate-configuration>