blob: 78999c2ea966ea657ede1e4d626f192f2c4f360d [file] [log] [blame]
<!--
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you 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="module">
<import file="common.xml"/>
<map property="module" value="${basedir}" split="${path.separator}">
<globmapper from="${project.root}${file.separator}*" to="*"/>
</map>
<property name="module.dir" value="${build.root.dir}/${module}"/>
<property name="module.classes" value="${module.dir}/${classes.dir}"/>
<property name="module.precompiled" value="${module.dir}/${src.dir}"/>
<condition property="suffix" value="${module.suffix}" else="">
<isset property="module.suffix"/>
</condition>
<condition property="prefix" value="${module.prefix}" else="">
<isset property="module.prefix"/>
</condition>
<map property="module.name" value="${module}">
<filtermapper>
<replacestring from="${file.separator}" to="-"/>
</filtermapper>
</map>
<property name="dist.module.name" value="${prefix}${module.name}${suffix}" />
<property name="module.jar" location="${module.dir}/${dist.module.name}.jar"/>
<property name="module.launcher"
location="${module.dir}/${module.name}${launcher.sfx}"/>
<property name="module.manifest"
location="${module.dir}/${dist.module.name}.mf"/>
<property name="module.doc" location="${module.dir}/${doc.dir}"/>
<property name="module.src" location="${src.dir}"/>
<property name="module.lib" location="${lib.dir}"/>
<property name="module.etc" location="${etc.dir}"/>
<!-- module.depends is supplied by the importing file -->
<pathconvert property="module.depends.dirs" pathSep=" ">
<path>
<dirset dir="${project.root}" includes="${module.depends}"/>
</path>
<globmapper from="${project.root}${file.separator}*" to="*"/>
</pathconvert>
<map property="module.depends.names" value="${module.depends.dirs}">
<filtermapper>
<replacestring from="${file.separator}" to="-"/>
</filtermapper>
</map>
<map property="module.depends.libs" value="${module.depends.dirs}"
setonempty="false">
<regexpmapper from="(.*)" to="\1/${lib.dir}/\*\*\/*\.jar" handledirsep="/"/>
</map>
<map property="module.depends.classes" value="${module.depends.dirs}" join=":">
<globmapper from="*" to="${build.root.dir}/*/${classes.dir}"/>
</map>
<path id="module.src.path">
<pathelement location="${module.src}"/>
<pathelement location="${module.precompiled}"/>
</path>
<path id="module.class.path">
<pathelement location="${module.classes}"/>
<fileset dir="${module.lib}" includes="**/*.jar"/>
<pathelement path="${module.depends.classes}"/>
<fileset dir="${project.root}" includes="${module.depends.libs}"/>
</path>
<pathconvert property="module.manifest.jars" pathsep=" " dirsep="/">
<path>
<fileset dir="${module.lib}" includes="**/*.jar"/>
</path>
<globmapper from="${module.lib}${file.separator}*" to="*"/>
</pathconvert>
<map property="module.manifest.deps" value="${module.depends.dirs}">
<globmapper from="*" to="*${launcher.sfx}"/>
</map>
<property name="module.manifest.classpath"
value="${dist.module.name}.jar ${module.manifest.jars} ${module.manifest.deps}"/>
<property name="module.test.reports" value="${module.dir}/reports/junit"/>
<target name="debug">
<echo message="basedir = ${basedir}"/>
<echo message="project.root = ${project.root}"/>
<echo message="module = ${module}"/>
<echo message="module.name = ${module.name}"/>
<echo message="module.jar = ${module.jar}"/>
<echo message="module.depends = ${module.depends}"/>
<echo message="module.depends.libs = ${module.depends.libs}"/>
<echo message="module.depends.dirs = ${module.depends.dirs}"/>
<echo message="module.depends.classes = ${module.depends.classes}"/>
<pathconvert property="module.class.path" refid="module.class.path"/>
<echo message="module.class.path = ${module.class.path}"/>
<pathconvert property="pretty.module.class.path"
refid="module.class.path"
pathsep="${line.separator}| |-- "/>
<echo message="pretty.module.class.path = ${pretty.module.class.path}"/>
<pathconvert property="module.src.path" refid="module.src.path"/>
<echo message="module.src.path = ${module.src.path}"/>
<pathconvert property="pretty.module.src.path"
refid="module.src.path"
pathsep="${line.separator}| |-- "/>
<echo message="pretty.module.src.path = ${pretty.module.src.path}"/>
</target>
<target name="prepare">
<mkdir dir="${module.classes}"/>
<mkdir dir="${module.precompiled}"/>
<mkdir dir="${module.doc}"/>
<mkdir dir="${module.test.reports}"/>
</target>
<target name="precompile"/>
<target name="compile" depends="prepare,precompile">
<javac destdir="${module.classes}" target="${java.target}"
source="${java.source}" debug="on">
<src refid="module.src.path"/>
<classpath refid="module.class.path"/>
</javac>
<!-- copy any non java src files into the build tree, e.g. log4j.properties -->
<copy todir="${module.classes}" verbose="true">
<fileset dir="${module.src}">
<exclude name="**/*.java"/>
<exclude name="**/package.html"/>
</fileset>
</copy>
</target>
<target name="dist-bin">
<mkdir dir="${destdir}/${bin.dir}"/>
<copy todir="${destdir}/${bin.dir}" failonerror="false">
<fileset dir="${src.bin}"/>
</copy>
<chmod dir="${destdir}/${bin.dir}" perm="ugo+rx" includes="**/*"/>
</target>
<target name="build" depends="compile">
<antcall target="dist-bin">
<param name="destdir" value="${build.root.dir}"/>
</antcall>
<copy todir="${build.root.dir}/${etc.dir}" failonerror="false">
<fileset dir="${module.etc}" excludes="**/*.conf"/>
</copy>
<copy todir="${build.root.dir}/${etc.dir}" failonerror="false">
<fileset dir="${build.root.dir}/${etc.dir}" includes="**/*.dev"/>
<mapper>
<globmapper from="*.dev" to="*"/>
</mapper>
</copy>
</target>
<target name="test"/>
<target name="testreport"/>
<uptodate property="doc.done" targetfile="${module.doc}/index.html">
<srcfiles dir="${module.src}" includes="**/*.java"/>
</uptodate>
<target name="doc" depends="prepare" unless="doc.done">
<javadoc destdir="${module.doc}" sourcepathref="module.src.path"
classpathref="module.class.path" packagenames="*"/>
</target>
<target name="jar" depends="build">
<copy todir="${module.classes}">
<fileset dir="${resources.root.dir}">
<include name="${metainf.dir}/**"/>
</fileset>
</copy>
<copy todir="${module.classes}/${metainf.dir}">
<fileset dir="${project.root}">
<include name="LICENSE.txt"/>
<include name="NOTICE.txt"/>
</fileset>
</copy>
<jar destfile="${module.jar}" basedir="${module.classes}"/>
</target>
<target name="manifest-main" if="module.main">
<manifest file="${module.manifest}">
<attribute name="Main-Class" value="${module.main}"/>
<attribute name="Class-Path" value="${module.manifest.classpath}"/>
<attribute name="X-Compile-Source-JDK" value="${module.vm.version}"/>
</manifest>
</target>
<target name="manifest-lib" unless="module.main">
<manifest file="${module.manifest}">
<attribute name="Class-Path" value="${module.manifest.classpath}"/>
<attribute name="X-Compile-Source-JDK" value="${module.vm.version}"/>
</manifest>
</target>
<target name="launcher" depends="manifest-main,manifest-lib">
<jar destfile="${module.launcher}" manifest="${module.manifest}"/>
</target>
<condition property="module.nodist">
<and>
<isset property="module.dist"/>
<isfalse value="${module.dist}"/>
</and>
</condition>
<condition property="module.vm.version" value="${module.vm.version}" else="1.4">
<isset property="module.vm.version"/>
</condition>
<condition property="dist.destlib.dir" value="${dist.dest.dir}/${lib.dir}" else="${dist.lib}">
<isset property="dist.dest.dir"/>
</condition>
<target name="dist-lib" depends="jar,launcher,doc" unless="module.nodist">
<copy todir="${dist.destlib.dir}" file="${module.jar}"/>
<copy todir="${dist.destlib.dir}" file="${module.launcher}"/>
<copy todir="${dist.destlib.dir}" failonerror="false">
<fileset dir="${module.lib}"/>
</copy>
<copy todir="${dist.destdir}/${doc.dir}/${module}">
<fileset dir="${module.doc}"/>
</copy>
</target>
<condition property="dist.destdir" value="${dist.dest.dir}" else="${dist.dir}">
<isset property="dist.dest.dir"/>
</condition>
<target name="dist" depends="dist-lib" unless="module.nodist">
<antcall target="dist-bin">
<param name="destdir" value="${dist.destdir}"/>
</antcall>
<copy todir="${dist.destdir}/${etc.dir}" failonerror="false">
<fileset dir="${module.etc}" excludes="**/*.dev"/>
</copy>
</target>
<target name="clean">
<delete dir="${module.dir}"/>
</target>
</project>