libreccm-legacy/tools-ng/ecdc/scriptlib/build-ccm.xml

305 lines
14 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- Purpose:
ANT script to perform the various administration and maintenance tasks,
i.e.:
- Various LOAD steps to load the database
most prominent: load-bundle
- UPGRADE tasks to run SQL upgrade scripts
- RUN-CCM task to run various CLI utility classes
-->
<!-- Already definded:
ccm.project.dir: base dir of the development project
app.server.bundles.zip name of the installation file
app.server.parent.dir name of the dir to install the server into
app.server.home.dir dir the server is installed into (i.e. CATALINA_HOME)
app.server.deploy.dir dir the server is installed into (i.e. CATALINA_BASE)
app.server.conf.dir name of the servers configuration dir
app.server.webapp.dir distribution dir for web applications -->
<project name="load">
<target name="load-bundle" depends="prepare-load">
<echo>Loading bundle from ${this.bundle.folder} into ${ccmhome}</echo>
<java classname="com.arsdigita.packaging.MasterTool" fork="true">
<classpath refid="ccm.classpath" />
<sysproperty key="ccm.home" value="${ccmhome}" />
<arg line="load --packagekeys-file ${this.bundle.folder}/cfg/package-key.list --parameter-file ${this.bundle.folder}/cfg/integration.properties" />
<jvmarg value="${app.server.debugger}" />
</java>
</target>
<target name="load-bundle-interactive" depends="prepare-load">
<echo>Loading bundle ${this.bundle.folder} interactively into ${ccmhome}</echo>
<java classname="com.arsdigita.packaging.MasterTool" fork="true">
<classpath refid="ccm.classpath" />
<sysproperty key="ccm.home" value="${ccmhome}" />
<arg line="load --packagekeys-file ${this.bundle.folder}/cfg/package-key.list --interactive --parameter-file ${this.bundle.folder}/cfg/integration.properties" />
<jvmarg value="${app.server.debugger}" />
</java>
</target>
<target name="load-bundle-config" depends="prepare-load">
<echo>Registers configuration from ${this.bundle.folder} for ${applications} into registry</echo>
<java classname="com.arsdigita.packaging.MasterTool"
classpathref="ccm.classpath" fork="true">
<sysproperty key="ccm.home" value="${ccmhome}" />
<arg line="load ${applications} --config --parameter-file ${this.bundle.folder}/cfg/integration.properties" />
<jvmarg value="${app.server.debugger}" />
</java>
</target>
<target name="load-bundle-config-interactive" depends="prepare-load">
<echo>Registers configuration from ${this.bundle.folder} for ${applications} into registry, aksing interactivly for values.</echo>
<java classname="com.arsdigita.packaging.MasterTool"
classpathref="ccm.classpath" fork="true" >
<sysproperty key="ccm.home" value="${ccmhome}" />
<arg line="load ${applications} --config --interactive --parameter-file ${this.bundle.folder}/cfg/integration.properties" />
<jvmarg value="${app.server.debugger}" />
</java>
</target>
<target name="load" depends="prepare-load">
<echo>load ${applications} without further configuration specifications but using build in defaults.</echo>
<java classname="com.arsdigita.packaging.MasterTool"
classpathref="ccm.classpath" fork="true">
<sysproperty key="ccm.home" value="${ccmhome}" />
<!--
<sysproperty key="log4j.configuration"
value="file:runtime/${app.server.bundles.name}/conf/log4j.xml" />
<sysproperty key="java.protocol.handler.pkgs"
value="${java.protocol.handler.pkgs}" />
-->
<arg line="load ${applications} " />
<jvmarg value="${app.server.debugger}" />
</java>
</target>
<target name="load-schema" depends="prepare-load">
<echo>load schema only for ${applications} </echo>
<echo>load --data ${applications}</echo>
<java classname="com.arsdigita.packaging.MasterTool"
classpathref="ccm.classpath" fork="true">
<sysproperty key="ccm.home" value="${ccmhome}" />
<arg line="load --data ${applications}" />
<jvmarg value="${app.server.debugger}" />
</java>
</target>
<target name="load-data" depends="prepare-load">
<echo>load data only for ${applications} </echo>
<echo>load --data ${applications}</echo>
<java classname="com.arsdigita.packaging.MasterTool"
classpathref="ccm.classpath" fork="true">
<sysproperty key="ccm.home" value="${ccmhome}" />
<arg line="load --data ${applications}" />
<jvmarg value="${app.server.debugger}" />
</java>
</target>
<target name="load-init" depends="prepare-load">
<echo>load initializers for ${applications} (--init )</echo>
<java classname="com.arsdigita.packaging.MasterTool"
classpathref="ccm.classpath" fork="true">
<sysproperty key="ccm.home" value="${ccmhome}" />
<arg line="load --schema ${applications}" />
<jvmarg value="${app.server.debugger}" />
</java>
</target>
<target name="prepare-load">
<!-- The application context has been determined during configure step
and is available via included build-projects.xml -->
<echo>Application Context: ${this.appContext}</echo>
<property value="${app.server.webapp.dir}/${this.appContext}/WEB-INF/bin/bundle"
name="this.bundle.folder" />
<echo>prepare bundle ${this.bundle.folder}</echo>
<!-- Retrieve list of applications/modules to be installed from
project.xml living in the deployed WEB-INF directory -->
<java classname="org.apache.xalan.xslt.Process" fork="yes"
failonerror="true">
<classpath refid="ccm.tools.classpath"/>
<arg value="-IN"/>
<arg value="${this.bundle.folder}/cfg/project.xml"/>
<arg value="-OUT"/>
<arg value=".tmp.applications.list"/>
<arg value="-XSL"/>
<arg value="${ccm.tools.xsl.dir}/listapps.xsl"/>
<arg value="-TEXT"/>
</java>
<loadfile property="applications" srcFile=".tmp.applications.list" />
<delete file=".tmp.applications.list"/>
<property name="ccmhome"
value="${app.server.webapp.dir}/${this.appContext}"/>
<echo>Installation directory: ${ccmhome}</echo>
<tstamp>
<format pattern="yyyymmddhhmmss" property="timestamp" />
</tstamp>
<echo>Included: ${applications}</echo>
<!-- classpath used by command line tools load-bundle, update, ... -->
<path id="ccm.classpath">
<path refid="ccm.tools.classpath"/>
<!-- <pathelement location="runtime/apache-tomcat-6.0.18/webapps/${this.appContext}/WEB-INF/classes"/> -->
<pathelement location="${app.server.webapp.dir}/${this.appContext}/WEB-INF/classes"/>
<!-- <pathelement location="runtime/apache-tomcat-6.0.18/webapps/${this.appContext}/WEB-INF/classes"/> -->
<pathelement location="${this.bundle.folder}/res"/>
<!-- <fileset dir="runtime/apache-tomcat-6.0.18/webapps/${this.appContext}/WEB-INF/lib" includes="**/*.jar" /> -->
<fileset dir="${app.server.webapp.dir}/${this.appContext}/WEB-INF/lib" includes="**/*.jar" />
</path>
<!-- Check configuration of debug option and set property appropriately -->
<if>
<equals arg1="${app.server.debug.on}" arg2="true" />
<then>
<property name="app.server.debugger"
value="-agentlib:jdwp=transport=dt_socket,server=y,address=${app.server.debug.port},suspend=${app.server.debug.suspend}" />
</then>
<else>
<!-- dummy value required to start tomcat successfully -->
<property name="app.server.debugger"
value="-showversion" />
</else>
</if>
</target>
<target name="upgrade" depends="prepare-load" description="Upgrade">
<fail message="Configure the package being upgraded using the ccm.upgrade.package property">
<condition>
<or>
<not>
<isset property="ccm.upgrade.package" />
</not>
<equals arg1="ccm-xxx" arg2="${ccm.upgrade.package}" />
</or>
</condition>
</fail>
<fail message="Configure the source version using the ccm.upgrade.from.version property">
<condition>
<or>
<not>
<isset property="ccm.upgrade.from.version" />
</not>
<equals arg1="xxx" arg2="${ccm.upgrade.from.version}" />
<not>
<matches pattern="[0-9]+\.[0-9]+\.[0-9]+" string="${ccm.upgrade.from.version}" />
</not>
</or>
</condition>
</fail>
<fail message="Configure the target version using the ccm.upgrade.to.version property">
<condition>
<or>
<not>
<isset property="ccm.upgrade.to.version" />
</not>
<equals arg1="xxx" arg2="${ccm.upgrade.to.version}" />
<not>
<matches pattern="[0-9]+\.[0-9]+\.[0-9]+" string="${ccm.upgrade.to.version}" />
</not>
</or>
</condition>
</fail>
<echo message="Upgrading ${ccm.upgrade.package} from version ${ccm.upgrade.from.version} to ${ccm.upgrade.to.version}" />
<java classname="com.arsdigita.packaging.MasterTool" fork="yes">
<classpath refid="ccm.classpath" />
<sysproperty key="ccm.home" value="${ccmhome}" />
<arg line="upgrade ${ccm.upgrade.package} --from-version=${ccm.upgrade.from.version} --to-version=${ccm.upgrade.to.version}" />
</java>
</target>
<target name="new-app">
<fail message="Please specify -Dnew.app.name=&lt;name&gt; at the command line">
<condition>
<not>
<isset property="new.app.name" />
</not>
</condition>
</fail>
<echo>Creating new application ${new.app.name}</echo>
<mkdir dir="${new.app.name}" />
<copy todir="${new.app.name}" preservelastmodified="true" verbose="true">
<fileset dir="${ccm.project.dir}/tools-ng/ecdc/templates/new-app">
<exclude name="src/new.app.name.*" />
</fileset>
<filterset>
<filter token="new.app.name" value="${new.app.name}" />
</filterset>
</copy>
<copy tofile="${new.app.name}/src/${new.app.name}.config"
file="${ccm.project.dir}/tools-ng/ecdc/templates/new-app/src/new.app.name.config"
preservelastmodified="true" verbose="true">
<filterset>
<filter token="new.app.name" value="${new.app.name}" />
</filterset>
</copy>
<copy tofile="${new.app.name}/src/${new.app.name}.load"
file="${ccm.project.dir}/tools-ng/ecdc/templates/new-app/src/new.app.name.load"
preservelastmodified="true" verbose="true">
<filterset>
<filter token="new.app.name" value="${new.app.name}" />
</filterset>
</copy>
<copy tofile="${new.app.name}/src/${new.app.name}.upgrade"
file="${ccm.project.dir}/tools-ng/ecdc/templates/new-app/src/new.app.name.upgrade"
preservelastmodified="true" verbose="true">
<filterset>
<filter token="new.app.name" value="${new.app.name}" />
</filterset>
</copy>
</target>
<target name="ccm">
<echo>ccm ${ccm.parameters}</echo>
<java classname="com.arsdigita.packaging.MasterTool" fork="yes">
<classpath>
<path refid="ccm.tools.classpath" />
<pathelement location="${app.server.webapp.dir}/${this.appContext}/WEB-INF/classes" />
<fileset dir="${app.server.webapp.dir}/${this.appContext}/WEB-INF/lib" includes="**/*.jar" />
</classpath>
<sysproperty key="ccm.home" value="${ccmhome}" />
<arg line="${ccm.parameters}" />
</java>
</target>
<target name="ccm-run">
<echo>ccm-run ${ccm.classname} ${ccm.parameters}</echo>
<if>
<equals arg1="${app.server.debug.on}" arg2="true" />
<then>
<property name="app.server.debugger"
value="-agentlib:jdwp=transport=dt_socket,server=y,address=${app.server.debug.port},suspend=${app.server.debug.suspend}" />
</then>
<else>
<!-- dummy value required to start tomcat successfully -->
<property name="app.server.debugger"
value="-showversion" />
</else>
</if>
<java classname="${ccm.classname}" fork="yes">
<classpath>
<path refid="ccm.tools.classpath" />
<pathelement location="${app.server.webapp.dir}/${this.appContext}/WEB-INF/classes" />
<fileset dir="${app.server.webapp.dir}/${this.appContext}/WEB-INF/lib" includes="**/*.jar" />
</classpath>
<sysproperty key="ccm.home" value="${ccmhome}" />
<jvmarg value="${app.server.debugger}" />
<arg line="${ccm.parameters}" />
</java>
</target>
</project>