Page: http://wiki.cocoondev.org/Wiki.jsp?page=MarcPortier , version: 9 on Fri Jun 27 17:05:47 2003 by MarcPortier
+ Personal Bookmark section for stuff in this Wiki + + * [XPatchTaskUsage] + Page: http://wiki.cocoondev.org/Wiki.jsp?page=YourCocoonBasedProject , version: 5 on Fri Jun 27 17:34:47 2003 by MarcPortier - 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% + ---- + !Addendum + + I recently automated some more of this in a set of ant-tasks that you can include in your own project's build.xml. + + It defers with the above only in details (and it should work for linux as well) + + {{{ + <!-- + This Apache Ant build.xml snippet contains targets for helping out + managing the Cocoon dependencies of your project. + + Usage: (assuming you use Apache Ant for your projects) + + 1) Copy this file to somewhere in your project. + (e.g. to ./src/targets/cocoon-build.xml) + 2) Add the following to the top of your project's Ant build.xml script + (possibly adjusting the path): + + <!DOCTYPE project [ + <!ENTITY cocoon-targets SYSTEM "file:./src/targets/cocoon-build.xml"> + ]> + + 3) Before the closing '</project>' in your build.xml, add this: + + &cocoon-targets; + + + This is like expanding a macro: it pulls in the contents of this file. + All targets in this build file snippet depend upon + the following properties being set + 1. cocoon-dist.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 + + + A minimal build.xml would thus be: + + <!DOCTYPE project [ + <!ENTITY cocoon-targets SYSTEM "file:./cocoon-targets.ent"> + ]> + + <project default="site"> + <property name="cocoon-dist.home" value="location-to-cocoon-src-dist" /> + <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" /> + + &cocoon-targets; + </project> + --> + + + <!-- sets some essesntial 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 + cd %COCOON_HOME% + 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 %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/sh + cd $COCOON_HOME + build.sh -propertyfile $PROJECT_PROPERTIES clean webapp -Dbuild.webapp=$PROJECT_WEBAPP + -Dtools.task.dest=$PROJECT_TASKDEFS + ]]></echo> + + <echo file="${cocoon-tool.dir}/runc2.${shbat}"><![CDATA[ + #!/bin/sh + export JETTY_WEBAPP=$PROJECT_WEBAPP + cd $COCOON_HOME + cocoon.sh servlet-debug + ]]></echo> + + </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 get_cocoon' 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"/> + + <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> + + + + <!-- gets cocoon-webapp into this project --> + <target name="cocoon.get" depends="-cocoon.shbat"> + <exec executable="${cocoon-tool.dir}/getc2.${shbat}" > + <env key="COCOON_HOME" file="${cocoon-dist.home}" /> + <env key="PROJECT_PROPERTIES" file="${cocoon-build.properties}" /> + <env key="PROJECT_WEBAPP" file="${cocoon.webapp}" /> + <env key="PROJECT_TASKDEFS" file="${cocoon.tasks}" /> + </exec> + </target> + + + + <!-- runs cocoon on the built in jetty to test --> + <target name="cocoon.run" depends="-cocoon.shbat, -cocoon.check"> + <exec executable="${cocoon-tool.dir}/runc2.${shbat}" > + <env key="COCOON_HOME" file="${cocoon-dist.home}" /> + <env key="PROJECT_WEBAPP" file="${cocoon.webapp}" /> + </exec> + </target> + + }}} + + Page: http://wiki.cocoondev.org/Wiki.jsp?page=XPatchTaskUsage , version: 7 on Fri Jun 27 17:23:39 2003 by MarcPortier + + ---- + !Addendum + + About the xpath context for the various expressions -- ([mpo|MarcPortier]) + + - The xpath expressions in the attributes @xpath and @remove start from the context of the document-root. + + - The others (@insert-before, @insert-after, @unless(-path)) start from the context pointed to by @xpath. + +
