blob: d4b56a49ee3fc136643fa97be02c1d2277613061 [file] [log] [blame]
<?xml version="1.0"?>
<!--
Copyright 1999-2005 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.
-->
<!-- $Id$ -->
<project name="compile">
<description>
Compilation Targets
</description>
<!-- compilation parts used by all targets -->
<presetdef name="cocoon.javac">
<javac
debug="${compiler.debug}"
optimize="${compiler.optimize}"
deprecation="${compiler.deprecation}"
target="${target.vm}"
source="${source.vm}"
nowarn="${compiler.nowarn}"
compiler="${compiler}"
classpathref="classpath"/>
</presetdef>
<macrodef name="cocoon.compile">
<attribute name="destdir"/>
<attribute name="srcdir"/>
<attribute name="classpathref" default="classpath"/>
<sequential>
<mkdir dir="@{destdir}"/>
<!-- copy those files that need to be in the classpath -->
<copy todir="@{destdir}">
<fileset dir="@{srcdir}">
<exclude name="**/*.java"/>
</fileset>
</copy>
<cocoon.javac srcdir="@{srcdir}"
destdir="@{destdir}"/>
</sequential>
</macrodef>
<!-- compiles everything -->
<target name="compile"
depends="compile-core, compile-deprecated, compile-tests"/>
<!-- compiles mocks -->
<target name="compile-mocks">
<cocoon.compile srcdir="${mocks}"
destdir="${build.mocks}"/>
</target>
<!-- compiles the core -->
<target name="compile-core" depends="compile-mocks, clover.on">
<cocoon.compile srcdir="${java}"
destdir="${build.dest}"/>
<!-- Let's replace some values in the cocoon.properties file -->
<copy file="${java}/org/apache/cocoon/cocoon.properties"
overwrite="true" filtering="true"
tofile="${build.dest}/org/apache/cocoon/cocoon.properties">
<filterset>
<filter token="compiler.debug" value="${compiler.debug}"/>
<filter token="compiler.optimize" value="${compiler.optimize}"/>
<filter token="target.vm" value="${target.vm}"/>
<filter token="source.vm" value="${source.vm}"/>
</filterset>
</copy>
</target>
<!-- compiles deprecated code -->
<target name="compile-deprecated" depends="clover.off"
unless="internal.exclude.deprecated">
<!--
<xpatch file="${build.dest}/org/apache/cocoon/cocoon.roles"
srcdir="${deprecated.conf}"
includes="**/*.xroles"/>
-->
<cocoon.compile srcdir="${deprecated.src}"
destdir="${build.deprecated}"/>
</target>
<!-- compiles tests classes -->
<target name="compile-tests"
depends="compile-core, compile-deprecated, clover.off">
<!-- Compile tests -->
<cocoon.compile srcdir="${test}"
destdir="${build.test}"
classpathref="test.classpath"/>
</target>
<!-- === Package Targets ================================================= -->
<macrodef name="cocoon.jar">
<attribute name="name"/>
<attribute name="dir"/>
<attribute name="index" default="false"/>
<attribute name="update" default="yes"/>
<sequential>
<jar jarfile="${build}/@{name}.jar" update="@{update}" index="@{index}">
<fileset dir="@{dir}">
<include name="**/*.java"/>
</fileset>
</jar>
</sequential>
</macrodef>
<!-- optionally add source files to the core jar -->
<macrodef name="cocoon.package-sources">
<attribute name="name"/>
<attribute name="dir"/>
<sequential>
<!-- optionally add source files to the core jar -->
<if>
<istrue value="${include.sources-in-jars}"/>
<then>
<cocoon.jar name="@{name}"
dir="@{dir}"/>
</then>
</if>
<if>
<istrue value="${include.sources-jars}"/>
<then>
<cocoon.jar name="@{name}.src"
dir="@{dir}"/>
</then>
</if>
</sequential>
</macrodef>
<!-- packages everything -->
<target name="package"
depends="package-core, package-deprecated, package-testcase"/>
<!-- package the core -->
<target name="package-core" depends="compile-core, block-roles">
<jar jarfile="${build}/${name}.jar" manifest="${java}/Manifest.mf" index="true">
<fileset dir="${build.dest}">
<exclude name="**/Manifest.mf"/>
</fileset>
</jar>
<cocoon.package-sources name="${name}"
dir="${java}"/>
</target>
<!-- package deprecated code -->
<target name="package-deprecated" depends="compile-deprecated"
unless="internal.exclude.deprecated">
<jar jarfile="${build}/${name}-deprecated.jar" index="true">
<fileset dir="${build.deprecated}"/>
</jar>
<cocoon.package-sources name="${name}-deprecated"
dir="${deprecated.src}"/>
</target>
<!-- package testcase code -->
<target name="package-testcase" depends="compile-tests">
<jar jarfile="${build}/${name}-testcase.jar" index="true">
<fileset dir="${build.test}"/>
</jar>
<cocoon.package-sources name="${name}-testcase"
dir="${test}"/>
</target>
<!-- === Block Targets =================================================== -->
<!-- prepares the blocks build -->
<target name="prepare-blocks">
<mkdir dir="${build.blocks}"/>
<copy file="${gump.descriptor}" tofile="${build.temp}/gump.xml" overwrite="true"/>
<xpatch file="${build.temp}/gump.xml" srcdir=".">
<include name="local.blocks.*.xconf"/>
</xpatch>
<xslt in="${build.temp}/gump.xml"
out="${build.temp}/blocks-build.xml"
style="${tools.src}/blocks-build.xsl"/>
</target>
<!-- patch the cocoon role file -->
<target name="block-roles" depends="prepare-blocks">
<ant antfile="${build.temp}/blocks-build.xml"
inheritAll="true"
inheritRefs="false"
target="roles"/>
</target>
<!-- compiles and packages all blocks -->
<target name="blocks" depends="compile,prepare-blocks">
<ant antfile="${build.temp}/blocks-build.xml"
inheritAll="true"
inheritRefs="false"
target="compile"/>
</target>
<target name="call-block-target">
<ant antfile="${build.temp}/blocks-build.xml"
inheritAll="true"
inheritRefs="false"
target="cocoon-block-${block.name}-${target.name}" />
</target>
</project>