SVN、Eclipse和Java

SVN、Eclipse和Java,java,eclipse,svn,Java,Eclipse,Svn,我只是想知道,设置SVN并将其部署到只包含JSP和类文件的外部服务器的解决方案是什么。在部署时如何清除src文件夹。什么是合适的设置。我只想让多个用户提交工作,包括src文件,但当他们部署到生产服务器上时,我希望文件结构排除我不需要的src文件夹、.project、.classpath等文件。编写一个脚本(我使用ant进行此类java项目)这会将您想要的内容提升/复制到您的生产环境中 <!-- **************** USAGE (DEFAULT) --> <targ

我只是想知道,设置SVN并将其部署到只包含JSP和类文件的外部服务器的解决方案是什么。在部署时如何清除src文件夹。什么是合适的设置。我只想让多个用户提交工作,包括src文件,但当他们部署到生产服务器上时,我希望文件结构排除我不需要的src文件夹、.project、.classpath等文件。

编写一个脚本(我使用ant进行此类java项目)这会将您想要的内容提升/复制到您的生产环境中

<!-- **************** USAGE (DEFAULT) -->
<target name="usage">
    <!-- echo detailed usage instructions here -->
</target>   


<!-- ************************************************** -->
<!-- ******************* WAS 4.0 WORKER TARGETS -->
<target name="init" depends="validenvironment">
    <tstamp/>
    <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>

</target>

<target name="inittomcat">
    <delete dir="tomcatdeploy" />
    <mkdir dir="tomcatdeploy" />
</target>   
<target name="initapache">
    <delete dir="apacheconfig" />
    <mkdir dir="apacheconfig" />
</target>   

<!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
<target name="validenvironment">
    <condition property="valid.environment">
        <or>
            <equals arg1="${penvironment}" arg2="dev" />
            <equals arg1="${penvironment}" arg2="qa" />
            <equals arg1="${penvironment}" arg2="staging" />
            <equals arg1="${penvironment}" arg2="prod" />
        </or>
    </condition>
    <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
</target>

<!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
<target name="validserver">
    <condition property="valid.server">
        <isset property="pserver" />
    </condition>
    <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
</target>

<target name="initwar">
    <delete dir="tmp/war" />
    <mkdir dir="tmp/war" />
    <mkdir dir="tmp/war/WEB-INF" />
    <mkdir dir="tmp/war/WEB-INF/classes" />
    <mkdir dir="tmp/war/WEB-INF/lib" />
    <mkdir dir="tmp/war/tags" />
    <mkdir dir="tmp/war/images" />
    <mkdir dir="tmp/war/javascript" />
    <mkdir dir="tmp/war/html" />
    <mkdir dir="tmp/war/components" />
</target>   

<target name="war" depends="initwar" if="penvironment">
    <echo>Compiling source files...</echo>

    <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
        <property name="penvironment" value="${penvironment}" />
    </ant>

    <echo>Compile done.</echo>

    <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
        <fileset dir="classes/build" includes="**/*.class" /> 
    </copy>
    <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
        <fileset dir="controller" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
        <fileset dir="build" includes="**/*.xsl" /> 
    </copy>
    <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
        <fileset dir="build/lib${penv}" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/html" preservelastmodified="true" >
        <fileset dir="html" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/components" preservelastmodified="true" >
        <fileset dir="components" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/" preservelastmodified="true" >
        <fileset dir="root" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/pages" preservelastmodified="true" >
        <fileset dir="pages" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/tags" preservelastmodified="true" >
        <fileset dir="tags" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/images" preservelastmodified="true" >
        <fileset dir="images" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/javascript" preservelastmodified="true" >
        <fileset dir="javascript" includes="**/*.*" /> 
    </copy>

    <!-- copy the web.xml for the target environment into the temp war directory -->
    <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
    </copy>
    <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
    <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
    <replace
        file="tmp/war/WEB-INF/web.xml"
        propertyFile="config/${penvironment}.properties">
        <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
    </replace>

    <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
    </copy>
    <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
    <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
    <replace
        encoding="ISO-8859-1"
        file="tmp/war/WEB-INF/application.properties"
        propertyFile="build/${penvironment}.properties">
        <replacefilter token="%%HOSTNAME%%" property="hostname" />
        <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
        <replacefilter token="%%LOGFILE%%"  property="logfile" />
        <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
        <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
        <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
        <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
        <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
        <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
        <replacefilter token="%%LDAPPORT%%" property="ldapport" />
        <replacefilter token="%%LDAPVER%%"  property="ldapver" />
        <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
        <replacefilter token="%%LDAPPW%%"   property="ldappw" />
        <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
        <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
        <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />

    </replace>      

    <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
    </copy>

    <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
        <fileset dir="config/bundle" includes="**/*.*" /> 
    </copy>

    <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
    <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
</target>

<target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
    <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
    <delete>
        <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
    </delete>
    <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
        <fileset dir="tomcat/6.x" includes="**/*.*" /> 
    </copy>
    <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
    <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
    <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
        <fileset dir="tmp/war" includes="**/*.*" /> 
    </copy>

    <!-- now copy the tomcat config files -->
    <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
    </copy>
    <!-- now replace all variables in context.xml -->
    <replace 
        encoding="ISO-8859-1"
        file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
        token="%%JDBCNAME%%" value="${context.jdbcname}" />
    <replace
        encoding="ISO-8859-1"
        file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
        token="%%JDBCUSER%%" value="${context.jdbcuser}" />
    <replace
        encoding="ISO-8859-1"
        file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
        token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
    <replace
        encoding="ISO-8859-1"
        file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
        token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
    <replace 
        encoding="ISO-8859-1"
        file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
        token="%%JDBCURL%%" value="${context.jdbcurl}" />
    <!-- now replace all variables / ports in server.xml -->
    <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
    </copy>
    <!-- deleted for this example -->

    <!-- END replace all variables / ports in server.xml -->
    <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
    <replace
        encoding="ISO-8859-1"
        file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
        propertyFile="/config/${penvironment}.properties">
        <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
    </replace>
    <replace
        encoding="ISO-8859-1"
        file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
        propertyFile="/config/${penvironment}.properties">
        <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
    </replace>
</target>

<target name="deployfullapplication" depends="validenvironment,validserver" >
    <antcall target="deploytomcat" />
    <antcall target="deployapacheconfig" />
    <antcall target="restartapache" />
</target>

<target name="deploytomcat" depends="buildtomcat" >

    <!-- zip the tomcatdeploy directoyr up -->
    <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
    <!-- now scp to the server -->
    <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
    <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
    </scp>      

    <!-- now kill existing process on the server -->
        <antcall target="stoptomcat" />
    <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
        <antcall target="archivetomcat" />
    <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
        <antcall target="unzipremotetomcat" />
    <!-- now start the application -->
        <antcall target="starttomcat" />
    <!-- cool. thats it. good job. -->

    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>

<target name="restarttomcat" depends="validenvironment,validserver" >
    <antcall target="stoptomcat"/>
    <antcall target="starttomcat"/>
</target>

<target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>

<target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>

<target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>

<target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>

<target name="killtomcatprocessonecall" depends="validenvironment,validserver">
    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>


<target name="restartapache" depends="validenvironment,validserver" >
    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>

<target name="deployapacheconfig"  depends="configapache,validserver">
    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>

<target name="configapache" if="penv"  depends="init,validenvironment">
    <mkdir dir="tmp/apacheconfig" />
    <mkdir dir="tmp/apacheconfig/vhosts.d" />
    <mkdir dir="tmp/apacheconfig/ssl.crt" />
    <mkdir dir="tmp/apacheconfig/ssl.key" />
    <mkdir dir="tmp/apacheconfig/extra" />
    <mkdir dir="tmp/apacheconfig/passwords" />

    <echo>Copying http base config files...</echo>
    <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />

    <echo>http only replace in http config file...</echo>
    <replace
        encoding="ISO-8859-1"
        file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
        propertyFile="config/${penvironment}.properties">
        <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
        <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
        <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
        <replacefilter token="%%ROOT%%"     property="httpd.root" />
        <replacefilter token="%%HOSTIP%%"   value="*" />
        <replacefilter token="%%PORT%%"     value="80" />
        <replacefilter token="%%PROTOCOL%%" value="http" />
        <replacefilter token="%%SSL%%"      value="off" />
        <replacefilter token="%%SSLCERT%%"  value="" />
        <replacefilter token="%%SSLKEY%%"   value="" />
        <replacefilter token="%%SSLCACERT%%"    value="" />
        <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
        <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
        <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
        <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
    </replace>
    <condition property="dossl">
        <and>
            <isset property="${penvironment}.ssl.ip" />
        </and>
    </condition>

    <antcall target="apachessl" />

</target>

<target name="apachessl" if="dossl">

    <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />

    <echo>https only replace in https config file...</echo>
    <replace
        encoding="ISO-8859-1"
        file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
        propertyFile="config/${penvironment}.properties">
        <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
        <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
        <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
        <replacefilter token="%%ROOT%%"     property="httpd.root" />
        <replacefilter token="%%PORT%%"     value="443" />
        <replacefilter token="%%PROTOCOL%%" value="https" />
        <replacefilter token="%%SSL%%"      property="httpd.ssl" />
        <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
        <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
        <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
        <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
        <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
        <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
        <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
        <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
    </replace>
    <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
    <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
    <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
    <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
</target>
在我的例子中,ant脚本:

<!-- **************** USAGE (DEFAULT) -->
<target name="usage">
    <!-- echo detailed usage instructions here -->
</target>   


<!-- ************************************************** -->
<!-- ******************* WAS 4.0 WORKER TARGETS -->
<target name="init" depends="validenvironment">
    <tstamp/>
    <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>

</target>

<target name="inittomcat">
    <delete dir="tomcatdeploy" />
    <mkdir dir="tomcatdeploy" />
</target>   
<target name="initapache">
    <delete dir="apacheconfig" />
    <mkdir dir="apacheconfig" />
</target>   

<!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
<target name="validenvironment">
    <condition property="valid.environment">
        <or>
            <equals arg1="${penvironment}" arg2="dev" />
            <equals arg1="${penvironment}" arg2="qa" />
            <equals arg1="${penvironment}" arg2="staging" />
            <equals arg1="${penvironment}" arg2="prod" />
        </or>
    </condition>
    <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
</target>

<!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
<target name="validserver">
    <condition property="valid.server">
        <isset property="pserver" />
    </condition>
    <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
</target>

<target name="initwar">
    <delete dir="tmp/war" />
    <mkdir dir="tmp/war" />
    <mkdir dir="tmp/war/WEB-INF" />
    <mkdir dir="tmp/war/WEB-INF/classes" />
    <mkdir dir="tmp/war/WEB-INF/lib" />
    <mkdir dir="tmp/war/tags" />
    <mkdir dir="tmp/war/images" />
    <mkdir dir="tmp/war/javascript" />
    <mkdir dir="tmp/war/html" />
    <mkdir dir="tmp/war/components" />
</target>   

<target name="war" depends="initwar" if="penvironment">
    <echo>Compiling source files...</echo>

    <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
        <property name="penvironment" value="${penvironment}" />
    </ant>

    <echo>Compile done.</echo>

    <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
        <fileset dir="classes/build" includes="**/*.class" /> 
    </copy>
    <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
        <fileset dir="controller" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
        <fileset dir="build" includes="**/*.xsl" /> 
    </copy>
    <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
        <fileset dir="build/lib${penv}" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/html" preservelastmodified="true" >
        <fileset dir="html" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/components" preservelastmodified="true" >
        <fileset dir="components" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/" preservelastmodified="true" >
        <fileset dir="root" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/pages" preservelastmodified="true" >
        <fileset dir="pages" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/tags" preservelastmodified="true" >
        <fileset dir="tags" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/images" preservelastmodified="true" >
        <fileset dir="images" includes="**/*.*" /> 
    </copy>
    <copy todir="tmp/war/javascript" preservelastmodified="true" >
        <fileset dir="javascript" includes="**/*.*" /> 
    </copy>

    <!-- copy the web.xml for the target environment into the temp war directory -->
    <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
    </copy>
    <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
    <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
    <replace
        file="tmp/war/WEB-INF/web.xml"
        propertyFile="config/${penvironment}.properties">
        <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
    </replace>

    <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
    </copy>
    <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
    <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
    <replace
        encoding="ISO-8859-1"
        file="tmp/war/WEB-INF/application.properties"
        propertyFile="build/${penvironment}.properties">
        <replacefilter token="%%HOSTNAME%%" property="hostname" />
        <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
        <replacefilter token="%%LOGFILE%%"  property="logfile" />
        <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
        <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
        <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
        <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
        <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
        <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
        <replacefilter token="%%LDAPPORT%%" property="ldapport" />
        <replacefilter token="%%LDAPVER%%"  property="ldapver" />
        <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
        <replacefilter token="%%LDAPPW%%"   property="ldappw" />
        <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
        <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
        <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />

    </replace>      

    <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
    </copy>

    <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
        <fileset dir="config/bundle" includes="**/*.*" /> 
    </copy>

    <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
    <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
</target>

<target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
    <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
    <delete>
        <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
    </delete>
    <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
        <fileset dir="tomcat/6.x" includes="**/*.*" /> 
    </copy>
    <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
    <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
    <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
        <fileset dir="tmp/war" includes="**/*.*" /> 
    </copy>

    <!-- now copy the tomcat config files -->
    <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
    </copy>
    <!-- now replace all variables in context.xml -->
    <replace 
        encoding="ISO-8859-1"
        file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
        token="%%JDBCNAME%%" value="${context.jdbcname}" />
    <replace
        encoding="ISO-8859-1"
        file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
        token="%%JDBCUSER%%" value="${context.jdbcuser}" />
    <replace
        encoding="ISO-8859-1"
        file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
        token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
    <replace
        encoding="ISO-8859-1"
        file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
        token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
    <replace 
        encoding="ISO-8859-1"
        file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
        token="%%JDBCURL%%" value="${context.jdbcurl}" />
    <!-- now replace all variables / ports in server.xml -->
    <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
    </copy>
    <!-- deleted for this example -->

    <!-- END replace all variables / ports in server.xml -->
    <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
    <replace
        encoding="ISO-8859-1"
        file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
        propertyFile="/config/${penvironment}.properties">
        <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
    </replace>
    <replace
        encoding="ISO-8859-1"
        file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
        propertyFile="/config/${penvironment}.properties">
        <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
    </replace>
</target>

<target name="deployfullapplication" depends="validenvironment,validserver" >
    <antcall target="deploytomcat" />
    <antcall target="deployapacheconfig" />
    <antcall target="restartapache" />
</target>

<target name="deploytomcat" depends="buildtomcat" >

    <!-- zip the tomcatdeploy directoyr up -->
    <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
    <!-- now scp to the server -->
    <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
    <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
    </scp>      

    <!-- now kill existing process on the server -->
        <antcall target="stoptomcat" />
    <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
        <antcall target="archivetomcat" />
    <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
        <antcall target="unzipremotetomcat" />
    <!-- now start the application -->
        <antcall target="starttomcat" />
    <!-- cool. thats it. good job. -->

    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>

<target name="restarttomcat" depends="validenvironment,validserver" >
    <antcall target="stoptomcat"/>
    <antcall target="starttomcat"/>
</target>

<target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>

<target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>

<target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>

<target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>

<target name="killtomcatprocessonecall" depends="validenvironment,validserver">
    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>


<target name="restartapache" depends="validenvironment,validserver" >
    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>

<target name="deployapacheconfig"  depends="configapache,validserver">
    <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
</target>

<target name="configapache" if="penv"  depends="init,validenvironment">
    <mkdir dir="tmp/apacheconfig" />
    <mkdir dir="tmp/apacheconfig/vhosts.d" />
    <mkdir dir="tmp/apacheconfig/ssl.crt" />
    <mkdir dir="tmp/apacheconfig/ssl.key" />
    <mkdir dir="tmp/apacheconfig/extra" />
    <mkdir dir="tmp/apacheconfig/passwords" />

    <echo>Copying http base config files...</echo>
    <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />

    <echo>http only replace in http config file...</echo>
    <replace
        encoding="ISO-8859-1"
        file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
        propertyFile="config/${penvironment}.properties">
        <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
        <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
        <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
        <replacefilter token="%%ROOT%%"     property="httpd.root" />
        <replacefilter token="%%HOSTIP%%"   value="*" />
        <replacefilter token="%%PORT%%"     value="80" />
        <replacefilter token="%%PROTOCOL%%" value="http" />
        <replacefilter token="%%SSL%%"      value="off" />
        <replacefilter token="%%SSLCERT%%"  value="" />
        <replacefilter token="%%SSLKEY%%"   value="" />
        <replacefilter token="%%SSLCACERT%%"    value="" />
        <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
        <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
        <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
        <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
    </replace>
    <condition property="dossl">
        <and>
            <isset property="${penvironment}.ssl.ip" />
        </and>
    </condition>

    <antcall target="apachessl" />

</target>

<target name="apachessl" if="dossl">

    <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />

    <echo>https only replace in https config file...</echo>
    <replace
        encoding="ISO-8859-1"
        file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
        propertyFile="config/${penvironment}.properties">
        <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
        <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
        <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
        <replacefilter token="%%ROOT%%"     property="httpd.root" />
        <replacefilter token="%%PORT%%"     value="443" />
        <replacefilter token="%%PROTOCOL%%" value="https" />
        <replacefilter token="%%SSL%%"      property="httpd.ssl" />
        <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
        <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
        <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
        <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
        <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
        <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
        <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
        <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
    </replace>
    <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
    <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
    <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
    <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
</target>
  • 创建一个tmp目录
  • 将源目录树中的特定文件复制到新的文件结构中(通常与源目录完全相同,只是不在源文件夹中,并且不包括.svn和我不想要的其他文件(.java文件,而不是.class文件或jar等)
  • 编译并存储所需的内容
  • 是否在配置文件中搜索/替换(以允许部署到可能不同的暂存、开发、qa或生产环境)
  • 如果是远程的,则将整个过程打包并复制(scp)到目标服务器
  • 停止任何正在运行的现有应用程序
  • 解压缩新版本
  • 启动新应用程序
  • 在一些项目中,我可以选择上传刚刚更改的文件,而不是重新部署整个应用程序,但这是一个设计选择,你可以自己选择。对于我所从事的大型项目,我会为每次更新部署整个项目,而不是将单个文件/更改复制到服务器。这样我可以确保构建过程和生产环境的完整性,不必担心随机文件可能与项目的其余部分不同步

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    一般来说,除了简单的项目之外,您还需要一个真正的生成/构建环境……您必须自己编写

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    蚂蚁

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    马文

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    shell脚本

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    制造

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    所有这些都是可能的解决办法

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    
    

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    
    ${ant.project.name}的生成从${TSTAMP}在${TODAY}上开始
    正在编译源文件。。。
    编译完成。
    将web.xml文件中的所有属性替换为${penvironment}.properties中的值
    将crm.properties文件中的所有属性替换为${penvironment}.properties中的值
    正在将“tmp/${penvironment}.zip”复制到“${webuser}@${pserver}:/opt/www”
    正在复制http基本配置文件。。。
    http配置文件中的http仅替换。。。
    https配置文件中仅替换https。。。
    

    编写一个脚本(我将ant用于此类java项目),将您想要的内容升级/复制到您的生产环境中

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    在我的例子中,ant脚本:

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
  • 创建一个tmp目录
  • 将源目录树中的特定文件复制到新的文件结构中(通常与源目录完全相同,只是不在源文件夹中,并且不包括.svn和我不想要的其他文件(.java文件,而不是.class文件或jar等)
  • 编译并存储所需的内容
  • 是否在配置文件中搜索/替换(以允许部署到可能不同的暂存、开发、qa或生产环境)
  • 如果是远程的,则将整个过程打包并复制(scp)到目标服务器
  • 停止任何正在运行的现有应用程序
  • 解压缩新版本
  • 启动新应用程序
  • 在一些项目中,我可以选择上传刚刚更改的文件,而不是重新部署整个应用程序,但这是一个设计选择,你可以自己选择。对于我所从事的大型项目,我会为每次更新部署整个项目,而不是将单个文件/更改复制到服务器。这样我可以确保构建过程和生产环境的完整性,不必担心随机文件可能与项目的其余部分不同步

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    一般来说,除了简单的项目之外,您还需要一个真正的生成/构建环境……您必须自己编写

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    蚂蚁

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    马文

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    shell脚本

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    制造

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    所有这些都是可能的解决办法

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    
    

    <!-- **************** USAGE (DEFAULT) -->
    <target name="usage">
        <!-- echo detailed usage instructions here -->
    </target>   
    
    
    <!-- ************************************************** -->
    <!-- ******************* WAS 4.0 WORKER TARGETS -->
    <target name="init" depends="validenvironment">
        <tstamp/>
        <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo>
    
    </target>
    
    <target name="inittomcat">
        <delete dir="tomcatdeploy" />
        <mkdir dir="tomcatdeploy" />
    </target>   
    <target name="initapache">
        <delete dir="apacheconfig" />
        <mkdir dir="apacheconfig" />
    </target>   
    
    <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list -->
    <target name="validenvironment">
        <condition property="valid.environment">
            <or>
                <equals arg1="${penvironment}" arg2="dev" />
                <equals arg1="${penvironment}" arg2="qa" />
                <equals arg1="${penvironment}" arg2="staging" />
                <equals arg1="${penvironment}" arg2="prod" />
            </or>
        </condition>
        <fail message="Invalid target ${penvironment}."  unless="valid.environment" />
    </target>
    
    <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values -->
    <target name="validserver">
        <condition property="valid.server">
            <isset property="pserver" />
        </condition>
        <fail message="Invalid server ${pserver}. You must specifiy a server for this target."  unless="valid.server" />
    </target>
    
    <target name="initwar">
        <delete dir="tmp/war" />
        <mkdir dir="tmp/war" />
        <mkdir dir="tmp/war/WEB-INF" />
        <mkdir dir="tmp/war/WEB-INF/classes" />
        <mkdir dir="tmp/war/WEB-INF/lib" />
        <mkdir dir="tmp/war/tags" />
        <mkdir dir="tmp/war/images" />
        <mkdir dir="tmp/war/javascript" />
        <mkdir dir="tmp/war/html" />
        <mkdir dir="tmp/war/components" />
    </target>   
    
    <target name="war" depends="initwar" if="penvironment">
        <echo>Compiling source files...</echo>
    
        <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" >
            <property name="penvironment" value="${penvironment}" />
        </ant>
    
        <echo>Compile done.</echo>
    
        <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" >
            <fileset dir="classes/build" includes="**/*.class" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" >
            <fileset dir="controller" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="build" includes="**/*.xsl" /> 
        </copy>
        <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" >
            <fileset dir="build/lib${penv}" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/html" preservelastmodified="true" >
            <fileset dir="html" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/components" preservelastmodified="true" >
            <fileset dir="components" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/" preservelastmodified="true" >
            <fileset dir="root" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/pages" preservelastmodified="true" >
            <fileset dir="pages" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/tags" preservelastmodified="true" >
            <fileset dir="tags" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/images" preservelastmodified="true" >
            <fileset dir="images" includes="**/*.*" /> 
        </copy>
        <copy todir="tmp/war/javascript" preservelastmodified="true" >
            <fileset dir="javascript" includes="**/*.*" /> 
        </copy>
    
        <!-- copy the web.xml for the target environment into the temp war directory -->
        <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo>
        <replace
            file="tmp/war/WEB-INF/web.xml"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" />
        </replace>
    
        <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" >
        </copy>
        <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties -->
        <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/war/WEB-INF/application.properties"
            propertyFile="build/${penvironment}.properties">
            <replacefilter token="%%HOSTNAME%%" property="hostname" />
            <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" />
            <replacefilter token="%%LOGFILE%%"  property="logfile" />
            <replacefilter token="%%LOGLEVEL%%" property="loglevel" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="defaultpage" />
            <replacefilter token="%%MAILSERVER%%"   property="mailserver" />
            <replacefilter token="%%SUPPORTEDLANGUAGES%%"   property="supportedlanguages" />
            <replacefilter token="%%LDAPHOST%%" property="ldaphost" />
            <replacefilter token="%%LDAPHOSTBACKUP%%"   property="ldaphostbackup" />
            <replacefilter token="%%LDAPPORT%%" property="ldapport" />
            <replacefilter token="%%LDAPVER%%"  property="ldapver" />
            <replacefilter token="%%LDAPDC%%"   property="ldapdc" />
            <replacefilter token="%%LDAPPW%%"   property="ldappw" />
            <replacefilter token="%%LDAPUSERDC%%"   property="ldapuserdc" />
            <replacefilter token="%%LDAPSEARCH%%"   property="ldapsearch" />
            <replacefilter token="%%DATASCHEMA%%"  property="dataschema" />
    
        </replace>      
    
        <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" >
        </copy>
    
        <copy todir="tmp/war/WEB-INF" preservelastmodified="true" >
            <fileset dir="config/bundle" includes="**/*.*" /> 
        </copy>
    
        <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory-->
        <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war"  -->
    </target>
    
    <target name="buildtomcat"  depends="war,inittomcat,validenvironment" if="penvironment">        
        <mkdir dir="tmp/tomcatdeploy/${penvironment}" />
        <delete>
            <fileset dir="tomcat/6.x/logs" includes="**/*.log"/>
        </delete>
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" >
            <fileset dir="tomcat/6.x" includes="**/*.*" /> 
        </copy>
        <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" />
        <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" />
        <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" >
            <fileset dir="tmp/war" includes="**/*.*" /> 
        </copy>
    
        <!-- now copy the tomcat config files -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" >
        </copy>
        <!-- now replace all variables in context.xml -->
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCNAME%%" value="${context.jdbcname}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCUSER%%" value="${context.jdbcuser}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" />
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" />
        <replace 
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml"
            token="%%JDBCURL%%" value="${context.jdbcurl}" />
        <!-- now replace all variables / ports in server.xml -->
        <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" >
        </copy>
        <!-- deleted for this example -->
    
        <!-- END replace all variables / ports in server.xml -->
        <!-- Now, replace CONTEXT in catalina.sh and catalina.bat -->
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
        <replace
            encoding="ISO-8859-1"
            file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat"
            propertyFile="/config/${penvironment}.properties">
            <replacefilter token="%%CONTEXT%%"  property="tomcat.contextroot" />
        </replace>
    </target>
    
    <target name="deployfullapplication" depends="validenvironment,validserver" >
        <antcall target="deploytomcat" />
        <antcall target="deployapacheconfig" />
        <antcall target="restartapache" />
    </target>
    
    <target name="deploytomcat" depends="buildtomcat" >
    
        <!-- zip the tomcatdeploy directoyr up -->
        <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" />
        <!-- now scp to the server -->
        <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo>
        <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true">
        </scp>      
    
        <!-- now kill existing process on the server -->
            <antcall target="stoptomcat" />
        <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} -->
            <antcall target="archivetomcat" />
        <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} -->
            <antcall target="unzipremotetomcat" />
        <!-- now start the application -->
            <antcall target="starttomcat" />
        <!-- cool. thats it. good job. -->
    
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="restarttomcat" depends="validenvironment,validserver" >
        <antcall target="stoptomcat"/>
        <antcall target="starttomcat"/>
    </target>
    
    <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="archivetomcat" if="pserver"  depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="stoptomcat" unless="pnokill"  if="pserver" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="killtomcatprocessonecall" depends="validenvironment,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    
    <target name="restartapache" depends="validenvironment,validserver" >
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="deployapacheconfig"  depends="configapache,validserver">
        <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. -->
    </target>
    
    <target name="configapache" if="penv"  depends="init,validenvironment">
        <mkdir dir="tmp/apacheconfig" />
        <mkdir dir="tmp/apacheconfig/vhosts.d" />
        <mkdir dir="tmp/apacheconfig/ssl.crt" />
        <mkdir dir="tmp/apacheconfig/ssl.key" />
        <mkdir dir="tmp/apacheconfig/extra" />
        <mkdir dir="tmp/apacheconfig/passwords" />
    
        <echo>Copying http base config files...</echo>
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true"  />
    
        <echo>http only replace in http config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%HOSTIP%%"   value="*" />
            <replacefilter token="%%PORT%%"     value="80" />
            <replacefilter token="%%PROTOCOL%%" value="http" />
            <replacefilter token="%%SSL%%"      value="off" />
            <replacefilter token="%%SSLCERT%%"  value="" />
            <replacefilter token="%%SSLKEY%%"   value="" />
            <replacefilter token="%%SSLCACERT%%"    value="" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <condition property="dossl">
            <and>
                <isset property="${penvironment}.ssl.ip" />
            </and>
        </condition>
    
        <antcall target="apachessl" />
    
    </target>
    
    <target name="apachessl" if="dossl">
    
        <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf"  preservelastmodified="true" />
    
        <echo>https only replace in https config file...</echo>
        <replace
            encoding="ISO-8859-1"
            file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf"
            propertyFile="config/${penvironment}.properties">
            <replacefilter token="%%SERVERADMIN%%"  property="httpd.serveradmin" />
            <replacefilter token="%%LOGFILE%%"  property="httpd.logfile" />
            <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" />
            <replacefilter token="%%ROOT%%"     property="httpd.root" />
            <replacefilter token="%%PORT%%"     value="443" />
            <replacefilter token="%%PROTOCOL%%" value="https" />
            <replacefilter token="%%SSL%%"      property="httpd.ssl" />
            <replacefilter token="%%SSLCERT%%"  property="https.sslcert" />
            <replacefilter token="%%SSLKEY%%"   property="https.sslkey" />
            <replacefilter token="%%SSLCACERT%%"    property="https.sslcacert" />
            <replacefilter token="%%CONTEXTROOT%%"  property="tomcat.contextroot" />
            <replacefilter token="%%AJPPORT%%"  property="port.ajp13" />
            <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" />
            <replacefilter token="%%DEFAULTPAGE%%"  property="http.defaultpage" />
            <replacefilter token="%%ERRORPAGE%%"    property="http.errorpage" />
        </replace>
        <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true"  />
        <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true"  />
    </target>
    
    
    ${ant.project.name}的生成从${TSTAMP}在${TODAY}上开始