summaryrefslogtreecommitdiff
path: root/java/java/module.xml
diff options
context:
space:
mode:
Diffstat (limited to 'java/java/module.xml')
-rw-r--r--java/java/module.xml276
1 files changed, 276 insertions, 0 deletions
diff --git a/java/java/module.xml b/java/java/module.xml
new file mode 100644
index 0000000000..0172ea2995
--- /dev/null
+++ b/java/java/module.xml
@@ -0,0 +1,276 @@
+<!--
+ -
+ - 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.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.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.dir}"/>
+ </antcall>
+ <copy todir="${build.dir}/${etc.dir}" failonerror="false">
+ <fileset dir="${module.etc}" excludes="**/*.conf"/>
+ </copy>
+ <copy todir="${build.dir}/${etc.dir}" failonerror="false">
+ <fileset dir="${build.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> \ No newline at end of file