
Ejemplo de un script Ant
Un script Ant se utiliza para realizar varias tareas, tales como crear y desplegar los proyectos de prueba de componentes.
El fragmento de código siguiente muestra el contenido de un scrips Ant de ejemplo:
<!-- Script de prueba de componente de ejemplo para su uso con IBM Business Process Manager -->
<project name="Automated Test Case Run" basedir="." default="run">
<!-- Módulos, bibliotecas y proyectos de prueba que se prueban -->
<property name="module1" value="HelloWorldMediation" />
<property name="module2" value="HelloService" />
<property name="library1" value="HelloWorldLibrary" />
<property name="testproject1" value="HelloWorldTest" />
<!-- Propiedades de servidor -->
<property name="wps.home" value="C:/WID75_WTE/runtimes/bi_v75" />
<property name="wps.username" value="admin" />
<!-- La contraseña del servidor debe expresarse en texto sin formato. Para evitar almacenar la -->
<!-- contraseña del servidor en un script, puede almacenarse en -->
<!-- el archivo soap.client.props. Consulte la opción de contraseña -->
<!-- de la información de consulta del mandato wsadmin: -->
<!-- http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.nd.multiplatform.doc/info/ae/ae/rxml_commandline.html -->
<property name="wps.password" value="admin" />
<property name="wps.node" value="qnode" />
<property name="wps.server" value="server1" />
<!-- Propiedades del repositorio de código fuente -->
<!-- En este ejemplo se utiliza CVS. -->
<property name="cvs.username" value="cvsuser" />
<property name="cvs.password" value="cvspassword" />
<property name="cvs.root" value=":pserver:${cvs.username}:${cvs.password}@cvs:/cvs/repository" />
<property name="cvs.packageroot" value="testProjects" />
<property name="cvs.stream" value="HEAD" />
<!-- Crear y probar propiedades -->
<property name="test.servlet.url" value="http://localhost:9080/HelloWorldTestWeb/TestServlet?username=${wps.username}&password=${wps.password.encoded}" />
<property name="test.output.file" value="${build.output.dir}/TestOutput.xml" />
<property name="build.output.dir" value="C:/BuildOutputDir" />
<property name="build.working.dir" value="C:/BuildWorkingDir" />
<!-- La ubicación del espacio de trabajo puede existir previamente o puede ser el -->
<!-- destino de un extracto de repositorio de código fuente -->
<property name="workspace.dir" value="D:\Workspaces\20100625cvs2/" />
<!-- Contraseña del servidor para el url de servlet de prueba. Puede ser texto sin formato o -->
<!-- estar codificada. Para la codificación de contraseñas, consulte -->
<!-- http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/rsec_propfilepwdencoder.html -->
<property name="wps.password.encoded" value="{xor}PjsyNjE=" />
<!-- Definiciones de tareas Ant -->
<taskdef name="wsStartApplication"
classname="com.ibm.websphere.ant.tasks.StartApplication" />
<taskdef name="wsStartServer"
classname="com.ibm.websphere.ant.tasks.StartServer" />
<taskdef name="wsStopServer"
classname="com.ibm.websphere.ant.tasks.StopServer" />
<taskdef name="wsInstallApp"
classname="com.ibm.websphere.ant.tasks.InstallApplication" />
<taskdef name="servicedeploy"
classname="com.ibm.websphere.ant.tasks.ServiceDeployTask" />
<taskdef name="wsUninstallApp"
classname="com.ibm.websphere.ant.tasks.UninstallApplication" />
<target name="checkout">
<cvs command="export -r ${cvs.stream} -d ${module1}"
package="${cvs.packageroot}/${module1}"
dest="${workspace.dir}"
cvsroot="${cvs.root}"
cvsrsh="ssh"
output="${build.output.dir}/${module1}.extract.log"
quiet="true" />
<cvs command="export -r ${cvs.stream} -d ${module2}"
package="${cvs.packageroot}/${module2}"
dest="${workspace.dir}"
cvsroot="${cvs.root}"
cvsrsh="ssh"
output="${build.output.dir}/${module2}.extract.log"
quiet="true" />
<cvs command="export -r ${cvs.stream} -d ${library1}"
package="${cvs.packageroot}/${library1}"
dest="${workspace.dir}"
cvsroot="${cvs.root}"
cvsrsh="ssh"
output="${build.output.dir}/${library1}.extract.log"
quiet="true" />
<cvs command="export -r ${cvs.stream} -d ${testproject1}"
package="${cvs.packageroot}/${testproject1}"
dest="${workspace.dir}"
cvsroot="${cvs.root}"
cvsrsh="ssh"
output="${build.output.dir}/${testproject1}.extract.log"
quiet="true" />
</target>
<target name="createPI">
<!-- Este destino de ejemplo es aplicable al utilizar CVS como repositorio -->
<!-- de código fuente. La exclusión de **/CVS/** significa que no se incluyen -->
<!-- metadatos CVS en el PI. Si utiliza otro repositorio de código fuente, -->
<!-- cambie o elimine el atributo exclude. -->
<zip basedir="${workspace.dir}"
destfile="${build.output.dir}/${module1}.zip"
includes="${module1}/**/**/*, ${library1}/**/**/*"
excludes="**/CVS/**" />
<zip basedir="${workspace.dir}"
destfile="${build.output.dir}/${module2}.zip"
includes="${module2}/**/**/*, ${library1}/**/**/*"
excludes="**/CVS/**" />
<zip basedir="${workspace.dir}"
destfile="${build.output.dir}/${testproject1}.zip"
includes="${testproject1}/**/**/*"
excludes="**/CVS/**" />
</target>
<target name="generateEAR" depends="createPI">
<!-- El enlace que figura a continuación suministra una descripción detallada de la -->
<!-- tarea serviceDeploy: -->
<!-- http://publib.boulder.ibm.com/infocenter/dmndhelp/v7r0mx/index.jsp?topic=/com.ibm.websphere.wps.doc/doc/tdep_usingant.html -->
<servicedeploy scaModule="${build.output.dir}/${module1}.zip"
workingDirectory="${build.working.dir}"
outputApplication="${build.output.dir}/${module1}.ear"
wasHome="${wps.home}"
cleanStagingModules="true"
keep="true" />
<servicedeploy scaModule="${build.output.dir}/${module2}.zip"
workingDirectory="${build.working.dir}"
outputApplication="${build.output.dir}/${module2}.ear"
wasHome="${wps.home}"
cleanStagingModules="true"
keep="true" />
<servicedeploy scaModule="${build.output.dir}/${testproject1}.zip"
workingDirectory="${build.working.dir}"
outputApplication="${build.output.dir}/${testproject1}.ear"
wasHome="${wps.home}"
cleanStagingModules="true"
keep="true"
ignoreErrors="true" />
</target>
<target name="startServer">
<wsStartServer server="${wps.server}"
logFile="${build.output.dir}/start.log"
trace="false"
failonerror="false" />
</target>
<target name="stopServer">
<wsStopServer server="${wps.server}"
logFile="${build.output.dir}/stop.log"
trace="false"
username="${wps.username}"
password="${wps.password}"
failonerror="false" />
</target>
<target name="deploy" depends="generateEAR">
<!-- Instalar las aplicaciones en el servidor -->
<wsInstallApp ear="${build.output.dir}/${module1}.ear"
user="${wps.username}"
password="${wps.password}"
failonerror="false" />
<wsInstallApp ear="${build.output.dir}/${module2}.ear"
user="${wps.username}"
password="${wps.password}"
failonerror="false" />
<wsInstallApp ear="${build.output.dir}/${testproject1}.ear"
user="${wps.username}"
password="${wps.password}"
failonerror="false" />
<!-- Después de instalar las aplicaciones, deben iniciarse explícitamente -->
<wsStartApplication application="${module1}App"
server="server1"
node="${wps.node}"
user="${wps.username}"
password="${wps.password}" />
<wsStartApplication application="${module2}App"
server="server1"
node="${wps.node}"
user="${wps.username}"
password="${wps.password}" />
<wsStartApplication application="${testproject1}App"
server="server1"
node="${wps.node}"
user="${wps.username}"
password="${wps.password}" />
</target>
<target name="undeploy">
<wsUninstallApp application="${module1}App"
user="${wps.username}"
password="${wps.password}"
failonerror="false" />
<wsUninstallApp application="${module2}App"
user="${wps.username}"
password="${wps.password}"
failonerror="false" />
<wsUninstallApp application="${testproject1}App"
user="${wps.username}"
password="${wps.password}"
failonerror="false" />
</target>
<target name="runTest">
<!-- Ejecutar la prueba utilizando el servlet de proyecto de prueba -->
<get src="${test.servlet.url}" dest="${test.output.file}" />
</target>
<target name="run"
depends="checkout, startServer, deploy, runTest, undeploy, stopServer">
<!-- Visualizar los resultados de la ejecución -->
<loadfile srcFile="${test.output.file}"
property="testoutput" />
<echo message="${testoutput}" />
</target>
</project>