In un progetto di sviluppo di codice e’ buona regola svincolarsi dall’IDE di programmazione. In particolare se si tratta di linguaggio Java e’ d’uopo provvedere alla creazione di script ant. In questo modo sia ha la completa consapevolezza in fase di deploy di quali classi, file, librerie siano necessarie per un determinato applicativo.
Riporto un esempio di build.xml
<project basedir="." default="" name="app-webapp">
<!-- =============================================================== import properties (app settings, classpath, jar file locations) =============================================================== -->
<property file="build.properties" />
<path id="libraries">
<fileset dir="${lib.dir}/common">
<include name="**/*.jar" />
</fileset>
<fileset dir="${lib.dir}/ext">
<include name="**/*.jar" />
</fileset>
<fileset dir="${lib.dir}/sap">
<include name="**/*.jar" />
</fileset>
<fileset dir="${lib.dir}/xmlbeans">
<include name="**/*.jar" />
</fileset>
<fileset dir="${tomcat.home}/common/lib">
<include name="**/*.jar" />
</fileset>
</path>
<path id="classes">
<fileset dir="${classes.dir}">
<include name="**/*.class" />
</fileset>
</path>
<!-- ==============
compile webapp
============== -->
<target name="compile" depends="clean">
<javac classpathref="libraries" debug="on"
destdir="${web.dir}/WEB-INF/classes" encoding="ISO-8859-1"
source="1.5" srcdir="${src.dir}" target="1.5" >
<include name="it/bla/**/*.java" />
<exclude name="it/bla/**/*.java" />
<!-- serve per evitare di creare un war con i file temporanei -->
<exclude name="**/.#*" />
</javac>
<copy todir="${web.dir}/WEB-INF/classes"
file="${src.dir}/application.properties" />
<copy todir="${web.dir}/WEB-INF/classes"
file="${src.dir}/log4j.properties" />
</target>
<!-- ==============
clean webapp
============== -->
<target name="clean">
<delete includeemptydirs="yes">
<fileset dir="${web.dir}/WEB-INF/classes">
<include name="**/*" />
</fileset>
</delete>
<delete includeemptydirs="yes">
<fileset dir="${web.dir}/WEB-INF/lib">
<include name="**/*" />
</fileset>
</delete>
<delete quiet="true" file="${war.dir}/${war.file.name}.war" />
</target>
<!-- ========== create war used for build a clean war without static environment and cron task. This war is used for deploy into production environments where Apache intercepts static refernces ========== --> <target name="buildWar-prod" depends="compile">
<!-- copia delle lib common -->
<copy todir="${web.dir}/WEB-INF/lib">
<fileset dir="${lib.dir}/common">
<include name="**/*.jar" />
</fileset>
<fileset dir="${lib.dir}/sap">
<include name="**/*.jar" />
</fileset>
<fileset dir="${lib.dir}/xmlbeans">
<include name="**/*.jar" />
</fileset>
</copy>
<!-- copia dei properties per production -->
<copy overwrite="true" todir="${web.dir}/WEB-INF/classes"
file="${cfg.dir}/production/application.properties" />
<copy overwrite="true" todir="${web.dir}/WEB-INF/classes"
file="${cfg.dir}/production/log4j.properties" />
<!-- costruzione del war -->
<jar jarfile="${war.dir}/${war.file.name}.war" basedir="${web.dir}">
<!-- se necessario viene esclusa la parte statica -->
<exclude name="**/htmlTemplate/**" /> <exclude name="**/css/**" /> <exclude name="**/html/**" /> <exclude name="**/img/**" /> <exclude name="**/js/**" /> <exclude name="**/mailTemplates/**" /> <exclude name="**/swf/**" /> <exclude name="**/WEB-INF/classes/bla/bla/**" />
<exclude name="**/.#*" /> </jar> </target>
<!-- =================
deploy war (into localhost environmet)
================= -->
<target name="deployWar-localhost" depends="buildWar-localhost">
<copy overwrite="true" file="${war.dir}/${war.file.name}.war"
todir="${tomcat.home}/webapps" />
</target>
<!-- ===================
undeploy war (from localhost environmet)
=================== -->
<target name="undeployWar-localhost" >
<delete file="${tomcat.home}/webapps/${war.file.name}.war" />
<delete quiet="true" dir="${tomcat.home}/webapps/${war.file.name}" />
</target>