You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by re...@apache.org on 2005/04/21 11:42:04 UTC

svn commit: r164017 - /cocoon/trunk/tools/external-project-build/generic-build.xml

Author: reinhard
Date: Thu Apr 21 02:42:01 2005
New Revision: 164017

URL: http://svn.apache.org/viewcvs?rev=164017&view=rev
Log:
fix dependencies, start with support for unit tests

Added:
    cocoon/trunk/tools/external-project-build/generic-build.xml

Added: cocoon/trunk/tools/external-project-build/generic-build.xml
URL: http://svn.apache.org/viewcvs/cocoon/trunk/tools/external-project-build/generic-build.xml?rev=164017&view=auto
==============================================================================
--- cocoon/trunk/tools/external-project-build/generic-build.xml (added)
+++ cocoon/trunk/tools/external-project-build/generic-build.xml Thu Apr 21 02:42:01 2005
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<project name="Cocoon build system" default="cocoon:init">
+
+    <target name="cocoon:core-setProperties" depends="cocoon:before-setProperties">
+        <!-- get the properties of properties configuration files -->
+        <property name="cocoon.server" value="localhost"/>
+        <property file="${cocoon.server}.build.properties"/>
+
+        <property file="project.properties"/>
+
+        <!-- conditions depending on property values -->
+        <property name="cocoon.container.use" value="false"/>
+        <property name="cocoon.classesToJAR" value="false"/>
+        <condition property="cocoon.cond.container.use">
+          <istrue value="${cocoon.container.use}"/>
+        </condition>
+        <condition property="cocoon.cond.webapp.in.context">
+          <equals arg1="${cocoon.webapp.path}" arg2=""/>
+        </condition>           
+        <condition property="cocoon.cond.classesToJAR">
+          <and>
+              <istrue value="${cocoon.cond.webapp.in.context}"/>
+              <istrue value="${cocoon.classesToJAR}"/>
+          </and>
+        </condition>
+
+        <!-- repository directory structure -->
+        <property name="cocoon.rep.cocoon.dir" value="${cocoon.rep}/cocoon/${cocoon.version}"/>
+        <property name="cocoon.rep.cocoon.webapp.dir" value="${cocoon.rep.cocoon.dir}/webapp"/>
+        <property name="cocoon.rep.cocoon.lib.dir" value="${cocoon.rep.cocoon.dir}/webapp/WEB-INF/lib"/>
+        <property name="cocoon.rep.cocoon.classes.dir" value="${cocoon.rep.cocoon.dir}/webapp/WEB-INF/classes"/>
+        <property name="cocoon.rep.cocoon.db.dir" value="${cocoon.rep.cocoon.webapp.dir}/WEB-INF/db"/>
+        <property name="cocoon.rep.container.dir" value="${cocoon.rep}/container/${cocoon.container.version}"/>
+    	
+		<!-- container properties -->
+        <property file="${cocoon.rep.container.dir}/server.properties"/>
+        	
+        <!-- target directory structure -->
+        <property name="cocoon.build.dir" value="build"/>
+        <property name="cocoon.build.java" value="${cocoon.build.dir}/java"/>   
+        <property name="cocoon.build.java.classes" value="${cocoon.build.java}/classes"/>           
+        <property name="cocoon.build.junit" value="${cocoon.build.dir}/test/junit"/>    
+        <property name="cocoon.build.junit.classes" value="${cocoon.build.junit}/classes"/>                     
+        <property name="cocoon.build.junit.output" value="${cocoon.build.junit}/output"/>         
+        <property name="cocoon.build.htmlunit" value="${cocoon.build.dir}/test/htmlunit"/>       
+        <property name="cocoon.build.htmlunit.classes" value="${cocoon.build.htmlunit}/classes"/>            
+        <property name="cocoon.build.htmlunit.output" value="${cocoon.build.htmlunit}/output"/>                    
+        <property name="cocoon.build.webapp.war.dir" value="${cocoon.build.dir}/${cocoon.server}_webapp"/>
+        <property name="cocoon.build.webapp.dir" value="${cocoon.build.dir}/${cocoon.server}_webapp/ROOT"/>
+        <property name="cocoon.build.container.dir" value="${cocoon.build.dir}/${cocoon.server}_container"/>
+
+        <!-- local directories -->
+        <property name="cocoon.local.webapp.dir" value="webapp"/>
+        <property name="cocoon.local.src.dir" value="java"/>
+        <property name="cocoon.local.junit.dir" value="test/junit"/>   
+        <property name="cocoon.local.lib.dir" value="lib"/>
+        <property name="cocoon.local.conf.dir" value="conf"/>
+
+        <!-- default values for compiler settings -->
+        <property name="cocoon.compiler" value="modern"/>
+        <property name="cocoon.compiler.debug" value="on"/>
+        <property name="cocoon.compiler.optimize" value="on"/>
+        <property name="cocoon.compiler.deprecation" value="off"/>
+        <property name="cocoon.compiler.nowarn" value="on"/>
+        <property name="cocoon.compiler.source.vm" value="1.3"/>
+        <property name="cocoon.compiler.target.vm" value="1.3"/>
+     
+        <!-- classpaths -->
+        <path id="cocoon:classpath">
+            <fileset dir="${cocoon.rep.cocoon.lib.dir}">
+                <include name="*.jar" />
+            </fileset>
+            <fileset dir="${cocoon.local.lib.dir}">
+                <include name="*.jar" />
+            </fileset>
+            <dirset dir="${cocoon.rep.cocoon.classes.dir}" />
+        </path>
+    </target>
+
+    <target name="cocoon:init" depends="cocoon:setProperties, cocoon:setFilters">
+        <!-- global filters -->
+        <filter token="cocoon.filter.webapp.path" value="${cocoon.webapp.path}"/>
+    </target>
+
+    <target name="cocoon:core-webapp" depends="cocoon:before-webapp">
+        <mkdir dir="${cocoon.build.webapp.dir}"/>
+
+        <!-- copy Cocoon -->
+        <copy todir="${cocoon.build.webapp.dir}">
+            <fileset dir="${cocoon.rep.cocoon.webapp.dir}">
+                <include name="WEB-INF/**"/>
+            </fileset>
+        </copy>
+
+        <!-- copy local resources if the application runs *within* the servlet context -->
+        <antcall target="cocoon:copyWebapp"/>
+
+        <copy todir="${cocoon.build.webapp.dir}" filtering="on">
+            <fileset dir="${cocoon.local.webapp.dir}">
+                <include name="sitemap.xmap"/>
+            </fileset>
+        </copy>
+
+        <!-- customize Cocoon -->
+        <copy todir="${cocoon.build.webapp.dir}/WEB-INF/xconf" filtering="on" overwrite="true">
+            <fileset dir="${cocoon.local.conf.dir}">
+                <include name="*xconf"/>
+            </fileset>
+        </copy>
+
+        <!-- add own Java classes -->
+        <antcall target="cocoon:compile"/>
+        <antcall target="cocoon:classesToJAR"/>
+
+        <!-- copy local libraries -->
+        <copy todir="${cocoon.build.webapp.dir}/WEB-INF/lib" filtering="off">
+            <fileset dir="${cocoon.local.lib.dir}"/>
+        </copy>
+    </target>
+    
+    <target name="cocoon:copyWebapp" if="cocoon.cond.webapp.in.context">
+        <echo message=".... copyWebapp"/>
+        <copy todir="${cocoon.build.webapp.dir}" filtering="off">
+            <fileset dir="${cocoon.local.webapp.dir}">
+                <exclude name="sitemap.xmap"/>
+            </fileset>
+        </copy>      
+    </target>
+
+    <target name="cocoon:classesToJAR" if="cocoon.cond.classesToJAR">
+        <zip destfile="${cocoon.build.webapp.dir}/WEB-INF/lib/_project.jar">
+            <fileset dir="${cocoon.build.webapp.dir}/WEB-INF/classes"/>
+        </zip>
+        <delete dir="${cocoon.build.webapp.dir}/WEB-INF/classes"/>
+    </target>
+
+    <target name="cocoon:core-war" depends="cocoon:before-war">
+        <zip destfile="${cocoon.build.webapp.war.dir}/ROOT.war">
+            <fileset dir="${cocoon.build.webapp.dir}"/>
+        </zip>
+    </target>
+
+    <target name="cocoon:core-container" depends="cocoon:before-container">
+        <ant antfile="${cocoon.rep.container.dir}/container-build.xml"
+            target="cocoon:create" inheritall="true"/>
+    </target>
+
+    <target name="cocoon:core-run" depends="cocoon:before-run">
+        <ant antfile="${cocoon.rep.container.dir}/container-build.xml"
+            target="cocoon:run" inheritall="true"/>      
+    </target>
+
+    <target name="cocoon:core-stop" depends="cocoon:init, cocoon:before-stop">
+        <ant antfile="${cocoon.rep.container.dir}/container-build.xml"
+            target="cocoon:stop" inheritall="true"/>
+    </target>
+    
+    <target name="cocoon:core-compile" depends="cocoon:before-compile">
+        <!-- TODO support more than one directory with Java classes -->
+        <mkdir dir="${cocoon.build.java}"/>
+        <mkdir dir="${cocoon.build.java.classes}"/>   
+        <mkdir dir="${cocoon.build.webapp.dir}/WEB-INF/classes"/>
+        <copy todir="${cocoon.build.java.classes}" filtering="on">
+            <fileset dir="${cocoon.local.src.dir}">
+                <exclude name="**/*.java"/>
+                <exclude name="**/.svn"/>   
+            </fileset>
+        </copy>
+        <javac classpathref="cocoon:classpath"
+               compiler="${cocoon.compiler}"
+               nowarn="${cocoon.compiler.nowarn}"
+               source="${cocoon.compiler.source.vm}"
+               target="${cocoon.compiler.target.vm}"
+               deprecation="${cocoon.compiler.deprecation}"
+               optimize="${cocoon.compiler.optimize}"
+               debug="${cocoon.compiler.debug}"
+               destdir="${cocoon.build.java.classes}"
+               srcdir="${cocoon.local.src.dir}" />
+        <copy todir="${cocoon.build.webapp.dir}/WEB-INF/classes" filtering="off">
+            <fileset dir="${cocoon.build.java.classes}">
+                <exclude name="**/*.java"/>
+                <exclude name="**/.svn"/>   
+            </fileset>
+        </copy>
+    </target>
+
+    <target name="cocoon:core-clean" depends="cocoon:before-clean">
+        <delete includeEmptyDirs="true">
+          <fileset dir="${cocoon.build.dir}">
+              <include name="*_container/**"/>
+              <include name="*_webapp/**"/>
+          </fileset>
+        </delete>
+    </target>
+
+    <target name="cocoon:core-clean-all" depends="cocoon:before-clean-all">
+        <delete dir="${cocoon.build.dir}"/>
+    </target>
+
+    <!-- interception targets -->
+    <target name="cocoon:before-setProperties"/>
+    <target name="cocoon:after-setProperties" depends="cocoon:core-setProperties"/>
+    <target name="cocoon:before-webapp" depends="cocoon:init"/>
+    <target name="cocoon:after-webapp" depends="cocoon:core-webapp"/>
+    <target name="cocoon:before-war" depends="cocoon:webapp"/>
+    <target name="cocoon:after-war" depends="cocoon:core-war"/>
+    <target name="cocoon:before-container" depends="cocoon:init"/>
+    <target name="cocoon:after-container" depends="cocoon:core-container"/>
+    <target name="cocoon:before-run" depends="cocoon:init"/>
+    <target name="cocoon:after-run" depends="cocoon:core-run"/>
+    <target name="cocoon:before-stop" depends="cocoon:init"/>
+    <target name="cocoon:after-stop" depends="cocoon:core-stop"/>
+    <target name="cocoon:before-compile" depends="cocoon:init" if="cocoon.cond.webapp.in.context"/>
+    <target name="cocoon:after-compile" depends="cocoon:core-compile" if="cocoon.cond.webapp.in.context"/>
+    <target name="cocoon:before-clean" depends="cocoon:init"/>
+    <target name="cocoon:after-clean" depends="cocoon:core-clean"/>
+    <target name="cocoon:before-clean-all" depends="cocoon:init"/>
+    <target name="cocoon:after-clean-all" depends="cocoon:core-clean-all"/>
+
+    <!-- public available targets 
+         DO NOT OVERRIDE THEM but use the before/after/core targets for this purpose
+    -->
+    <target name="cocoon:container" depends="cocoon:after-container" description="screate a container (uses the property 'container.version')"/>
+    <target name="cocoon:webapp" depends="cocoon:after-webapp" description="create the web application"/>
+    <target name="cocoon:war" depends="cocoon:after-war" description="create a web archive (WAR)"/>
+    <target name="cocoon:run" depends="cocoon:after-run" description="run the container (currently it only works on windows boxes)"/>
+    <target name="cocoon:stop" depends="cocoon:after-stop" description="run the container (currently it only works on windows boxes)"/>
+    <target name="cocoon:compile" depends="cocoon:after-compile" description="Compile Java classes" if="cocoon.cond.webapp.in.context"/>
+    <target name="cocoon:clean" depends="cocoon:after-clean" description="clean webapps and container"/>
+    <target name="cocoon:clean-all" depends="cocoon:after-clean-all" description="clean *everything* in the build dir"/>
+
+	<!-- short versions for public cocoon:* targets - as these are very common names they might be
+	     overriden in a custom project build file -->
+    <target name="container" depends="cocoon:container" if="cond.container.use" description="short version for cocoon:container"/>
+    <target name="webapp" depends="cocoon:webapp" description="short version for cocoon:webapp"/>
+    <target name="war" depends="cocoon:war" description="short version for cocoon:war"/>
+    <target name="run" depends="cocoon:run" description="short version for cocoon:run"/>
+    <target name="stop" depends="cocoon:stop" description="short version for cocoon:stop"/>
+    <target name="compile" depends="cocoon:compile" description="short version for cocoon:compile" if="cocoon.cond.webapp.in.context"/>
+    <target name="clean" depends="cocoon:clean" description="short version for cocoon:clean"/>
+    <target name="clean-all" depends="cocoon:clean-all" description="short version for cocoon:clean-all"/>	
+	
+    <!-- internally available targets -->
+    <target name="cocoon:setProperties" depends="cocoon:after-setProperties"/>
+
+    <!-- empty targets to be overriden -->
+    <target name="cocoon:setFilters"/>
+    <target name="cocoon:complete-ant"/>
+
+</project>
\ No newline at end of file