The objective is to make an artifact standalone, without the need to rebuild to deploy to a new environment. Configuration should be externalised (or all stored inside and selected based on an externalised parameter). This can usually be done with JNDI in J2EE (especially for database configurations), but this has a couple of limitations:
- JNDI can be awkward and may not be available outside of the container (though directory-naming can be used)
- some things in the deployment descriptor must be inside the artifact, but need to be different between environments (eg security settings in web.xml and a bunch of weblogic specific files for which the container does not provide external/admin based configuration for).
Some products to consider:
A couple other projects that might be of use are jConfig (http://www.jconfig.org/) for configuration management and SmartFrog for the deployments themselves (http://www.hpl.hp.com/research/smartfrog/)