Ant - Distribuzione di applicazioni
Nel capitolo precedente abbiamo imparato come creare un pacchetto di un'applicazione e distribuirla in una cartella.
In questo capitolo, distribuiremo l'applicazione Web direttamente nella cartella di distribuzione del server delle applicazioni, quindi aggiungeremo alcune destinazioni Ant per avviare e arrestare i servizi. Continuiamo con ilHello Worldapplicazione web fax. Questa è una continuazione del capitolo precedente, i nuovi componenti sono evidenziati inbold.
build.properties
# Ant properties for building the springapp
appserver.home = c:\\install\\apache-tomcat-7.0.19
# for Tomcat 5 use $appserver.home}/server/lib
# for Tomcat 6 use $appserver.home}/lib
appserver.lib = ${appserver.home}/lib
deploy.path = ${appserver.home}/webapps
tomcat.manager.url = http://www.tutorialspoint.com:8080/manager
tomcat.manager.username = tutorialspoint
tomcat.manager.password = secret
build.xml
<?xml version = "1.0"?>
<project name = "fax" basedir = "." default = "usage">
<property file = "build.properties"/>
<property name = "src.dir" value = "src"/>
<property name = "web.dir" value = "war"/>
<property name = "javadoc.dir" value = "doc"/>
<property name = "build.dir" value = "${web.dir}/WEB-INF/classes"/>
<property name = "name" value = "fax"/>
<path id = "master-classpath">
<fileset dir = "${web.dir}/WEB-INF/lib">
<include name = "*.jar"/>
</fileset>
<pathelement path = "${build.dir}"/>
</path>
<target name = "javadoc">
<javadoc packagenames = "faxapp.*" sourcepath = "${src.dir}"
destdir = "doc" version = "true" windowtitle = "Fax Application">
<doctitle><![CDATA[<h1> = Fax Application = </h1>]]></doctitle>
<bottom><![CDATA[Copyright © 2011. All Rights Reserved.]]></bottom>
<group title = "util packages" packages = "faxapp.util.*"/>
<group title = "web packages" packages = "faxapp.web.*"/>
<group title = "data packages" packages = "faxapp.entity.*:faxapp.dao.*"/>
</javadoc>
</target>
<target name = "usage">
<echo message = ""/>
<echo message = "${name} build file"/>
<echo message = "-----------------------------------"/>
<echo message = ""/>
<echo message = "Available targets are:"/>
<echo message = ""/>
<echo message = "deploy --> Deploy application as directory"/>
<echo message = "deploywar --> Deploy application as a WAR file"/>
<echo message = ""/>
</target>
<target name = "build" description = "Compile main source tree java files">
<mkdir dir = "${build.dir}"/>
<javac destdir = "${build.dir}" source = "1.5" target = "1.5" debug = "true"
deprecation = "false" optimize = "false" failonerror = "true">
<src path = "${src.dir}"/>
<classpath refid = "master-classpath"/>
</javac>
</target>
<target name = "deploy" depends = "build" description = "Deploy application">
<copy todir = "${deploy.path}/${name}"
preservelastmodified = "true">
<fileset dir = "${web.dir}">
<include name = "**/*.*"/>
</fileset>
</copy>
</target>
<target name = "deploywar" depends = "build" description =
"Deploy application as a WAR file">
<war destfile = "${name}.war" webxml = "${web.dir}/WEB-INF/web.xml">
<fileset dir = "${web.dir}">
<include name = "**/*.*"/>
</fileset>
</war>
<copy todir = "${deploy.path}" preservelastmodified = "true">
<fileset dir = ".">
<include name = "*.war"/>
</fileset>
</copy>
</target>
<target name = "clean" description = "Clean output directories">
<delete>
<fileset dir = "${build.dir}">
<include name = "**/*.class"/>
</fileset>
</delete>
</target>
<!-- ============================================================ -->
<!-- Tomcat tasks -->
<!-- ============================================================ -->
<path id = "catalina-ant-classpath">
<!-- We need the Catalina jars for Tomcat -->
<!-- * for other app servers - check the docs -->
<fileset dir = "${appserver.lib}">
<include name = "catalina-ant.jar"/>
</fileset>
</path>
<taskdef name = "install" classname = "org.apache.catalina.ant.InstallTask">
<classpath refid = "catalina-ant-classpath"/>
</taskdef>
<taskdef name = "reload" classname = "org.apache.catalina.ant.ReloadTask">
<classpath refid = "catalina-ant-classpath"/>
</taskdef>
<taskdef name = "list" classname = "org.apache.catalina.ant.ListTask">
<classpath refid = "catalina-ant-classpath"/>
</taskdef>
<taskdef name = "start" classname = "org.apache.catalina.ant.StartTask">
<classpath refid = "catalina-ant-classpath"/>
</taskdef>
<taskdef name = "stop" classname = "org.apache.catalina.ant.StopTask">
<classpath refid = "catalina-ant-classpath"/>
</taskdef>
<target name = "reload" description = "Reload application in Tomcat">
<reload url = "${tomcat.manager.url}"username = "${tomcat.manager.username}"
password = "${tomcat.manager.password}" path = "/${name}"/>
</target>
</project>
In questo esempio, abbiamo utilizzato Tomcat come server delle applicazioni. Innanzitutto, nel file delle proprietà di compilazione, abbiamo definito alcune proprietà aggiuntive.
Il appserver.home punta al percorso di installazione del server delle applicazioni Tomcat.
Il appserver.lib punta ai file di libreria nella cartella di installazione di Tomcat.
Il deploy.path variabile ora punta alla cartella webapp in Tomcat.
Le applicazioni in Tomcat possono essere interrotte e avviate utilizzando l'applicazione di gestione Tomcat. L'URL per l'applicazione del gestore, il nome utente e la password sono specificati anche nel file build.properties. Successivamente, dichiariamo un nuovo CLASSPATH che contiene l'estensionecatalina-ant.jar. Questo file jar è necessario per eseguire le attività Tomcat tramite Apache Ant.
Il catalina-ant.jar fornisce le seguenti attività:
Sr.No. | Proprietà e descrizione |
---|---|
1 | InstallTask Installa un'applicazione web. Nome classe: org.apache.catalina.ant.InstallTask |
2 | ReloadTask Ricarica un'applicazione web. Nome classe: org.apache.catalina.ant.ReloadTask |
3 | ListTask Elenca tutte le applicazioni web. Nome classe: org.apache.catalina.ant.ListTask |
4 | StartTask Avvia un'applicazione web. Nome classe: org.apache.catalina.ant.StartTask |
5 | StopTask Arresta un'applicazione web. Nome classe: org.apache.catalina.ant.StopTask |
6 | ReloadTask Ricarica un'applicazione web senza fermarsi. Nome classe: org.apache.catalina.ant.ReloadTask |
L'attività di ricarica richiede i seguenti parametri aggiuntivi:
- URL all'applicazione di gestione
- Nome utente per riavviare l'applicazione web
- Password per riavviare l'applicazione web
- Nome dell'applicazione web da riavviare
Emettiamo il file deploy-warcomando per copiare la webapp nella cartella webapps di Tomcat e quindi ricaricare l'applicazione Web Fax. Il risultato seguente è il risultato dell'esecuzione del file Ant:
C:\>ant deploy-war
Buildfile: C:\build.xml
BUILD SUCCESSFUL
Total time: 6.3 seconds
C:\>ant reload
Buildfile: C:\build.xml
BUILD SUCCESSFUL
Total time: 3.1 seconds
Una volta eseguita l'attività di cui sopra, l'applicazione Web viene distribuita e l'applicazione Web viene ricaricata.