1582 lines
74 KiB
XML
Executable File
1582 lines
74 KiB
XML
Executable File
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
|
|
<!-- Template used up to ccm version 6.4 / aplaws 1.0..5 to create the build script. -->
|
|
|
|
<xsl:stylesheet version="1.0"
|
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
xmlns:common="http://exslt.org/common"
|
|
xmlns:xalan="http://xml.apache.org/xslt"
|
|
xmlns:ccm="http://ccm.redhat.com/ccm-project"
|
|
exclude-result-prefixes="ccm common">
|
|
|
|
<xsl:output method="xml"
|
|
encoding="UTF-8"
|
|
indent="yes"
|
|
xalan:indent-amount="4"/>
|
|
|
|
<xsl:template match="ccm:project">
|
|
<xsl:call-template name="CheckDependencies"/>
|
|
<project name="CCM" default="usage" basedir=".">
|
|
<xsl:choose>
|
|
<xsl:when test="/ccm:project/ccm:databases/ccm:database">
|
|
<xsl:call-template name="Main">
|
|
<xsl:with-param name="databases" select="/ccm:project/ccm:databases/ccm:database"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:variable name="defaultdatabases">
|
|
<ccm:database name="postgres"/>
|
|
<ccm:database name="oracle-se"/>
|
|
</xsl:variable>
|
|
<xsl:call-template name="Main">
|
|
<xsl:with-param name="databases" select="common:nodeSet($defaultdatabases)//*"/>
|
|
</xsl:call-template>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</project>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="Main">
|
|
<xsl:param name="databases"/>
|
|
<xsl:call-template name="SharedProperties"/>
|
|
<xsl:call-template name="AppProperties"/>
|
|
<xsl:call-template name="TargetClean"/>
|
|
<xsl:call-template name="TargetBuild">
|
|
<xsl:with-param name="databases" select="$databases"/>
|
|
</xsl:call-template>
|
|
<xsl:call-template name="TargetDeploy"/>
|
|
<xsl:call-template name="TargetJavadoc"/>
|
|
<xsl:call-template name="TargetVerify"/>
|
|
<xsl:call-template name="TargetTest">
|
|
<xsl:with-param name="databases" select="$databases"/>
|
|
</xsl:call-template>
|
|
<xsl:call-template name="TargetMisc"/>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="SharedProperties">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="prettyName" select="@prettyName"/>
|
|
<property environment="env"/>
|
|
<property value="${{env.CATALINA_HOME}}" name="catalina.home.dir"/>
|
|
<property value="${{env.CCM_CONFIG_HOME}}" name="ccm.config.dir"/>
|
|
<property value="${{env.CCM_CONFIG_LIB_DIR}}" name="ccm.config.lib.dir"/>
|
|
<property value="${{env.CCM_HOME}}" name="ccm.home"/>
|
|
<property value="${{env.CCM_SHARED_LIB_DIST_DIR}}" name="shared.lib.dist.dir"/>
|
|
<property value="${{env.CCM_TOOLS_HOME}}" name="ccm.tools.dir"/>
|
|
<property value="${{env.CCM_WEBAPP_DIST_DIR}}" name="webapp.dist.dir"/>
|
|
<property value="ant.properties" name="property.file"/>
|
|
<property file="${{property.file}}"/>
|
|
<property name="app.name" value="{$name}"/>
|
|
<property name="app.prettyname" value="{$prettyName}"/>
|
|
<property value="build" name="build.dir"/>
|
|
<property value="lib" name="lib.dir"/>
|
|
<property value="etc/lib" name="etclib.dir"/>
|
|
<property value="pdl" name="pdl.dir"/>
|
|
<property value="sql" name="sql.dir"/>
|
|
<property value="src" name="src.dir"/>
|
|
<property value="web" name="web.dir"/>
|
|
<property value="ddl" name="ddl.dir"/>
|
|
<property value="bin" name="bin.dir"/>
|
|
<property value="8300" name="test.remote.port"/>
|
|
<property value="false" name="test.sql.verbose"/>
|
|
<property value="true" name="test.sql.continue"/>
|
|
<property value="test" name="test.dir"/>
|
|
<property value="test/sql" name="test.sql.dir"/>
|
|
<property value="test/pdl" name="test.pdl.dir"/>
|
|
<property value="test/src" name="test.src.dir"/>
|
|
<property value="${{build.dir}}/test" name="test.deploy.dir"/>
|
|
<property value="${{build.dir}}/tmp" name="test.tmp.dir"/>
|
|
<property value="${{build.dir}}/src" name="build.src.dir"/>
|
|
<property value="${{build.dir}}/classes" name="build.classes.dir"/>
|
|
<property value="${{build.dir}}/sql" name="build.sql.dir"/>
|
|
<property value="${{build.dir}}/tests" name="build.test.dir"/>
|
|
<property value="${{build.test.dir}}/classes" name="build.test.classes.dir"/>
|
|
<property value="${{build.test.dir}}/sql" name="build.test.sql.dir"/>
|
|
<property value="${{etclib.dir}}" name="javacc.home.dir"/>
|
|
<property value="*Suite.class" name="junit.suite"/>
|
|
<property value="" name="junit.test"/>
|
|
<property value="off" name="junit.haltonfailure"/>
|
|
<property value="off" name="junit.haltonerror"/>
|
|
<property value="false" name="junit.usefail"/>
|
|
<property value="false" name="junit.usecactus"/>
|
|
<property value="plain" name="junit.formatter"/>
|
|
<property value="xml" name="junit.formatter.extension"/>
|
|
<property value="false" name="junit.showoutput"/>
|
|
<property value="com.arsdigita.tools.junit.extensions.CoreInitializer" name="junit.initializer.classname"/>
|
|
<property value="${{build.dir}}/api" name="javadoc.dir"/>
|
|
<property value="${{build.dir}}/api-apps" name="app.javadoc.dir"/>
|
|
<property value="" name="pdl.args"/>
|
|
<property value="on" name="compile.debug"/>
|
|
<property value="on" name="compile.optimize"/>
|
|
<property value="off" name="compile.deprecation"/>
|
|
<property value="off" name="compile.verbose"/>
|
|
<property value="off" name="compile.nowarn"/>
|
|
<property value="rulesets/design.xml,rulesets/imports.xml" name="pmd.rulesets"/>
|
|
<property value="xml" name="pmd.format"/>
|
|
<property value="${{build.dir}}/pmd" name="pmd.report.dir"/>
|
|
<property value="pmd.${{pmd.format}}" name="pmd.report.file"/>
|
|
<property value="${{shared.lib.dist.dir}}/jdo" name="jdo.lib.dir"/>
|
|
<property value="com.arsdigita.persistence.pdl.PDL" name="ddl.generator.classname"/>
|
|
<property value="com.arsdigita.persistence.pdl.TestPDLGenerator" name="test.ddl.generator.classname"/>
|
|
<xsl:choose>
|
|
<xsl:when test="@webxml">
|
|
<property name="webxml.source.file">
|
|
<xsl:attribute name="value">
|
|
<xsl:value-of select="@webxml"/>
|
|
</xsl:attribute>
|
|
</property>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<property name="webxml.source.file" value="web.xml-default"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<path id="ccm.base.classpath">
|
|
<dirset dir="${{ccm.home}}">
|
|
<include name="conf"/>
|
|
</dirset>
|
|
<pathelement path="${{java.class.path}}"/>
|
|
<fileset dir="${{ccm.tools.dir}}">
|
|
<include name="lib/security/*.jar"/>
|
|
</fileset>
|
|
</path>
|
|
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
|
|
<classpath>
|
|
<pathelement location="${{shared.lib.dist.dir}}/ant-contrib.jar"/>
|
|
</classpath>
|
|
</taskdef>
|
|
<taskdef name="jdoenhance" classname="com.redhat.ccm.tools.ant.taskdefs.JDOEnhance">
|
|
<classpath>
|
|
<pathelement location="${{ccm.config.dir}}/classes"/>
|
|
</classpath>
|
|
</taskdef>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="CheckDependencies">
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="appname" select="@name"/>
|
|
<xsl:variable name="appfullname" select="document(concat(@name,'/application.xml'),/ccm:project)/ccm:application/@name"/>
|
|
<xsl:for-each select="/ccm:project/ccm:application[@name=$appfullname]/ccm:dependencies/ccm:requires">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="version" select="@version"/>
|
|
<xsl:variable name="relation" select="@relation"/>
|
|
<xsl:if test="count(/ccm:project/ccm:prebuilt/ccm:application[@name = $name]) + count(/ccm:project/ccm:application[@name = $name]) < 1">
|
|
<xsl:message terminate="yes"><xsl:value-of select="concat($appname,' depends on ',$name,'-',$version)"/></xsl:message>
|
|
</xsl:if>
|
|
<xsl:if test="count(/ccm:project/ccm:prebuilt/ccm:application[@name = $name]) + count(/ccm:project/ccm:application[@name = $name]) > 1">
|
|
<xsl:message terminate="yes"><xsl:value-of select="concat('multiple applications provide ',$name)"/></xsl:message>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="AppProperties">
|
|
<xsl:for-each select="/ccm:project/ccm:prebuilt/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="location" select="@location"/>
|
|
<xsl:variable name="version" select="@version"/>
|
|
<xsl:choose>
|
|
<xsl:when test="$location">
|
|
<property value="{$location}" name="apps.{$name}.location"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<property value="${{shared.lib.dist.dir}}" name="apps.{$name}.location"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<path id="{$name}.build.classpath">
|
|
<fileset dir="${{apps.{$name}.location}}/">
|
|
<include name="{$name}-{$version}/**"/>
|
|
<include name="{$name}-{$version}.jar"/>
|
|
</fileset>
|
|
</path>
|
|
<path id="{$name}.run.classpath">
|
|
<path refid="{$name}.build.classpath"/>
|
|
</path>
|
|
<path id="{$name}.tests.classpath">
|
|
<path refid="{$name}.build.classpath"/>
|
|
<fileset dir="${{apps.{$name}.location}}/">
|
|
<include name="{$name}-{$version}-tests.jar"/>
|
|
</fileset>
|
|
</path>
|
|
</xsl:for-each>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="app" select="document(concat($name,'/application.xml'),/ccm:project)/ccm:application"/>
|
|
<xsl:variable name="appname" select="$app/@name"/>
|
|
<xsl:variable name="appprettyname" select="$app/@prettyName"/>
|
|
<xsl:variable name="appversion" select="$app/@version"/>
|
|
<xsl:variable name="appwebapp" select="$app/@webapp"/>
|
|
<xsl:variable name="requires" select="/ccm:project/ccm:application[@name=$appname]/ccm:dependencies/ccm:requires"/>
|
|
<path id="apps.{$name}.pdl.path">
|
|
<pathelement location="{$name}/${{pdl.dir}}"/>
|
|
<path refid="apps.{$name}.pdl.path.internal"/>
|
|
</path>
|
|
<path id="apps.{$name}.pdl.path.internal">
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="fullname" select="document(concat($name,'/application.xml'),/ccm:project)/ccm:application/@name"/>
|
|
<xsl:for-each select="/ccm:project/ccm:application[@name=$appname]/ccm:dependencies/ccm:requires">
|
|
<xsl:variable name="requiredname" select="@name"/>
|
|
<xsl:if test="$requiredname = $fullname">
|
|
<path refid="apps.{$name}.pdl.path"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
</path>
|
|
<property value="{$appname}" name="apps.{$name}.name"/>
|
|
<property value="{$appprettyname}" name="apps.{$name}.prettyname"/>
|
|
<property value="{$appversion}" name="apps.{$name}.version"/>
|
|
<xsl:choose>
|
|
<xsl:when test="$appwebapp">
|
|
<property value="{$appwebapp}" name="apps.{$name}.webapp.name"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<property value="{$appname}" name="apps.{$name}.webapp.name"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<xsl:call-template name="AppPropertyClassPath">
|
|
<xsl:with-param name="target" select="@name"/>
|
|
<xsl:with-param name="type">run</xsl:with-param>
|
|
<xsl:with-param name="requires" select="$requires"/>
|
|
</xsl:call-template>
|
|
<xsl:call-template name="AppPropertyClassPath">
|
|
<xsl:with-param name="target" select="@name"/>
|
|
<xsl:with-param name="type">build</xsl:with-param>
|
|
<xsl:with-param name="requires" select="$requires"/>
|
|
</xsl:call-template>
|
|
<xsl:call-template name="AppPropertyClassPath">
|
|
<xsl:with-param name="target" select="@name"/>
|
|
<xsl:with-param name="type">tests</xsl:with-param>
|
|
<xsl:with-param name="requires" select="$requires"/>
|
|
</xsl:call-template>
|
|
</xsl:for-each>
|
|
<xsl:call-template name="AppPropertyClassPath">
|
|
<xsl:with-param name="target">server</xsl:with-param>
|
|
<xsl:with-param name="type">build</xsl:with-param>
|
|
</xsl:call-template>
|
|
<xsl:call-template name="AppPropertyClassPath">
|
|
<xsl:with-param name="target">server</xsl:with-param>
|
|
<xsl:with-param name="type">run</xsl:with-param>
|
|
</xsl:call-template>
|
|
<xsl:call-template name="AppPropertyClassPath">
|
|
<xsl:with-param name="target">server</xsl:with-param>
|
|
<xsl:with-param name="type">tests</xsl:with-param>
|
|
</xsl:call-template>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="AppPropertyClassPath_Requires">
|
|
<xsl:param name="requires"/>
|
|
<xsl:param name="type"/>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="fullname" select="document(concat($name,'/application.xml'),/ccm:project)/ccm:application/@name"/>
|
|
<xsl:for-each select="$requires">
|
|
<xsl:variable name="requiredname" select="@name"/>
|
|
<xsl:if test="$requiredname = $fullname">
|
|
<path refid="{$name}.{$type}.classpath.internal"/>
|
|
<xsl:call-template name="AppPropertyClassPath_Requires">
|
|
<xsl:with-param name="requires" select="/ccm:project/ccm:application[@name=$requiredname]/ccm:dependencies/ccm:requires"/>
|
|
<xsl:with-param name="type" select="$type"/>
|
|
</xsl:call-template>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="AppPropertyClassPath">
|
|
<xsl:param name="target" select="'default-value'"/>
|
|
<xsl:param name="type" select="'build'"/>
|
|
<xsl:param name="requires" select="'all'"/>
|
|
<path id="{$target}.{$type}.classpath">
|
|
<pathelement path="${{ccm.config.dir}}/lib/xerces.jar"/>
|
|
<xsl:if test="/ccm:project/ccm:build/ccm:application[@name = $target]">
|
|
<path refid="{$target}.{$type}.classpath.internal"/>
|
|
</xsl:if>
|
|
<xsl:choose>
|
|
<xsl:when test="$requires = 'all'">
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<path refid="{$name}.{$type}.classpath.internal"/>
|
|
</xsl:for-each>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:variable name="classPathRequires">
|
|
<xsl:call-template name="AppPropertyClassPath_Requires">
|
|
<xsl:with-param name="requires" select="$requires"/>
|
|
<xsl:with-param name="type" select="$type"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:variable name="classPathRequiresNodeSet" select="common:nodeSet($classPathRequires)" />
|
|
<xsl:copy-of select="$classPathRequiresNodeSet/path[not(@refid=following::path/@refid)]"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<xsl:for-each select="/ccm:project/ccm:prebuilt/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<path refid="{$name}.{$type}.classpath"/>
|
|
</xsl:for-each>
|
|
<path refid="ccm.base.classpath"/>
|
|
</path>
|
|
<xsl:if test="/ccm:project/ccm:build/ccm:application[@name = $target]">
|
|
<path id="{$target}.{$type}.classpath.internal">
|
|
<xsl:choose>
|
|
<xsl:when test="$type = 'run'">
|
|
<fileset dir="./{$target}">
|
|
<include name="${{lib.dir}}/*.jar"/>
|
|
<include name="${{lib.dir}}/*.zip"/>
|
|
</fileset>
|
|
<pathelement path="./{$target}/build/classes/"/>
|
|
<pathelement path="./{$target}/build/sql/"/>
|
|
<pathelement path="./{$target}/pdl"/>
|
|
</xsl:when>
|
|
<xsl:when test="$type = 'build'">
|
|
<fileset dir="./{$target}">
|
|
<include name="${{etclib.dir}}/*.jar"/>
|
|
<include name="${{etclib.dir}}/*.zip"/>
|
|
</fileset>
|
|
<xsl:variable name="fullname" select="document(concat($target,'/application.xml'),/ccm:project)/ccm:application/@name"/>
|
|
<xsl:variable name="buildRequires"
|
|
select="/ccm:project/ccm:application[@name = $fullname]/ccm:dependencies/ccm:buildRequires"/>
|
|
<xsl:if test="count($buildRequires) > 0">
|
|
<fileset dir="${{ccm.config.lib.dir}}">
|
|
<xsl:for-each select="$buildRequires">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="version" select="@version"/>
|
|
<include name="{$name}.jar"/>
|
|
<xsl:if test="$version">
|
|
<include name="{$name}-{$version}.jar"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</fileset>
|
|
</xsl:if>
|
|
<path refid="{$target}.run.classpath.internal"/>
|
|
</xsl:when>
|
|
<xsl:when test="$type = 'tests'">
|
|
<pathelement path="./{$target}/build/tests/classes"/>
|
|
<pathelement path="./{$target}/build/tests/sql"/>
|
|
<pathelement path="./{$target}/test/pdl"/>
|
|
<path refid="{$target}.build.classpath.internal"/>
|
|
</xsl:when>
|
|
</xsl:choose>
|
|
</path>
|
|
</xsl:if>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetClean">
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="application" select="document(concat(@name,'/application.xml'),/ccm:project)/ccm:application"/>
|
|
<xsl:variable name="buildhooks" select="$application/@buildHooks"/>
|
|
<xsl:variable name="hastestdir" select="$application/ccm:directories/ccm:directory[@name='test'] or not($application/ccm:directories)"/>
|
|
<target name="clean-{$name}" description="Cleans out the '{$name}' build environment and whole deployment directory">
|
|
<xsl:attribute name="depends">
|
|
<xsl:value-of select="'init'"/>
|
|
<xsl:value-of select="',clean-deploy'"/>
|
|
</xsl:attribute>
|
|
<xsl:if test="$buildhooks">
|
|
<ant target="clean-build-hook" dir="{$name}" inheritRefs="true">
|
|
<xsl:attribute name="antfile">
|
|
<xsl:value-of select="$buildhooks"/>
|
|
</xsl:attribute>
|
|
</ant>
|
|
<ant target="clean-tests-hook" dir="{$name}" inheritRefs="true">
|
|
<xsl:attribute name="antfile">
|
|
<xsl:value-of select="$buildhooks"/>
|
|
</xsl:attribute>
|
|
</ant>
|
|
</xsl:if>
|
|
<delete dir="{$name}/${{build.dir}}"/>
|
|
<delete>
|
|
<fileset dir="{$name}">
|
|
<include name="TEST-*.txt"/>
|
|
<include name="TEST-*.xml"/>
|
|
</fileset>
|
|
</delete>
|
|
</target>
|
|
</xsl:for-each>
|
|
<!-- The app clean deploy tasks -->
|
|
<target name="clean-deploy" depends="init" description="Cleans out the deployment directory">
|
|
<delete dir="${{deploy.shared.lib.dir}}"/>
|
|
<delete dir="${{deploy.private.lib.dir}}"/>
|
|
<delete dir="${{deploy.webapp.dir}}"/>
|
|
</target>
|
|
<xsl:call-template name="LocalGroupingTarget">
|
|
<xsl:with-param name="targetname" select="'clean'"/>
|
|
<xsl:with-param name="description" select="'Cleans out the build environment and deployment directory'"/>
|
|
</xsl:call-template>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetBuild">
|
|
<xsl:param name="databases"/>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="application" select="document(concat(@name,'/application.xml'),/ccm:project)/ccm:application"/>
|
|
<xsl:variable name="fullname" select="$application/@name"/>
|
|
<xsl:variable name="buildhooks" select="$application/@buildHooks"/>
|
|
<xsl:variable name="hassqldir" select="$application/ccm:directories/ccm:directory[@name='sql'] or not($application/ccm:directories)"/>
|
|
<xsl:variable name="hassrcdir" select="$application/ccm:directories/ccm:directory[@name='src'] or not($application/ccm:directories)"/>
|
|
<xsl:variable name="haspdldir" select="$application/ccm:directories/ccm:directory[@name='pdl'] or not($application/ccm:directories)"/>
|
|
<xsl:variable name="jdodirs" select="$application/ccm:jdo/ccm:directory"/>
|
|
<xsl:variable name="requires" select="/ccm:project/ccm:application[@name=$fullname]/ccm:dependencies/ccm:requires"/>
|
|
<target name="compile-{$name}" description="Compiles the Java code for the '{$name}' application" depends="init">
|
|
<xsl:if test="$buildhooks">
|
|
<ant target="compile-hook" dir="{$name}" inheritRefs="true">
|
|
<xsl:attribute name="antfile">
|
|
<xsl:value-of select="$buildhooks"/>
|
|
</xsl:attribute>
|
|
</ant>
|
|
</xsl:if>
|
|
<xsl:if test="$hassrcdir">
|
|
<mkdir dir="{$name}/${{build.src.dir}}"/>
|
|
<xsl:if test="$jdodirs">
|
|
<if>
|
|
<not>
|
|
<uptodate targetfile="{$name}/${{build.dir}}/.jdo-timestamp">
|
|
<srcfiles includes="${{src.dir}}/**/*.jdo" dir="{$name}"/>
|
|
</uptodate>
|
|
</not>
|
|
<then>
|
|
<xsl:for-each select="$jdodirs">
|
|
<xsl:variable name="jdodir" select="@name"/>
|
|
<delete dir="{$name}/${{build.classes.dir}}/{$jdodir}"/>
|
|
</xsl:for-each>
|
|
<delete file="{$name}/${{build.dir}}/.jdo-timestamp"/>
|
|
</then>
|
|
</if>
|
|
</xsl:if>
|
|
<path id="{$name}.compile.srcpath">
|
|
<pathelement location="{$name}/${{src.dir}}"/>
|
|
<pathelement location="{$name}/${{build.src.dir}}"/>
|
|
</path>
|
|
<xsl:call-template name="TargetJavaC">
|
|
<xsl:with-param name="destdir" select="concat($name, '/${build.classes.dir}')"/>
|
|
<xsl:with-param name="srcdir" select="concat($name,'/${src.dir}')"/>
|
|
<xsl:with-param name="srcpathref" select="concat($name,'.compile.srcpath')"/>
|
|
<xsl:with-param name="classpathref" select="concat($name,'.build.classpath')"/>
|
|
</xsl:call-template>
|
|
</xsl:if>
|
|
</target>
|
|
<xsl:if test="$jdodirs">
|
|
<target name="jdo-{$name}" description="JOD enhances the Java classes for the '{$name}' application" depends="init,compile-{$name}">
|
|
<jdoenhance destination="{$name}/${{build.classes.dir}}">
|
|
<classpath>
|
|
<fileset dir="${{jdo.lib.dir}}">
|
|
<include name="jdo.jar"/>
|
|
<include name="jdori.jar"/>
|
|
<include name="jdori-enhancer.jar"/>
|
|
</fileset>
|
|
<fileset dir="${{ccm.config.lib.dir}}">
|
|
<include name="xmlParserAPIs.jar"/>
|
|
</fileset>
|
|
</classpath>
|
|
<srcpath>
|
|
<path refid="{$name}.run.classpath"/>
|
|
<path location="{$name}/${{src.dir}}"/>
|
|
</srcpath>
|
|
<dirset dir="{$name}/${{build.classes.dir}}">
|
|
<xsl:for-each select="$jdodirs">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<include name="{$name}"/>
|
|
</xsl:for-each>
|
|
</dirset>
|
|
<mapper type="merge" to="${{basedir}}/{$name}/${{build.dir}}/.jdo-timestamp"/>
|
|
<jdo>
|
|
<pathelement location="{$name}/${{src.dir}}"/>
|
|
</jdo>
|
|
</jdoenhance>
|
|
<echo message="jdo-timestamp" file="{$name}/${{build.dir}}/.jdo-timestamp"/>
|
|
</target>
|
|
</xsl:if>
|
|
|
|
<xsl:call-template name="TargetManifest">
|
|
<xsl:with-param name="target" select="$name"/>
|
|
<xsl:with-param name="type" select="'web'"/>
|
|
<xsl:with-param name="sourcedirectory" select="'web'"/>
|
|
</xsl:call-template>
|
|
<xsl:choose>
|
|
<xsl:when test="$haspdldir">
|
|
<!-- DDL generate task -->
|
|
<target name="generate-ddl-{$name}" description="Generates DDL for the '{$name}' application">
|
|
<xsl:attribute name="depends">
|
|
<xsl:value-of select="concat('init,compile-',$name)"/>
|
|
<xsl:if test="$hassqldir"><xsl:value-of select="concat(',copy-sql-',$name)"/></xsl:if>
|
|
<xsl:if test="$hassqldir"><xsl:value-of select="concat(',copy-src-',$name)"/></xsl:if>
|
|
</xsl:attribute>
|
|
<xsl:variable name="sourcexml" select="/"/>
|
|
<if>
|
|
<not>
|
|
<uptodate targetfile="{$name}/${{build.sql.dir}}/.ddl-timestamp">
|
|
<srcfiles includes="${{pdl.dir}}/**/*.pdl" dir="{$name}"/>
|
|
</uptodate>
|
|
</not>
|
|
<then>
|
|
<xsl:for-each select="$databases">
|
|
<xsl:call-template name="TargetGenerateDDL">
|
|
<xsl:with-param name="database" select="@name"/>
|
|
<xsl:with-param name="requires" select="$requires"/>
|
|
<xsl:with-param name="name" select="$name"/>
|
|
<xsl:with-param name="sourcexml" select="$sourcexml"/>
|
|
</xsl:call-template>
|
|
</xsl:for-each>
|
|
</then>
|
|
</if>
|
|
<mkdir dir="{$name}/${{build.dir}}"/>
|
|
<echo message="ddl-timestamp" file="{$name}/${{build.sql.dir}}/.ddl-timestamp"/>
|
|
</target>
|
|
<xsl:call-template name="TargetManifest">
|
|
<xsl:with-param name="target" select="$name"/>
|
|
<xsl:with-param name="type" select="'pdl'"/>
|
|
<xsl:with-param name="sourcedirectory" select="'pdl'"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<target name="manifest-pdl-{$name}">
|
|
<mkdir dir="{$name}/${{build.classes.dir}}"/>
|
|
<touch file="{$name}/${{build.classes.dir}}/${{apps.{$name}.name}}.pdl.mf"/>
|
|
</target>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<xsl:if test="$hassqldir">
|
|
<target name="copy-sql-{$name}">
|
|
<mkdir dir="{$name}/${{build.sql.dir}}"/>
|
|
<copy todir="{$name}/${{build.sql.dir}}">
|
|
<fileset dir="{$name}/${{sql.dir}}">
|
|
<include name="**/*.sql"/>
|
|
</fileset>
|
|
</copy>
|
|
</target>
|
|
</xsl:if>
|
|
<xsl:if test="$hassrcdir">
|
|
<target depends="init" name="copy-src-{$name}">
|
|
<copy todir="{$name}/${{build.classes.dir}}">
|
|
<fileset dir="{$name}/${{src.dir}}">
|
|
<exclude name="**/package.html"/>
|
|
<exclude name="**/*.java"/>
|
|
</fileset>
|
|
</copy>
|
|
</target>
|
|
</xsl:if>
|
|
<target name="jar-classes-{$name}" depends="init,build-{$name}">
|
|
<jar destfile="{$name}/${{build.dir}}/${{apps.{$name}.name}}-${{apps.{$name}.version}}.jar" update="true">
|
|
<fileset dir="{$name}/${{build.classes.dir}}"/>
|
|
<xsl:choose>
|
|
<xsl:when test="$haspdldir">
|
|
<manifest>
|
|
<attribute name="Class-Path" value="${{apps.{$name}.name}}-${{apps.{$name}.version}}-pdl.jar ${{apps.{$name}.name}}-${{apps.{$name}.version}}-sql.jar"/>
|
|
</manifest>
|
|
</xsl:when>
|
|
<xsl:when test="$hassqldir">
|
|
<manifest>
|
|
<attribute name="Class-Path" value="${{apps.{$name}.name}}-${{apps.{$name}.version}}-sql.jar"/>
|
|
</manifest>
|
|
</xsl:when>
|
|
</xsl:choose>
|
|
</jar>
|
|
</target>
|
|
<xsl:if test="$haspdldir">
|
|
<target name="jar-pdl-{$name}" depends="init,build-{$name}">
|
|
<mkdir dir="{$name}/${{pdl.dir}}"/>
|
|
<jar destfile="{$name}/${{build.dir}}/${{apps.{$name}.name}}-${{apps.{$name}.version}}-pdl.jar" update="true">
|
|
<fileset dir="{$name}/${{pdl.dir}}"/>
|
|
</jar>
|
|
</target>
|
|
</xsl:if>
|
|
<xsl:if test="$haspdldir or $hassqldir">
|
|
<target name="jar-sql-{$name}" depends="init,build-{$name}">
|
|
<jar destfile="{$name}/${{build.dir}}/${{apps.{$name}.name}}-${{apps.{$name}.version}}-sql.jar" update="true">
|
|
<fileset dir="{$name}/${{build.sql.dir}}">
|
|
<exclude name=".ddl-timestamp"/>
|
|
</fileset>
|
|
</jar>
|
|
</target>
|
|
</xsl:if>
|
|
<!-- Build tasks -->
|
|
<xsl:call-template name="TargetBuildApp">
|
|
<xsl:with-param name="target" select="@name"/>
|
|
<xsl:with-param name="requires" select="$requires"/>
|
|
</xsl:call-template>
|
|
</xsl:for-each>
|
|
<xsl:call-template name="LocalGroupingTarget">
|
|
<xsl:with-param name="targetname" select="'build'"/>
|
|
<xsl:with-param name="description" select="'Builds all applications'"/>
|
|
</xsl:call-template>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetBuildApp">
|
|
<xsl:param name="target"/>
|
|
<xsl:param name="requires"/>
|
|
<xsl:variable name="application" select="document(concat($target,'/application.xml'),/ccm:project)/ccm:application"/>
|
|
<xsl:variable name="buildhooks" select="$application/@buildHooks"/>
|
|
<xsl:variable name="hassqldir" select="$application/ccm:directories/ccm:directory[@name='sql'] or not($application/ccm:directories)"/>
|
|
<xsl:variable name="hassrcdir" select="$application/ccm:directories/ccm:directory[@name='src'] or not($application/ccm:directories)"/>
|
|
<xsl:variable name="haspdldir" select="$application/ccm:directories/ccm:directory[@name='pdl'] or not($application/ccm:directories)"/>
|
|
<xsl:variable name="jdodirs" select="$application/ccm:jdo/ccm:directory"/>
|
|
<target name="build-{$target}" description="Builds the '{$target}' application (compile, generate DDL, jar, etc)">
|
|
<xsl:attribute name="depends">
|
|
<xsl:text>init</xsl:text>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="fullname" select="document(concat($name,'/application.xml'),/ccm:project)/ccm:application/@name"/>
|
|
<xsl:for-each select="$requires">
|
|
<xsl:variable name="requiredname" select="@name"/>
|
|
<xsl:if test="$requiredname = $fullname">
|
|
<xsl:value-of select="concat(',build-',$name)"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
<xsl:value-of select="concat(',compile-',$target)"/>
|
|
<xsl:if test="$jdodirs"><xsl:value-of select="concat(',jdo-',$target)"/></xsl:if>
|
|
<xsl:if test="$hassrcdir"><xsl:value-of select="concat(',copy-src-',$target)"/></xsl:if>
|
|
<xsl:if test="$haspdldir"><xsl:value-of select="concat(',generate-ddl-',$target)"/></xsl:if>
|
|
<xsl:value-of select="concat(',manifest-pdl-',$target)"/>
|
|
<xsl:value-of select="concat(',manifest-web-',$target)"/>
|
|
</xsl:attribute>
|
|
</target>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetGenerateDDL">
|
|
<xsl:param name="database"/>
|
|
<xsl:param name="requires"/>
|
|
<xsl:param name="name"/>
|
|
<xsl:param name="sourcexml"/>
|
|
<mkdir dir="{$name}/${{build.sql.dir}}/${{apps.{$name}.name}}/${{ddl.dir}}/{$database}"/>
|
|
<java failonerror="yes" classname="${{ddl.generator.classname}}" fork="yes">
|
|
<sysproperty key="java.ext.dirs" value="${{ccm.java.ext.dirs}}"/>
|
|
<classpath refid="{$name}.build.classpath"/>
|
|
<arg line="-quiet"/>
|
|
<arg line="-generate-ddl {$name}/${{build.sql.dir}}/${{apps.{$name}.name}}/${{ddl.dir}}/{$database}"/>
|
|
<arg line="-database {$database}"/>
|
|
<arg line="-path {$name}/${{pdl.dir}}"/>
|
|
<arg line="-sqldir {$name}/${{build.sql.dir}}"/>
|
|
<xsl:call-template name="TargetPdlPath">
|
|
<xsl:with-param name="target" select="$name"/>
|
|
<xsl:with-param name="requires" select="$requires"/>
|
|
<xsl:with-param name="sourcexml" select="$sourcexml"/>
|
|
</xsl:call-template>
|
|
</java>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetPdlPath">
|
|
<xsl:param name="target"/>
|
|
<xsl:param name="requires" select="'all'"/>
|
|
<xsl:param name="includeself" select="'no'"/>
|
|
<xsl:param name="pathType" select="'library-path'"/>
|
|
<xsl:param name="sourcexml" select="/"/>
|
|
<xsl:if test="($requires = 'all') or ($includeself = 'yes') or (count($requires) > 0) or (count($sourcexml//ccm:project/ccm:prebuilt/ccm:application) > 0)">
|
|
<xsl:element name="arg">
|
|
<xsl:attribute name="line">
|
|
<xsl:value-of select="concat('-',$pathType,' ')"/>
|
|
<xsl:choose>
|
|
<xsl:when test="$requires = 'all'">
|
|
<xsl:for-each select="$sourcexml//ccm:project/ccm:build/ccm:application">
|
|
<xsl:value-of select="concat(@name, '/${pdl.dir}:')"/>
|
|
</xsl:for-each>
|
|
</xsl:when>
|
|
<xsl:when test="$includeself = 'no'">
|
|
<xsl:value-of select="concat('${apps.',$target,'.pdl.path.internal}:')"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="concat('${apps.',$target,'.pdl.path}:')"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<xsl:for-each select="$sourcexml//ccm:project/ccm:prebuilt/ccm:application">
|
|
<xsl:value-of select="concat('${apps.',@name,'.location}/',@name,'-',@version,'-pdl.jar:')"/>
|
|
</xsl:for-each>
|
|
</xsl:attribute>
|
|
</xsl:element>
|
|
</xsl:if>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetJSPCompilerClasspath">
|
|
<classpath>
|
|
<fileset dir="${{catalina.home.dir}}">
|
|
<include name="server/lib/*.jar"/>
|
|
<include name="common/lib/*.jar"/>
|
|
</fileset>
|
|
<path refid="server.build.classpath"/>
|
|
</classpath>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetVerify">
|
|
<target name="verify-pdl" depends="init" unless="pdl.no.verify" description="Verifies that the PDL files compile">
|
|
<java classname="${{ddl.generator.classname}}" failonerror="yes" fork="yes">
|
|
<sysproperty key="java.ext.dirs" value="${{ccm.java.ext.dirs}}"/>
|
|
<classpath refid="server.build.classpath"/>
|
|
<arg line="${{pdl.args}}"/>
|
|
<xsl:call-template name="TargetPdlPath">
|
|
<xsl:with-param name="pathType">path</xsl:with-param>
|
|
</xsl:call-template>
|
|
</java>
|
|
<echo message="PDL files compiled successfully."/>
|
|
</target>
|
|
<target name="jsp-compiler-check">
|
|
<condition property="jsp.compiler.available">
|
|
<and>
|
|
<available file="${{catalina.home.dir}}" type="dir"/>
|
|
<available classname="org.apache.jasper.JspC">
|
|
<xsl:call-template name="TargetJSPCompilerClasspath"/>
|
|
</available>
|
|
</and>
|
|
</condition>
|
|
</target>
|
|
<target name="compile-jsp" depends="init,deploy,jsp-compiler-check" if="jsp.compiler.available">
|
|
<taskdef classname="org.apache.jasper.JspC" name="jasper2">
|
|
<xsl:call-template name="TargetJSPCompilerClasspath"/>
|
|
</taskdef>
|
|
<jasper2
|
|
verbose="1"
|
|
uriroot="${{deploy.dir}}"
|
|
webXmlFragment="${{build.dir}}/generated_web.xml"
|
|
outputDir="${{build.dir}}/jsp-java" />
|
|
</target>
|
|
<target name="build-jsp" depends="init,compile-jsp" if="jsp.compiler.available">
|
|
<javac
|
|
debug="${{compile.debug}}"
|
|
optimize="${{compile.optimize}}"
|
|
deprecation="${{compile.deprecation}}"
|
|
verbose="${{compile.verbose}}"
|
|
nowarn="${{compile.nowarn}}"
|
|
destdir="${{build.dir}}/jsp-classes">
|
|
<src refid="${{build.dir}}/jsp-java"/>
|
|
<xsl:call-template name="TargetJSPCompilerClasspath"/>
|
|
</javac>
|
|
</target>
|
|
<target name="no-build-jsp" unless="jsp.compiler.available">
|
|
<echo message="JSP verification skipped. The CATALINA_HOME environment variable must point to a Tomcat 4.1 installation."/>
|
|
</target>
|
|
<target name="verify-jsp" depends="init,build-jsp,no-build-jsp" description="Verifies that JSP files compile (requires Tomcat 4.1)"/>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetDeploySystemJar">
|
|
<xsl:param name="name"/>
|
|
<xsl:param name="package"/>
|
|
<if>
|
|
<available file="{$name}/${{build.classes.dir}}/{$package}" type="dir"/>
|
|
<then>
|
|
<mkdir dir="${{deploy.system.jars.dir}}"/>
|
|
<jar destfile="${{deploy.system.jars.dir}}/${{apps.{$name}.name}}-${{apps.{$name}.version}}-system.jar" update="true">
|
|
<fileset dir="{$name}/${{build.classes.dir}}">
|
|
<include name="{$package}**"/>
|
|
</fileset>
|
|
</jar>
|
|
</then>
|
|
</if>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetDeploy">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<!-- Deploy hooks -->
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="application" select="document(concat(@name,'/application.xml'),/ccm:project)/ccm:application"/>
|
|
<xsl:variable name="buildhooks" select="$application/@buildHooks"/>
|
|
<xsl:variable name="haspdldir" select="$application/ccm:directories/ccm:directory[@name='pdl'] or not($application/ccm:directories)"/>
|
|
<xsl:variable name="hassqldir" select="$application/ccm:directories/ccm:directory[@name='sql'] or not($application/ccm:directories)"/>
|
|
<xsl:variable name="hassrcdir" select="$application/ccm:directories/ccm:directory[@name='src'] or not($application/ccm:directories)"/>
|
|
<xsl:if test="$application/@buildHooks">
|
|
<target name="deploy-{$name}-hook" depends="init">
|
|
<ant target="deploy-hook" dir="{$name}" inheritRefs="true">
|
|
<xsl:attribute name="antfile">
|
|
<xsl:value-of select="$application/@buildHooks"/>
|
|
</xsl:attribute>
|
|
</ant>
|
|
</target>
|
|
</xsl:if>
|
|
<!-- Deploy War -->
|
|
<target name="deploy-war-{$name}" depends="init,jar-classes-{$name}">
|
|
<mkdir dir="${{deploy.war.dir}}"/>
|
|
<mkdir dir="{$name}/${{lib.dir}}"/>
|
|
<war destfile="${{deploy.war.dir}}/${{apps.{$name}.name}}-${{apps.{$name}.version}}.war"
|
|
webxml="{$name}/${{web.dir}}/WEB-INF/web.xml">
|
|
<fileset dir="{$name}/${{web.dir}}">
|
|
<exclude name="WEB-INF/web.xml"/>
|
|
</fileset>
|
|
<lib dir="{$name}/${{lib.dir}}"/>
|
|
<classes dir="{$name}/${{build.classes.dir}}"/>
|
|
</war>
|
|
</target>
|
|
<!-- Deploy Jar -->
|
|
<target name="deploy-jar-classes-{$name}" depends="init,jar-classes-{$name}">
|
|
<mkdir dir="${{deploy.lib.dir.{$name}}}"/>
|
|
<copy todir="${{deploy.lib.dir.{$name}}}" file="{$name}/${{build.dir}}/${{apps.{$name}.name}}-${{apps.{$name}.version}}.jar"/>
|
|
<xsl:for-each select="$application/ccm:systemPackages/ccm:package">
|
|
<xsl:call-template name="TargetDeploySystemJar">
|
|
<xsl:with-param name="name" select="$name"/>
|
|
<xsl:with-param name="package" select="@path"/>
|
|
</xsl:call-template>
|
|
</xsl:for-each>
|
|
</target>
|
|
<!-- Deploy classes -->
|
|
<xsl:if test="$hassrcdir or $haspdldir">
|
|
<target name="deploy-classes-{$name}" depends="init,build-{$name}">
|
|
<mkdir dir="${{deploy.classes.dir.{$name}}}"/>
|
|
<copy todir="${{deploy.classes.dir.{$name}}}">
|
|
<fileset dir="{$name}/${{build.classes.dir}}"/>
|
|
</copy>
|
|
<xsl:for-each select="$application/ccm:systemPackages/ccm:package">
|
|
<xsl:call-template name="TargetDeploySystemJar">
|
|
<xsl:with-param name="name" select="$name"/>
|
|
<xsl:with-param name="package" select="@path"/>
|
|
</xsl:call-template>
|
|
</xsl:for-each>
|
|
</target>
|
|
</xsl:if>
|
|
<!-- Deploy libs -->
|
|
<target name="deploy-lib-{$name}" depends="init">
|
|
<mkdir dir="${{deploy.private.lib.dir}}"/>
|
|
<copy todir="${{deploy.private.lib.dir}}">
|
|
<fileset dir="{$name}">
|
|
<include name="${{lib.dir}}/**"/>
|
|
</fileset>
|
|
<mapper type="glob" to="*" from="${{lib.dir}}${{file.separator}}*"/>
|
|
</copy>
|
|
</target>
|
|
<!-- Deploy pdl -->
|
|
<xsl:if test="$haspdldir">
|
|
<target name="deploy-pdl-{$name}" depends="init,jar-pdl-{$name}">
|
|
<mkdir dir="${{deploy.lib.dir.{$name}}}"/>
|
|
<copy todir="${{deploy.lib.dir.{$name}}}">
|
|
<fileset dir="{$name}/${{build.dir}}">
|
|
<include name="*pdl.jar"/>
|
|
</fileset>
|
|
</copy>
|
|
</target>
|
|
</xsl:if>
|
|
<!-- Deploy sql -->
|
|
<xsl:if test="$hassqldir or $haspdldir">
|
|
<target name="deploy-sql-{$name}" depends="init,generate-ddl-{$name},jar-sql-{$name}">
|
|
<mkdir dir="${{deploy.lib.dir.{$name}}}"/>
|
|
<copy todir="${{deploy.lib.dir.{$name}}}">
|
|
<fileset dir="{$name}/${{build.dir}}">
|
|
<include name="*sql.jar"/>
|
|
</fileset>
|
|
</copy>
|
|
</target>
|
|
</xsl:if>
|
|
<!-- Deploy web -->
|
|
<target name="deploy-web-{$name}" depends="init">
|
|
<copy todir="${{deploy.dir.{$name}}}">
|
|
<fileset dir="{$name}">
|
|
<include name="${{web.dir}}/**"/>
|
|
</fileset>
|
|
<mapper type="glob" to="*" from="${{web.dir}}${{file.separator}}*"/>
|
|
</copy>
|
|
</target>
|
|
<!-- Deploy bin -->
|
|
<target name="deploy-bin-{$name}" depends="init">
|
|
<copy todir="${{deploy.bin.dir.{$name}}}">
|
|
<fileset dir="{$name}">
|
|
<include name="${{bin.dir}}/**"/>
|
|
</fileset>
|
|
<mapper type="glob" to="*" from="${{bin.dir}}${{file.separator}}*"/>
|
|
</copy>
|
|
</target>
|
|
<!-- Deploy Javadoc -->
|
|
<xsl:if test="$hassrcdir">
|
|
<target name="deploy-javadoc-{$name}" depends="init,javadoc-{$name}">
|
|
<copy todir="${{deploy.api.dir.{$name}}}">
|
|
<fileset dir="${{app.javadoc.dir}}/{$name}"/>
|
|
</copy>
|
|
</target>
|
|
</xsl:if>
|
|
<!-- Deploy app -->
|
|
<target name="deploy-{$name}" description="Builds and deploys the '{$name}' application">
|
|
<xsl:attribute name="depends">
|
|
<xsl:text>init</xsl:text>
|
|
<xsl:text>,build-</xsl:text><xsl:value-of select="@name"/>
|
|
<xsl:if test="$buildhooks"><xsl:value-of select="concat(',deploy-',$name,'-hook')"/></xsl:if>
|
|
<xsl:if test="$hassrcdir or $haspdldir"><xsl:value-of select="concat(',deploy-classes-',$name)"/></xsl:if>
|
|
<xsl:value-of select="concat(',deploy-lib-',$name)"/>
|
|
<xsl:if test="$haspdldir"><xsl:value-of select="concat(',deploy-pdl-',$name)"/></xsl:if>
|
|
<xsl:if test="$hassqldir or $haspdldir"><xsl:text>,deploy-sql-</xsl:text><xsl:value-of select="@name"/></xsl:if>
|
|
<xsl:value-of select="concat(',deploy-web-',$name)"/>
|
|
<xsl:value-of select="concat(',deploy-bin-',$name)"/>
|
|
</xsl:attribute>
|
|
<echo message="deployed '{$name}' to ${{deploy.dir.{$name}}}"/>
|
|
</target>
|
|
</xsl:for-each>
|
|
<xsl:call-template name="LocalGroupingTarget">
|
|
<xsl:with-param name="targetname" select="'deploy-web'"/>
|
|
</xsl:call-template>
|
|
<xsl:call-template name="LocalGroupingTarget">
|
|
<xsl:with-param name="targetname" select="'deploy-jar-classes'"/>
|
|
</xsl:call-template>
|
|
<!-- Deploy prebuilt apps -->
|
|
<xsl:for-each select="/ccm:project/ccm:prebuilt/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="version" select="@version"/>
|
|
<target name="deploy-{$name}" depends="init" description="Deploys the '{$name}' prebuilt application">
|
|
<copy todir="${{deploy.shared.lib.dir}}" preservelastmodified="true">
|
|
<fileset dir="${{apps.{$name}.location}}">
|
|
<include name="{$name}-{$version}.jar"/>
|
|
<include name="{$name}-{$version}-*.jar"/>
|
|
<exclude name="{$name}-{$version}-system.jar"/>
|
|
</fileset>
|
|
</copy>
|
|
<copy todir="${{deploy.system.jars.dir}}" preservelastmodified="true">
|
|
<fileset dir="${{apps.{$name}.location}}">
|
|
<include name="{$name}-{$version}-system.jar"/>
|
|
</fileset>
|
|
</copy>
|
|
<copy todir="${{deploy.private.lib.dir}}" preservelastmodified="true">
|
|
<fileset dir="${{apps.{$name}.location}}">
|
|
<include name="{$name}-{$version}/**"/>
|
|
</fileset>
|
|
<mapper type="glob" to="*" from="{$name}-{$version}${{file.separator}}*"/>
|
|
</copy>
|
|
<copy todir="${{deploy.webapp.dir}}" preservelastmodified="true">
|
|
<fileset dir="${{webapp.dist.dir}}">
|
|
<include name="{$name}-{$version}/**"/>
|
|
</fileset>
|
|
<mapper type="glob" to="*" from="{$name}-{$version}${{file.separator}}*"/>
|
|
</copy>
|
|
<echo message="deployed '{$name}' to ${{deploy.webapp.dir}}"/>
|
|
</target>
|
|
</xsl:for-each>
|
|
<target name="deploy-global">
|
|
<xsl:attribute name="depends">
|
|
<xsl:text>init</xsl:text>
|
|
<xsl:for-each select="/ccm:project/ccm:prebuilt/ccm:application">
|
|
<xsl:text>,deploy-</xsl:text><xsl:value-of select="@name"/>
|
|
</xsl:for-each>
|
|
</xsl:attribute>
|
|
</target>
|
|
<target name="deploy-local">
|
|
<xsl:attribute name="depends">
|
|
<xsl:text>init</xsl:text>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:text>,deploy-</xsl:text><xsl:value-of select="@name"/>
|
|
</xsl:for-each>
|
|
</xsl:attribute>
|
|
</target>
|
|
<target name="copy-webxml-init" depends="init">
|
|
<available file="${{deploy.webapp.dir}}/ROOT/WEB-INF" type="dir" property="root.webapp.exists"/>
|
|
<condition property="resolved.webxml.source.file" value="${{deploy.webapp.dir}}/ROOT/WEB-INF/${{webxml.source.file}}">
|
|
<and>
|
|
<isset property="root.webapp.exists"/>
|
|
<available file="${{deploy.webapp.dir}}/ROOT/WEB-INF/${{webxml.source.file}}"/>
|
|
<not>
|
|
<available file="${{webxml.source.file}}"/>
|
|
</not>
|
|
</and>
|
|
</condition>
|
|
<condition property="resolved.webxml.source.file" value="${{webxml.source.file}}">
|
|
<not><isset property="resolved.webxml.source.file"/></not>
|
|
</condition>
|
|
</target>
|
|
<target name="copy-webxml" depends="init,copy-webxml-init" if="root.webapp.exists">
|
|
<copy file="${{resolved.webxml.source.file}}" tofile="${{deploy.webapp.dir}}/ROOT/WEB-INF/web.xml"/>
|
|
</target>
|
|
<!-- Master deploy -->
|
|
<target name="deploy" depends="init,deploy-global,deploy-local,copy-webxml">
|
|
<xsl:attribute name="description">Builds and deploys all applications, also deploys prebuilt applications and config files</xsl:attribute>
|
|
</target>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetCopyTestPDL">
|
|
<xsl:param name="target" select="'default-value'"/>
|
|
<xsl:param name="requires" select="'all'"/>
|
|
<target depends="init" name="copy-test-pdl-{$target}">
|
|
<mkdir dir="{$target}/${{build.test.classes.dir}}"/>
|
|
<copy todir="{$target}/${{build.test.classes.dir}}">
|
|
<fileset dir=".">
|
|
<include name="{$target}/${{test.pdl.dir}}/**"/>
|
|
</fileset>
|
|
<mapper type="glob" to="*" from="{$target}/${{test.pdl.dir}}${{file.separator}}*"/>
|
|
</copy>
|
|
<copy todir="{$target}/${{build.test.classes.dir}}">
|
|
<fileset dir=".">
|
|
<include name="{$target}/${{pdl.dir}}/**"/>
|
|
</fileset>
|
|
<mapper type="glob" to="*" from="{$target}/${{pdl.dir}}${{file.separator}}*"/>
|
|
</copy>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:choose>
|
|
<xsl:when test="$requires = 'all'">
|
|
<copy todir="{$target}/${{build.test.classes.dir}}">
|
|
<fileset dir=".">
|
|
<include name="{$name}/${{pdl.dir}}/**"/>
|
|
</fileset>
|
|
<mapper type="glob" to="*" from="{$name}/${{pdl.dir}}${{file.separator}}*"/>
|
|
</copy>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:variable name="fullname" select="document(concat($name,'/application.xml'),/ccm:project)/ccm:application/@name"/>
|
|
<xsl:for-each select="$requires">
|
|
<xsl:variable name="requiredname" select="@name"/>
|
|
<xsl:if test="$requiredname = $fullname">
|
|
<copy todir="{$target}/${{build.test.classes.dir}}">
|
|
<fileset dir=".">
|
|
<include name="{$name}/${{pdl.dir}}/**"/>
|
|
</fileset>
|
|
<mapper type="glob" to="*" from="{$name}/${{pdl.dir}}${{file.separator}}*"/>
|
|
</copy>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:for-each>
|
|
</target>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetGenerateTestDDL">
|
|
<xsl:param name="target"/>
|
|
<xsl:param name="database"/>
|
|
<xsl:param name="requires"/>
|
|
<xsl:param name="sourcexml"/>
|
|
<mkdir dir="{$target}/${{build.test.sql.dir}}/${{ddl.dir}}/{$database}"/>
|
|
<java failonerror="yes" classname="${{test.ddl.generator.classname}}" fork="yes">
|
|
<sysproperty key="java.ext.dirs" value="${{ccm.java.ext.dirs}}"/>
|
|
<classpath refid="{$target}.build.classpath"/>
|
|
<arg line="-quiet"/>
|
|
<arg line="-generate-ddl {$target}/${{build.test.sql.dir}}/{$database}"/>
|
|
<arg line="-database {$database}"/>
|
|
<arg line="-path {$target}/${{test.pdl.dir}}/com"/>
|
|
<xsl:call-template name="TargetPdlPath">
|
|
<xsl:with-param name="target" select="$target"/>
|
|
<xsl:with-param name="includeself" select="'yes'"/>
|
|
<xsl:with-param name="requires" select="$requires"/>
|
|
<xsl:with-param name="sourcexml" select="$sourcexml"/>
|
|
</xsl:call-template>
|
|
</java>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetBuildAppTest">
|
|
<xsl:param name="target"/>
|
|
<xsl:param name="requires"/>
|
|
<target name="build-tests-{$target}" description="Build the tests for the '{$target}' application">
|
|
<xsl:attribute name="depends">
|
|
<xsl:text>init</xsl:text>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="fullname" select="document(concat($name,'/application.xml'),/ccm:project)/ccm:application/@name"/>
|
|
<xsl:variable name="application" select="document(concat(@name,'/application.xml'),/ccm:project)/ccm:application"/>
|
|
<xsl:variable name="hastestdir" select="$application/ccm:directories/ccm:directory[@name='test'] or not($application/ccm:directories)"/>
|
|
<xsl:for-each select="$requires">
|
|
<xsl:variable name="requiredname" select="@name"/>
|
|
<xsl:if test="($requiredname = $fullname) and $hastestdir">
|
|
<xsl:value-of select="concat(',build-tests-',$name)"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
<xsl:value-of select="concat(',compile-tests-',$target)"/>
|
|
<xsl:value-of select="concat(',generate-test-ddl-',$target)"/>
|
|
<xsl:value-of select="concat(',copy-test-src-',$target)"/>
|
|
<xsl:value-of select="concat(',manifest-test.pdl-',$target)"/>
|
|
</xsl:attribute>
|
|
</target>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetTest">
|
|
<xsl:param name="databases"/>
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="application" select="document(concat(@name,'/application.xml'),/ccm:project)/ccm:application"/>
|
|
<xsl:variable name="hastestdir" select="$application/ccm:directories/ccm:directory[@name='test'] or not($application/ccm:directories)"/>
|
|
<xsl:variable name="requires" select="$application/ccm:dependencies/ccm:requires"/>
|
|
<xsl:if test="$hastestdir">
|
|
<xsl:call-template name="TargetBuildAppTest">
|
|
<xsl:with-param name="target" select="@name"/>
|
|
<xsl:with-param name="requires" select="$requires"/>
|
|
</xsl:call-template>
|
|
<target name="compile-tests-{$name}" depends="init,build-{$name}" if="{$name}.test.src.dir.exists">
|
|
<path id="{$name}.tests.compile.srcpath">
|
|
<pathelement location="{$name}/${{test.src.dir}}"/>
|
|
</path>
|
|
<xsl:call-template name="TargetJavaC">
|
|
<xsl:with-param name="destdir" select="concat($name,'/${build.test.classes.dir}')"/>
|
|
<xsl:with-param name="srcpathref" select="concat($name,'.tests.compile.srcpath')"/>
|
|
<xsl:with-param name="classpathref" select="concat($name,'.tests.classpath')"/>
|
|
</xsl:call-template>
|
|
</target>
|
|
<target depends="init" name="copy-test-src-{$name}" if="{$name}.test.src.dir.exists">
|
|
<mkdir dir="{$name}/${{build.test.classes.dir}}"/>
|
|
<copy todir="{$name}/${{build.test.classes.dir}}">
|
|
<fileset dir="{$name}/${{test.src.dir}}">
|
|
<exclude name="**/*.java"/>
|
|
</fileset>
|
|
</copy>
|
|
</target>
|
|
<xsl:call-template name="TargetManifest">
|
|
<xsl:with-param name="target" select="$name"/>
|
|
<xsl:with-param name="type" select="'test.pdl'"/>
|
|
<xsl:with-param name="sourcedirectory" select="'test/pdl'"/>
|
|
</xsl:call-template>
|
|
<target depends="init" name="copy-test-sql-{$name}">
|
|
<mkdir dir="{$name}/${{build.test.sql.dir}}"/>
|
|
<copy todir="{$name}/${{build.test.sql.dir}}">
|
|
<fileset dir="{$name}">
|
|
<include name="${{test.sql.dir}}/**/*.sql"/>
|
|
</fileset>
|
|
<mapper type="glob" to="*" from="${{test.sql.dir}}${{file.separator}}*"/>
|
|
</copy>
|
|
</target>
|
|
<target name="generate-test-ddl-{$name}">
|
|
<xsl:attribute name="depends">
|
|
<xsl:value-of select="concat('init,copy-test-sql-',$name)"/>
|
|
</xsl:attribute>
|
|
<if>
|
|
<and>
|
|
<available file="{$name}/test/pdl"/>
|
|
<not>
|
|
<uptodate targetfile="{$name}/${{build.test.sql.dir}}/.ddl-timestamp">
|
|
<srcfiles includes="${{test.pdl.dir}}/**/*.pdl" dir="{$name}"/>
|
|
</uptodate>
|
|
</not>
|
|
</and>
|
|
<then>
|
|
<xsl:variable name="sourcexml" select="/"/>
|
|
<xsl:for-each select="$databases">
|
|
<xsl:call-template name="TargetGenerateTestDDL">
|
|
<xsl:with-param name="database" select="@name"/>
|
|
<xsl:with-param name="requires" select="$requires"/>
|
|
<xsl:with-param name="target" select="$name"/>
|
|
<xsl:with-param name="sourcexml" select="$sourcexml"/>
|
|
</xsl:call-template>
|
|
</xsl:for-each>
|
|
<mkdir dir="{$name}/${{build.test.sql.dir}}"/>
|
|
<echo message="ddl-timestamp" file="{$name}/${{build.test.sql.dir}}/.ddl-timestamp"/>
|
|
</then>
|
|
</if>
|
|
</target>
|
|
<xsl:call-template name="TargetCopyTestPDL">
|
|
<xsl:with-param name="target" select="@name"/>
|
|
<xsl:with-param name="requires" select="$requires"/>
|
|
</xsl:call-template>
|
|
<target name="deploy-test-webapp-{$name}">
|
|
<antcall target="deploy">
|
|
<param name="deploy.dir" value="${{test.deploy.dir}}"/>
|
|
<param name="deploy.init.dir" value="${{test.deploy.dir}}/WEB-INF/resources"/>
|
|
<param name="deploy.web.dir" value="${{test.deploy.dir}}/WEB-INF"/>
|
|
</antcall>
|
|
</target>
|
|
<target name="runtests-{$name}" depends="init,build-tests-{$name},copy-test-pdl-{$name},generate-test-ddl-{$name},deploy-test-webapp-{$name}">
|
|
<xsl:attribute name="description"><xsl:value-of select="concat('Runs the tests for the ',$name,' application')"/></xsl:attribute>
|
|
<mkdir dir="{$name}/${{test.tmp.dir}}"/>
|
|
<junit
|
|
printsummary="yes"
|
|
fork="yes"
|
|
haltonfailure="${{junit.haltonfailure}}"
|
|
haltonerror="${{junit.haltonerror}}"
|
|
dir="{$name}"
|
|
showoutput="${{junit.showoutput}}">
|
|
<jvmarg line="${{junit.jvmargs}}"/>
|
|
<xsl:choose>
|
|
<xsl:when test="/ccm:project/ccm:options/ccm:option[@name='junitCustomFormatter']/@value = 1">
|
|
<formatter classname="${{junit.formatter.classname}}" extension="${{junit.formatter.extension}}"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<formatter type="${{junit.formatter}}"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<classpath refid="server.tests.classpath"/>
|
|
<sysproperty key="ccm.home" value="${{ccm.home}}"/>
|
|
<sysproperty value="${{junit.initializer.classname}}" key="waf.runtime.init"/>
|
|
<sysproperty key="j2ee.webapp.dir" value="${{deploy.dir}}"/>
|
|
<sysproperty key="junit.usefail" value="${{junit.usefail}}"/>
|
|
<sysproperty key="junit.test" value="${{junit.test}}"/>
|
|
<sysproperty key="junit.usecactus" value="${{junit.usecactus}}"/>
|
|
<sysproperty key="sql.continue" value="${{test.sql.continue}}"/>
|
|
<sysproperty key="sql.verbose" value="${{test.sql.verbose}}"/>
|
|
<sysproperty key="test.base.dir" value="${{basedir}}/{$name}/${{build.test.classes.dir}}"/>
|
|
<sysproperty key="test.initscript" value="${{test.initscript}}"/>
|
|
<sysproperty key="test.server.url" value="${{test.server.url}}"/>
|
|
<sysproperty key="test.sql.dir" value="${{basedir}}/{$name}/${{build.test.sql.dir}}"/>
|
|
<sysproperty key="test.tmp.dir" value="${{basedir}}/{$name}/${{test.tmp.dir}}"/>
|
|
<sysproperty key="test.webapp.dir" value="${{basedir}}/${{test.deploy.dir}}"/>
|
|
<sysproperty key="log4j.configuration" value="${{log4j.configuration.sysproperty}}"/>
|
|
<sysproperty value="${{apps.{$name}.name}}.test.pdl.mf" key="waf.runtime.test.pdl"/>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="fullname" select="document(concat($name,'/application.xml'),/ccm:project)/ccm:application/@name"/>
|
|
<xsl:variable name="application" select="document(concat(@name,'/application.xml'),/ccm:project)/ccm:application"/>
|
|
<xsl:variable name="hastestdir" select="$application/ccm:directories/ccm:directory[@name='test'] or not($application/ccm:directories)"/>
|
|
<xsl:for-each select="$requires">
|
|
<xsl:variable name="requiredname" select="@name"/>
|
|
<xsl:if test="$requiredname = $fullname">
|
|
<sysproperty value="${{apps.{$name}.name}}.test.pdl.mf" key="waf.runtime.test.pdl"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
<xsl:for-each select="/ccm:project/ccm:prebuilt/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="version" select="@version"/>
|
|
<sysproperty value="${{apps.{$name}.name}}-{$version}.test.pdl.mf" key="waf.runtime.test.pdl"/>
|
|
</xsl:for-each>
|
|
<batchtest todir="{$name}">
|
|
<fileset dir="{$name}/${{build.test.classes.dir}}">
|
|
<include name="**/${{junit.suite}}"/>
|
|
</fileset>
|
|
</batchtest>
|
|
</junit>
|
|
</target>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
<target name="build-tests" description="Builds all applications and tests">
|
|
<xsl:attribute name="depends">
|
|
<xsl:text>init</xsl:text>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="application" select="document(concat(@name,'/application.xml'),/ccm:project)/ccm:application"/>
|
|
<xsl:variable name="hastestdir" select="$application/ccm:directories/ccm:directory[@name='test'] or not($application/ccm:directories)"/>
|
|
<xsl:if test="$hastestdir">
|
|
<xsl:value-of select="concat(',build-tests-',@name)"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:attribute>
|
|
</target>
|
|
<target name="runtests" description="Builds all applications and then runs unit tests">
|
|
<xsl:attribute name="depends">
|
|
<xsl:text>init</xsl:text>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="application" select="document(concat(@name,'/application.xml'),/ccm:project)/ccm:application"/>
|
|
<xsl:variable name="hastestdir" select="$application/ccm:directories/ccm:directory[@name='test'] or not($application/ccm:directories)"/>
|
|
<xsl:if test="$hastestdir">
|
|
<xsl:value-of select="concat(',runtests-',@name)"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:attribute>
|
|
</target>
|
|
</xsl:template>
|
|
<xsl:template name="TargetManifest">
|
|
<xsl:param name="target"/>
|
|
<xsl:param name="type"/>
|
|
<xsl:param name="sourcedirectory"/>
|
|
<target name="manifest-{$type}-{$target}" depends="init">
|
|
<if>
|
|
<not>
|
|
<uptodate targetfile="{$target}/${{build.classes.dir}}/${{apps.{$target}.name}}.{$type}.mf">
|
|
<srcfiles includes="{$sourcedirectory}/**" dir="{$target}"/>
|
|
</uptodate>
|
|
</not>
|
|
<then>
|
|
<!-- The pathsep below is the newline character -->
|
|
<pathconvert dirsep="/" pathsep=" " property="{$type}.files.{$target}">
|
|
<path>
|
|
<fileset dir="{$target}">
|
|
<include name="{$sourcedirectory}/**"/>
|
|
</fileset>
|
|
</path>
|
|
<map from="${{basedir}}${{file.separator}}{$target}${{file.separator}}{$sourcedirectory}${{file.separator}}" to=""/>
|
|
</pathconvert>
|
|
<mkdir dir="{$target}/${{build.classes.dir}}"/>
|
|
<echo message="${{{$type}.files.{$target}}}" file="{$target}/${{build.classes.dir}}/${{apps.{$target}.name}}.{$type}.mf"/>
|
|
</then>
|
|
</if>
|
|
</target>
|
|
</xsl:template>
|
|
<xsl:template name="TargetJavadoc">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="version" select="@version"/>
|
|
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="application" select="document(concat(@name,'/application.xml'),/ccm:project)/ccm:application"/>
|
|
<xsl:variable name="requires" select="$application/ccm:dependencies/ccm:requires"/>
|
|
<target name="javadoc-{$name}" description="Generates the API documentation for the '{$name}' application">
|
|
<xsl:attribute name="depends">
|
|
<xsl:text>init</xsl:text>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="fullname" select="document(concat($name,'/application.xml'),/ccm:project)/ccm:application/@name"/>
|
|
<xsl:for-each select="$requires">
|
|
<xsl:variable name="requiredname" select="@name"/>
|
|
<xsl:if test="$requiredname = $fullname">
|
|
<xsl:value-of select="concat(',build-',$name)"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
</xsl:attribute>
|
|
<mkdir dir="${{app.javadoc.dir}}/{$name}"/>
|
|
<javadoc
|
|
maxmemory="256m"
|
|
author="true"
|
|
version="true"
|
|
use="true"
|
|
destdir="${{app.javadoc.dir}}/{$name}"
|
|
bottom="
|
|
<i>Copyright (c) ${{YEAR}} Red Hat, Inc.
|
|
Corporation. All Rights Reserved.</i>
|
|
Generated at ${{TODAY}}:${{TSTAMP}} UTC"
|
|
windowtitle="${{apps.{$name}.prettyname}} API Documentation"
|
|
doctitle="<h1>${{apps.{$name}.prettyname}} API Documentation</h1>">
|
|
<packageset dir="{$name}/${{src.dir}}"/>
|
|
<classpath refid="server.build.classpath"/>
|
|
<link href="http://java.sun.com/j2se/1.4/docs/api/"/>
|
|
<link href="http://java.sun.com/j2ee/tutorial/api/"/>
|
|
</javadoc>
|
|
</target>
|
|
</xsl:for-each>
|
|
|
|
<target name="javadoc-combine-src" depends="init">
|
|
<mkdir dir="${{build.src.dir}}"/>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<copy todir="${{build.src.dir}}">
|
|
<fileset dir="{$name}/${{src.dir}}"/>
|
|
</copy>
|
|
</xsl:for-each>
|
|
</target>
|
|
|
|
<target name="javadoc" depends="init,javadoc-combine-src" description="Generates the combined API documentation">
|
|
<mkdir dir="${{javadoc.dir}}"/>
|
|
<javadoc
|
|
maxmemory="384m"
|
|
author="true"
|
|
version="true"
|
|
use="true"
|
|
destdir="${{javadoc.dir}}"
|
|
bottom="
|
|
<i>Copyright (c) ${{YEAR}} Red Hat, Inc.
|
|
Corporation. All Rights Reserved.</i>
|
|
Generated at ${{TODAY}}:${{TSTAMP}} UTC"
|
|
windowtitle="${{app.prettyname}} API Documentation"
|
|
doctitle="<h1>${{app.prettyname}} API Documentation</h1>">
|
|
<packageset dir="${{build.src.dir}}"/>
|
|
<classpath refid="server.build.classpath"/>
|
|
<link href="http://java.sun.com/j2se/1.4/docs/api/"/>
|
|
<link href="http://java.sun.com/j2ee/tutorial/api/"/>
|
|
</javadoc>
|
|
</target>
|
|
|
|
<target name="deploy-test">
|
|
<xsl:attribute name="depends">
|
|
<xsl:text>init</xsl:text>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="application" select="document(concat(@name,'/application.xml'),/ccm:project)/ccm:application"/>
|
|
<xsl:variable name="hastestdir" select="$application/ccm:directories/ccm:directory[@name='test'] or not($application/ccm:directories)"/>
|
|
<xsl:if test="$hastestdir">
|
|
<xsl:text>,build-tests-</xsl:text><xsl:value-of select="@name"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:attribute>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<mkdir dir="${{deploy.test.dir}}"/>
|
|
<copy todir="${{deploy.test.dir}}">
|
|
<fileset dir=".">
|
|
<include name="{$name}/${{test.dir}}/**"/>
|
|
</fileset>
|
|
<mapper type="glob" to="*" from="{$name}/${{test.dir}}${{file.separator}}*"/>
|
|
</copy>
|
|
<copy todir="${{deploy.test.classes.dir}}">
|
|
<fileset dir="{$name}/${{build.test.classes.dir}}"/>
|
|
</copy>
|
|
</xsl:for-each>
|
|
</target>
|
|
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetMisc">
|
|
<xsl:variable name="name" select="@name"/>
|
|
|
|
<target name="kaboom">
|
|
<echo>
|
|
_.-^^---....,,--_
|
|
_-- --_
|
|
< >)
|
|
| |
|
|
\._ _./
|
|
```--. . , ; .--'''
|
|
| | |
|
|
.-=|| | |=-.
|
|
`-=#$%@%$#=-'
|
|
| ; :|
|
|
_____.,-#%@$@%#$#~,._____
|
|
</echo>
|
|
</target>
|
|
|
|
<target name="larry">
|
|
<!-- Taken from alt.ascii-art - author Tua Xiong -->
|
|
<echo>
|
|
Credits:
|
|
-------
|
|
|
|
All hail Larry the CCM Lizard!
|
|
|
|
_.--~~~~~~~--._
|
|
/~ ___ ~-._ __
|
|
( /~ > /-._ _, o )~\\
|
|
\\ \< ~<<==\(\_| '''
|
|
_) ''' \\ `~'
|
|
'''
|
|
CCM Build Configuration tools were written and are
|
|
maintained by :
|
|
|
|
Daniel Berrange <berrange@redhat.com>
|
|
Dennis Gregorovic <dgregor@redhat.com>
|
|
|
|
</echo>
|
|
</target>
|
|
|
|
<target name="pmd-check">
|
|
<available property="pmd.available" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="ccm.base.classpath"/>
|
|
</target>
|
|
|
|
<target name="pmd" depends="init,pmd-check" if="pmd.available" description="Runs the PMD utility over the code">
|
|
<mkdir dir="${{pmd.report.dir}}"/>
|
|
<echo message="Generating ${{pmd.report.dir}}/${{pmd.report.file}} for *.java files"/>
|
|
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="ccm.base.classpath"/>
|
|
<pmd rulesetfiles="${{pmd.rulesets}}">
|
|
<formatter type="${{pmd.format}}" toFile="${{pmd.report.dir}}/${{pmd.report.file}}"/>
|
|
<fileset dir=".">
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<include name="{$name}/src/**/*.java"/>
|
|
</xsl:for-each>
|
|
</fileset>
|
|
</pmd>
|
|
</target>
|
|
|
|
<target name="init">
|
|
<echo message="${{ant.file}}"/>
|
|
<tstamp><format property="YEAR" pattern="yyyy"/></tstamp>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<available property="{$name}.test.src.dir.exists" file="{$name}/${{test.src.dir}}" type="dir"/>
|
|
<pathconvert dirsep="/" pathsep=":" property="apps.{$name}.pdl.path" refid="apps.{$name}.pdl.path"/>
|
|
<pathconvert dirsep="/" pathsep=":" property="apps.{$name}.pdl.path.internal" refid="apps.{$name}.pdl.path.internal"/>
|
|
</xsl:for-each>
|
|
<path id="ccm.java.ext.dirs">
|
|
<dirset dir="${{ccm.tools.dir}}">
|
|
<include name="lib/security"/>
|
|
</dirset>
|
|
<pathelement path="${{java.ext.dirs}}"/>
|
|
</path>
|
|
<pathconvert dirsep="/" pathsep=":" property="ccm.java.ext.dirs" refid="ccm.java.ext.dirs"/>
|
|
<condition property="junit.jvmargs" value="-Xdebug -Xrunjdwp:transport=dt_socket,address=${{test.remote.port}},server=y,suspend=y -Xnoagent -Djava.compiler=NONE">
|
|
<and>
|
|
<not><isset property="junit.jvmargs"/></not>
|
|
<isset property="debugtests"/>
|
|
</and>
|
|
</condition>
|
|
<condition property="junit.jvmargs" value="-Djunit.debug=false">
|
|
<not><isset property="junit.jvmargs"/></not>
|
|
</condition>
|
|
<condition property="deploy.dir" value="${{j2ee.webapp.dir}}">
|
|
<and>
|
|
<not><isset property="deploy.dir"/></not>
|
|
<isset property="j2ee.webapp.dir"/>
|
|
</and>
|
|
</condition>
|
|
<condition property="deploy.dir" value="deploy">
|
|
<not><isset property="deploy.dir"/></not>
|
|
</condition>
|
|
<condition property="deploy.conf.dir" value="${{deploy.dir}}/conf">
|
|
<not><isset property="deploy.conf.dir"/></not>
|
|
</condition>
|
|
<condition property="deploy.shared.lib.dir" value="${{deploy.dir}}/webapps/WEB-INF/lib">
|
|
<not><isset property="deploy.shared.lib.dir"/></not>
|
|
</condition>
|
|
<condition property="deploy.private.lib.dir" value="${{deploy.dir}}/webapps/WEB-INF/lib">
|
|
<not><isset property="deploy.private.lib.dir"/></not>
|
|
</condition>
|
|
<condition property="deploy.shared.classes.dir" value="${{deploy.dir}}/webapps/WEB-INF/classes">
|
|
<not><isset property="deploy.shared.classes.dir"/></not>
|
|
</condition>
|
|
<condition property="deploy.system.jars.dir" value="${{deploy.dir}}/webapps/WEB-INF/system">
|
|
<not><isset property="deploy.system.jars.dir"/></not>
|
|
</condition>
|
|
<condition property="deploy.webapp.dir" value="${{deploy.dir}}/webapps">
|
|
<not><isset property="deploy.webapp.dir"/></not>
|
|
</condition>
|
|
<condition property="deploy.war.dir" value="${{deploy.dir}}/webapps">
|
|
<not><isset property="deploy.war.dir"/></not>
|
|
</condition>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:variable name="name" select="@name"/>
|
|
<xsl:variable name="application" select="document(concat(@name,'/application.xml'),/ccm:project)/ccm:application"/>
|
|
<xsl:variable name="shared" select="$application/@shared"/>
|
|
<property value="${{deploy.webapp.dir}}/${{apps.{$name}.webapp.name}}" name="deploy.dir.{$name}"/>
|
|
<xsl:choose>
|
|
<xsl:when test="$shared = 'false'">
|
|
<property value="${{deploy.dir.{$name}}}/WEB-INF/classes" name="deploy.classes.dir.{$name}"/>
|
|
<property value="${{deploy.dir.{$name}}}/WEB-INF/lib" name="deploy.lib.dir.{$name}"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<property value="${{deploy.shared.classes.dir}}" name="deploy.classes.dir.{$name}"/>
|
|
<property value="${{deploy.shared.lib.dir}}" name="deploy.lib.dir.{$name}"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<property value="${{deploy.dir.{$name}}}/WEB-INF/src" name="deploy.src.dir.{$name}"/>
|
|
<property value="${{deploy.dir.{$name}}}/WEB-INF/doc" name="deploy.doc.dir.{$name}"/>
|
|
<property value="${{deploy.dir.{$name}}}/WEB-INF/test" name="deploy.test.dir.{$name}"/>
|
|
<property value="${{deploy.test.dir.{$name}}}/classes" name="deploy.test.classes.dir.{$name}"/>
|
|
<property value="${{deploy.dir.{$name}}}/WEB-INF/api" name="deploy.api.dir.{$name}"/>
|
|
<property value="${{deploy.dir.{$name}}}/WEB-INF/bin" name="deploy.bin.dir.{$name}"/>
|
|
</xsl:for-each>
|
|
<condition property="log4j.configuration.sysproperty" value="file://${{ccm.home}}/conf/log4j.xml">
|
|
<and>
|
|
<not><isset property="log4j.configuration.sysproperty"/></not>
|
|
<available file="${{ccm.home}}/conf/log4j.xml"/>
|
|
</and>
|
|
</condition>
|
|
<condition property="log4j.configuration.sysproperty" value="file://${{ccm.home}}/conf/log4j.properties">
|
|
<and>
|
|
<not><isset property="log4j.configuration.sysproperty"/></not>
|
|
<available file="${{ccm.home}}/conf/log4j.properties"/>
|
|
</and>
|
|
</condition>
|
|
<condition property="log4j.configuration.sysproperty" value="/log4j.properties">
|
|
<and>
|
|
<not><isset property="log4j.configuration.sysproperty"/></not>
|
|
</and>
|
|
</condition>
|
|
</target>
|
|
|
|
<target name="usage" description="Displays usage help">
|
|
<echo message="Run 'ant -projecthelp' for a list of targets. See ant.apache.org for more information on Ant."/>
|
|
</target>
|
|
|
|
</xsl:template>
|
|
|
|
<xsl:template name="TargetJavaC">
|
|
<xsl:param name="destdir"/>
|
|
<xsl:param name="srcpathref"/>
|
|
<xsl:param name="classpathref"/>
|
|
<mkdir dir="{$destdir}"/>
|
|
<javac
|
|
debug="${{compile.debug}}"
|
|
optimize="${{compile.optimize}}"
|
|
deprecation="${{compile.deprecation}}"
|
|
verbose="${{compile.verbose}}"
|
|
nowarn="${{compile.nowarn}}"
|
|
destdir="{$destdir}"
|
|
classpathref="{$classpathref}">
|
|
<src refid="{$srcpathref}"/>
|
|
</javac>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="LocalGroupingTarget">
|
|
<xsl:param name="targetname"/>
|
|
<xsl:param name="description"/>
|
|
<target name="{$targetname}">
|
|
<xsl:if test="$description">
|
|
<xsl:attribute name="description"><xsl:value-of select="$description"/></xsl:attribute>
|
|
</xsl:if>
|
|
<xsl:attribute name="depends">
|
|
<xsl:text>init</xsl:text>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:value-of select="concat(',',$targetname,'-',@name)"/>
|
|
</xsl:for-each>
|
|
</xsl:attribute>
|
|
</target>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="GlobalGroupingTarget">
|
|
<xsl:param name="targetname"/>
|
|
<target name="{$targetname}">
|
|
<xsl:attribute name="depends">
|
|
<xsl:text>init</xsl:text>
|
|
<xsl:for-each select="/ccm:project/ccm:prebuilt/ccm:application">
|
|
<xsl:value-of select="concat(',',$targetname,'-',@name)"/>
|
|
</xsl:for-each>
|
|
<xsl:for-each select="/ccm:project/ccm:build/ccm:application">
|
|
<xsl:value-of select="concat(',',$targetname,'-',@name)"/>
|
|
</xsl:for-each>
|
|
</xsl:attribute>
|
|
</target>
|
|
</xsl:template>
|
|
|
|
</xsl:stylesheet>
|