| <?xml version="1.0"?> |
| <!-- |
| This Apache Ant build.xml snippet contains targets for helping out |
| managing the Cocoon dependencies of your project. |
| It assumes that you have Ant version 1.6.x or later that supports the |
| <import> task. |
| |
| Usage: [full automatic, for fresh projects starts] |
| 1) Copy this file to the root of your project |
| (e.g. to ./build-cocoon.targets.xml) |
| and edit this file and replace "YourCocoonBasedProject" with your project name |
| |
| 2) ant -buildfile build-cocoon-targets.xml -Dcocoon.distro.home=/...abs_path_to_cocoon_src_distro... |
| |
| this will generate a typical directory-structure containing: |
| ./build.xml (minimal version to be completed to project needs) |
| ./user.properties (ready pointing to cocoon.distro.home) |
| ./src/cocoon/local.build.properties |
| ./src/cocoon/webapp |
| ./src/cocoon/xconf |
| .cvsignore (ignoring build and tools/cocoon/*) |
| |
| You manually start changing these as you go allong with your project. |
| |
| The script will not overwrite files that already exist. |
| |
| Usage: [manual, for existing build.xml files] |
| 1) Copy this file to the root of your project |
| (e.g. to ./build-cocoon.targets.xml) |
| and edit this file and replace "YourCocoonBasedProject" with your project name |
| |
| 2) Add the following to the top-level of your project's Ant build.xml script (possibly adjusting the path): |
| |
| <property name="cocoon.targets" value="./build-cocoon.targets.xml"> |
| <import file="${cocoon.targets}"> |
| |
| 3) Add in various properties assumed to be available (change the paths to your own liking) |
| |
| <property file="user.properties"> |
| <property name="src" value="./src" /> |
| <property name="src.cocoon" value="${src}/cocoon" /> |
| <property name="cocoon.build.properties" value="${src.cocoon}/local.build.properties"> |
| <property name="cocoon.xconf.dir" value="${src.cocoon}/xconf"> |
| <property name="cocoon.tool.dir" value="tools/cocoon"> |
| |
| |
| How it works: |
| |
| All targets in this build file snippet depend upon |
| the following properties being set |
| 1. cocoon.distro.home |
| location of src distribution of cocoon to use |
| 2. cocoon.build.properties |
| property file with specific cocoon build settings |
| (selecting which blocks, samples,...) |
| typically src/cocoon/local.build.properties |
| 3. cocoon.xconf.dir |
| location where the appropriate patch files can be found |
| typically src/cocoon/xconf |
| 4. cocoon.tool.dir |
| where cocoon is build inside your project |
| typically this is tools/cocoon |
| |
| Updates and Background: |
| http://wiki.cocoondev.org/Wiki.jsp?page=YourCocoonBasedProject |
| --> |
| <project name="YourCocoonBasedProject" default="seed" > |
| |
| <!-- if not set yet... --> |
| <property file="user.properties" /> |
| <property name="src" value="./src" /> |
| <property name="src.cocoon" value="${src}/cocoon" /> |
| <property name="cocoon.build.properties" value="${src.cocoon}/local.build.properties" /> |
| <property name="cocoon.xconf.dir" value="${src.cocoon}/xconf" /> |
| <property name="cocoon.tool.dir" value="tools/cocoon" /> |
| <property name="cocoon.unpatched" value="${cocoon.tool.dir}/unpatched"/> |
| |
| <!-- |
| sets some essential properties for these targets |
| --> |
| <target name="-cocoon:init"> |
| <mkdir dir="${cocoon.tool.dir}" /> |
| <property name="cocoon.webapp" value="${cocoon.tool.dir}/webapp" /> |
| <property name="cocoon.tasks" value="${cocoon.tool.dir}/taskdefs" /> |
| <property name="cocoon.lib" value="${cocoon.webapp}/WEB-INF/lib" /> |
| </target> |
| |
| <!-- |
| checks what kind of OS this is running on |
| --> |
| <target name="-cocoon:oscheck" > |
| <condition property="isWindows"> |
| <os family="windows" /> |
| </condition> |
| </target> |
| |
| <!-- |
| creates Windows batch files for cocoon dependencies |
| --> |
| <target name="-cocoon:bat" if="isWindows" |
| depends="-cocoon:init, -cocoon:oscheck" > |
| <echo>Building batch files for support on windows OS</echo> |
| <property name="shbat" value="bat" /> |
| |
| <echo file="${cocoon.tool.dir}/getc2.${shbat}"><![CDATA[@echo off |
| if "%COCOON_HOME%"=="" then echo You haven't set the COCOON_HOME environment variable. |
| echo GOING TO %COCOON_HOME% |
| cd /d %COCOON_HOME% |
| echo Running build.bat -propertyfile "%PROJECT_PROPERTIES%" clean webapp -Dbuild.webapp="%PROJECT_WEBAPP%" -Dtools.tasks.dest="%PROJECT_TASKDEFS%" |
| build.bat -propertyfile "%PROJECT_PROPERTIES%" clean webapp -Dbuild.webapp="%PROJECT_WEBAPP%" -Dtools.tasks.dest="%PROJECT_TASKDEFS%" |
| ]]></echo> |
| |
| <echo file="${cocoon.tool.dir}/runc2.${shbat}"><![CDATA[@echo off |
| set JETTY_WEBAPP=%PROJECT_WEBAPP% |
| cd /d %COCOON_HOME% |
| cocoon.bat servlet-debug |
| ]]></echo> |
| </target> |
| |
| <!-- |
| creates shell scripts for cocoon dependencies |
| --> |
| <target name="-cocoon:sh" unless="isWindows" |
| depends="-cocoon:init, -cocoon:oscheck" > |
| |
| <echo>Building shell scripts for support on non-windows</echo> |
| <property name="shbat" value="sh" /> |
| |
| <echo file="${cocoon.tool.dir}/getc2.${shbat}"><![CDATA[#!/bin/bash |
| cd $COCOON_HOME |
| echo running /build.sh -propertyfile $PROJECT_PROPERTIES clean webapp -Dbuild.webapp=$PROJECT_WEBAPP -Dtools.tasks.dest=$PROJECT_TASKDEFS |
| ./build.sh -propertyfile $PROJECT_PROPERTIES clean webapp -Dbuild.webapp=$PROJECT_WEBAPP -Dtools.tasks.dest=$PROJECT_TASKDEFS |
| ]]></echo> |
| <chmod file="${cocoon.tool.dir}/getc2.${shbat}" perm="u+x"/> |
| |
| <echo file="${cocoon.tool.dir}/runc2.${shbat}"><![CDATA[#!/bin/bash |
| export COCOON_WEBAPP_HOME=$PROJECT_WEBAPP |
| echo COCOON_WEBAPP_HOME=$COCOON_WEBAPP_HOME |
| |
| #LD_LIBRARY_PATH=/usr/lib/mps/secv1:$LD_LIBRARY_PATH |
| #export LD_LIBRARY_PATH |
| |
| #AM_LIBS=/etc/opt/SUNWam/config:/opt/SUNWam/lib/am_logging.jar:/opt/SUNWam/lib/dom.jar:/usr/share/lib/mps/secv1/jss4.jar:/opt/SUNWam/lib/servlet.jar:/opt/SUNWam/lib/am_sdk.jar:/opt/SUNWam/lib/amclientsdk.jar:/opt/SUNWam/lib/am_services.jar:/opt/SUNWam/locale:/opt/SUNWam/lib/mail.jar |
| AM_LIBS=/opt/e-govDT-RA/jes/SUNWam/config:/opt/SUNWam/lib/amclientsdk.jar:/opt/SUNWam/lib/servlet.jar |
| echo AM_LIBS=$AM_LIBS |
| |
| LOADER_LIB="${COCOON_HOME}/tools/loader:${AM_LIBS}" |
| export LOADER_LIB |
| |
| JAVA_OPTIONS="-server -Xbootclasspath/a:${JAVA_HOME}/jre/lib/rt.jar:/opt/SUNWam/lib/jdk_logging.jar -Djava.protocol.handler.pkgs=com.iplanet.services.comm" |
| export JAVA_OPTIONS |
| echo JAVA_OPTIONS=$JAVA_OPTIONS |
| |
| cd $COCOON_HOME |
| #./cocoon.sh servlet-debug |
| ./cocoon.sh servlet |
| ]]></echo> |
| <chmod file="${cocoon.tool.dir}/runc2.${shbat}" perm="u+x"/> |
| </target> |
| |
| <!-- |
| creates as needed batch files or shell scripts |
| --> |
| <target name="-cocoon:shbat" depends="-cocoon:bat, -cocoon:sh" /> |
| |
| <!-- |
| checks if the cocoon dependency is holding what we expect |
| sets a variable if all is ok |
| --> |
| <target name="-cocoon:test" depends="-cocoon:init"> |
| <condition property="cocoon.ok" value="true"> |
| <and> |
| <available type="dir" file="${cocoon.lib}" /> |
| <available classname="XConfToolTask" |
| classpath="${cocoon.tasks}"/> |
| </and> |
| </condition> |
| </target> |
| |
| <!-- |
| fails the build if the cocoon dependency is not met |
| --> |
| <target name="-cocoon:check" depends="-cocoon:test" unless="cocoon.ok"> |
| <fail>No cocoon available. Run 'ant cocoon.get' first.</fail> |
| </target> |
| |
| |
| <target name="-cocoon:patch"> |
| <echo>Patching ${cocoon.patch.target} with |
| ${cocoon.xconf.dir}/*.${cocoon.patch.src-extension} ...</echo> |
| <xpatch |
| file="${cocoon.patch.target}" |
| srcdir="${cocoon.xconf.dir}" |
| includes="**/*.${cocoon.patch.src-extension}"/> |
| </target> |
| |
| <!-- |
| applies the patch files in the ${cocoon.xconf.dir} |
| on the various cocoon conf files |
| --> |
| <target name="cocoon:xconf" depends="-cocoon:check"> |
| <path id="cocoon.tasks.cp"> |
| <pathelement path="${cocoon.tasks}" /> |
| <path> |
| <fileset dir="${cocoon.lib}"> |
| <include name="xalan*.jar" /> |
| <include name="xerces*.jar" /> |
| <include name="xml*.jar" /> |
| </fileset> |
| </path> |
| </path> |
| |
| <taskdef |
| name="xpatch" |
| classname="XConfToolTask" |
| classpathref="cocoon.tasks.cp"/> |
| |
| <xpatch file="${cocoon.webapp}/WEB-INF/cocoon.xconf" srcdir=""> |
| <include name="${cocoon.xconf.dir}/*.xconf"/> |
| </xpatch> |
| |
| <antcall target="-cocoon:patch" > |
| <param name="cocoon.patch.target" |
| value="${cocoon.webapp}/WEB-INF/cocoon.xconf" /> |
| <param name="cocoon.patch.src-extension" |
| value="xconf" /> |
| </antcall> |
| |
| <antcall target="-cocoon:patch" > |
| <param name="cocoon.patch.target" |
| value="${cocoon.webapp}/WEB-INF/logkit.xconf" /> |
| <param name="cocoon.patch.src-extension" |
| value="xlog" /> |
| </antcall> |
| |
| <antcall target="-cocoon:patch" > |
| <param name="cocoon.patch.target" |
| value="${cocoon.webapp}/sitemap.xmap" /> |
| <param name="cocoon.patch.src-extension" |
| value="xmap" /> |
| </antcall> |
| |
| <antcall target="-cocoon:patch" > |
| <param name="cocoon.patch.target" |
| value="${cocoon.webapp}/WEB-INF/web.xml" /> |
| <param name="cocoon.patch.src-extension" |
| value="xweb" /> |
| </antcall> |
| </target> |
| |
| <target name="cocoon:unpatch"> |
| <copy todir="${cocoon.webapp}" overwrite="true" > |
| <fileset dir="${cocoon.unpatched}"> |
| <include name="WEB-INF/web.xml" /> |
| <include name="WEB-INF/cocoon.xconf" /> |
| <include name="WEB-INF/logkit.xconf" /> |
| <include name="sitemap.xmap" /> |
| </fileset> |
| </copy> |
| </target> |
| |
| <target name="cocoon:get" depends="-cocoon:shbat" description="Get cocoon into this project"> |
| <mkdir dir="${cocoon.webapp}" /> |
| <exec executable="${cocoon.tool.dir}/getc2.${shbat}" > |
| <env key="COCOON_HOME" file="${cocoon.distro.home}" /> |
| <env key="PROJECT_PROPERTIES" file="${cocoon.build.properties}" /> |
| <env key="PROJECT_WEBAPP" file="${cocoon.webapp}" /> |
| <env key="PROJECT_TASKDEFS" file="${cocoon.tasks}" /> |
| </exec> |
| <mkdir dir="${cocoon.unpatched}" /> |
| <copy todir="${cocoon.unpatched}"> |
| <fileset dir="${cocoon.webapp}" > |
| <include name="WEB-INF/web.xml" /> |
| <include name="WEB-INF/cocoon.xconf" /> |
| <include name="WEB-INF/logkit.xconf" /> |
| <include name="sitemap.xmap" /> |
| </fileset> |
| </copy> |
| </target> |
| |
| <target name="cocoon:run" depends="-cocoon:shbat, -cocoon:check" description="Run cocoon on the built-in jetty to test"> |
| <exec executable="${cocoon.tool.dir}/runc2.${shbat}" > |
| <env key="COCOON_HOME" file="${cocoon.distro.home}" /> |
| <env key="PROJECT_WEBAPP" file="${cocoon.webapp}" /> |
| </exec> |
| </target> |
| |
| |
| <!-- |
| Below are some targets that build a default project-setting which allows you to |
| make use of the reusable targets declared in this build-script. |
| |
| You can launch the 'seed' target to start-off your project. |
| --> |
| <target name="seed-check"> |
| <available property="cocoonHomeOk" file="${cocoon.distro.home}" /> |
| <fail unless="cocoonHomeOk" > |
| This script needs a property $${cocoon.distro.home} to be set and |
| pointing to an existing directory containing a cocoon 2.1.x distro. |
| You can set it either by providing a -D flag to ant, or |
| by adding it to a local ./user.properties. |
| </fail> |
| |
| <available property="existsBuild" file="build.xml" /> |
| <available property="existsLocalProps" file="${cocoon.build.properties}" /> |
| <available property="existsUserProps" file="user.properties" /> |
| <available property="existsCvsIgnore" file=".cvsignore" /> |
| </target> |
| |
| <target name="msg-seed-build" if="existsBuild"> |
| <echo>build.xml exists. This script cannot overwrite it. |
| If you want to regenerate the build.xml then manually delete it prior to running the seed target again.</echo> |
| </target> |
| |
| <target name="seed-build" depends="msg-seed-build" unless="existsBuild"> |
| <echo>Creating build.xml...</echo> |
| <echo file="build.xml"><![CDATA[<?xml version="1.0"?> |
| <!-- |
| File automatically generated by ant script for ${ant.project.name}. |
| Manually extend it to your own needs. |
| --> |
| <project name="${ant.project.name}" default="init"> |
| <property file="user.properties" /> |
| |
| <property name="src" value="src" /> |
| <property name="src.java" value="${src}/java" /> |
| <property name="src.cocoon" value="${src}/cocoon" /> |
| <property name="src.webapp" value="${src.cocoon}/webapp" /> |
| |
| <property name="build" value="build" /> |
| <property name="build.classes" value="${build}/classes" /> |
| <property name="zipfile" value="${build}/$${ant.project.name}.zip" /> |
| <property name="warfile" value="${build}/$${ant.project.name}.war" /> |
| |
| <property name="lib" value="lib" /> |
| |
| <property name="cocoon-build.properties" value="${src.cocoon}/local.build.properties" /> |
| <property name="cocoon-xconf.dir" value="${src.cocoon}/xconf" /> |
| <property name="cocoon-tool.dir" value="tools/cocoon" /> |
| <property name="cocoon.webapp" value="${cocoon-tool.dir}/webapp" /> |
| <property name="cocoon.lib" value="${cocoon.webapp}/WEB-INF/lib" /> |
| <property name="cocoon.classes" value="${cocoon.webapp}/WEB-INF/classes" /> |
| |
| <property name="cocoon-targets" value="${ant.file}" /> |
| <!-- insert properties here to override defaults in the import cocoon-targets script --> |
| <import file="$${cocoon-targets}" /> |
| |
| <path id="all.cp"> |
| <pathelement location="${build.classes}" /> |
| <fileset dir="${cocoon.lib}"> |
| <include name="*.jar"/> |
| </fileset> |
| <fileset dir="${lib}"> |
| <include name="*.jar"/> |
| </fileset> |
| </path> |
| |
| <target name="init"> |
| <mkdir dir="${build.classes}" /> |
| </target> |
| |
| <target name="compile" depends="init,-cocoon:check" > |
| <javac srcdir="${src.java}" destdir="${build.classes}" debug="true" > |
| <classpath refid="all.cp"/> |
| <include name="**/*.java"/> |
| </javac> |
| </target> |
| |
| <target name="webapp" depends="compile, cocoon:xconf" |
| description="configure the webapp"> |
| <copy todir="${cocoon.lib}"> |
| <fileset dir="${lib}"> |
| <include name="*.jar"/> |
| </fileset> |
| </copy> |
| <copy todir="${cocoon.classes}"> |
| <fileset dir="${build.classes}" /> |
| </copy> |
| <copy todir="${cocoon.webapp}"> |
| <fileset dir="${src.webapp}" /> |
| </copy> |
| </target> |
| |
| <target name="zip" depends="init"> |
| <zip zipfile="${zipfile}" basedir="." excludes="**/build/**, tools/**" /> |
| </target> |
| |
| <target name="war" depends="webapp" > |
| <jar destfile="${warfile}" basedir="${cocoon.webapp}" /> |
| </target> |
| |
| </project> |
| ]]></echo> |
| </target> |
| |
| <target name="seed-dirs"> |
| <mkdir dir="${src.cocoon}" /> |
| <mkdir dir="${src.cocoon}/webapp" /> |
| <mkdir dir="${cocoon.xconf.dir}" /> |
| <mkdir dir="${cocoon.tool.dir}" /> |
| <mkdir dir="${cocoon.tool.dir}/webapp" /> |
| <mkdir dir="src/java" /> |
| <mkdir dir="lib" /> |
| </target> |
| |
| <target name="msg-seed-userprops" if="existsUserProps"> |
| <echo>user.properties already exists. This script cannot overwrite it. |
| If you want to regenerate the user.properties then manually delete it prior to running the seed target again.</echo> |
| </target> |
| |
| <target name="seed-userprops" depends="msg-seed-userprops" unless="existsUserProps"> |
| <echo file="user.properties"># |
| # File automatically generated by ant script for ${ant.project.name}. |
| # Manually extend it to your own needs. |
| # |
| cocoon.distro.home=${cocoon.distro.home}</echo> |
| </target> |
| |
| <target name="msg-seed-cvsignore" if="existsCvsIgnore"> |
| <echo>.cvsignore already exists. This script cannot overwrite it. |
| If you want to regenerate the .cvsignore then manually delete it prior to running the seed target again.</echo> |
| </target> |
| |
| <target name="seed-cvsignore" depends="msg-seed-cvsignore" unless="existsCvsIgnore"> |
| <echo file=".cvsignore">build |
| tools |
| user.properties</echo> |
| </target> |
| |
| <target name="msg-seed-localprops" if="existsLocalProps" > |
| <echo>${cocoon.build.properties} already exists. This script cannot overwrite it. |
| If you want to regenerate the ${cocoon.build.properties} then manually delete it prior to running the seed target again.</echo> |
| </target> |
| |
| <target name="seed-localprops" |
| depends="msg-seed-localprops, seed-dirs" |
| unless="existsLocalProps" > |
| <concat destfile="${cocoon.build.properties}" > |
| <fileset dir="${cocoon.distro.home}"> |
| <include name="build.properties" /> |
| <include name="blocks.properties" /> |
| </fileset> |
| </concat> |
| </target> |
| |
| <target name="seed" depends="seed-check, seed-localprops, seed-cvsignore, seed-userprops, seed-build"> |
| <echo>Done. |
| |
| The directory src/cocoon/webapp is created to hold your cocoon |
| webapp resources. |
| The directory src/cocoon/xconf is created to hold XConfPatch files |
| to (optionally) modify the cocoon.xconf log.xconf web.xml and |
| (root) sitemap.xmap |
| |
| From here: |
| --------- |
| You should now edit the file ${cocoon.build.properties} to select |
| only those optional components of Cocoon that your project needs. |
| IMPORTANT: Remove the path-entries from that file! |
| |
| The build.xml can freely be extended for your project needs. |
| |
| To build a fresh Cocoon base for this project |
| (when you updated the distro pointed to by -Dcocoon.distro.home) |
| > ant cocoon:get |
| |
| To blend in your own project resources and classes: |
| > ant webapp |
| |
| To test-run using the Jetty container: |
| > ant cocoon:run |
| </echo> |
| </target> |
| </project> |