summaryrefslogtreecommitdiff
path: root/java/module.xml
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2008-09-05 15:31:08 +0000
committerMartin Ritchie <ritchiem@apache.org>2008-09-05 15:31:08 +0000
commit115927359841b7aaa5f74340a6ba7abae6ca92b2 (patch)
tree6e77496435506569fc133c6b75b8aff1ff761fd9 /java/module.xml
parent3fab8e0750ab1fe0a6b68545594033559133ca6a (diff)
downloadqpid-python-115927359841b7aaa5f74340a6ba7abae6ca92b2.tar.gz
QPID-1257 : Add new build target 'release-bin' that will generate a broker and client package. Documenation will be added to the wiki such that performance tests could also be packaged.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@692461 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/module.xml')
-rw-r--r--java/module.xml139
1 files changed, 139 insertions, 0 deletions
diff --git a/java/module.xml b/java/module.xml
index cdc260399c..0ff3887e8d 100644
--- a/java/module.xml
+++ b/java/module.xml
@@ -42,6 +42,19 @@
<property name="module.bin" location="bin"/>
<property name="module.etc" location="etc"/>
+
+ <property name="module.namever" value="${project.name}-${module}-${project.version}"/>
+ <property name="module.release.base" value="${basedir}/release"/>
+ <property name="module.release" value="${module.release.base}/${module.namever}"/>
+ <property name="module.release.lib" value="${module.release}/lib"/>
+ <property name="module.release.zip" location="${module.release.base}/${module.namever}.zip"/>
+ <property name="module.release.tar" location="${module.release.base}/${module.namever}.tar"/>
+ <property name="module.release.tgz" location="${module.release.base}/${module.namever}.tar.gz"/>
+ <property name="module.release.bz2" location="${module.release}/${module.namever}.tar.bz2"/>
+
+ <property name="module.qpid.jar" location="${module.release.lib}/qpid-incubating.jar"/>
+ <basename property="qpid.jar.name" file="${module.qpid.jar}"/>
+
<available property="module.test.src.exists" file="${module.test.src}"/>
<available property="module.etc.exists" file="${module.etc}"/>
<available property="module.bin.exists" file="${module.bin}"/>
@@ -267,12 +280,25 @@
<chmod dir="${build.bin}" perm="ugo+rx" includes="**/*"/>
</target>
+ <target name="copy-bin-release" if="module.bin.exists" description="copy dependencies into module release">
+ <copy todir="${module.release}/bin" failonerror="true">
+ <fileset dir="${module.bin}" />
+ </copy>
+ <chmod dir="${module.release}/bin" perm="ugo+rx" includes="**/*"/>
+ </target>
+
<target name="copy-etc" if="module.etc.exists" description="copy etc directory if it exists to build tree">
<copy todir="${build.etc}" failonerror="false">
<fileset dir="${module.etc}"/>
</copy>
</target>
+ <target name="copy-etc-release" if="module.etc.exists" description="copy etc directory if it exists to build tree">
+ <copy todir="${module.release}/etc" failonerror="false" flatten="true">
+ <fileset dir="${module.etc}"/>
+ </copy>
+ </target>
+
<target name="build" depends="jar,jar-tests,libs,copy-bin,copy-etc" description="compile and copy resources into build tree"/>
<target name="jar.manifest" depends="compile" if="module.manifest">
<jar destfile="${module.jar}" basedir="${module.classes}" manifest="${module.manifest}"/>
@@ -296,6 +322,35 @@
</copy>
</target>
+ <map property="module.depends.jars" value="${module.depends}" join=",">
+ <globmapper from="*" to="${project.name}-*-${project.version}.jar"/>
+ </map>
+
+
+ <target name="libs-release" description="copy dependencies into module release">
+ <!-- Copy the module dependencies -->
+ <copy todir="${module.release}" failonerror="true">
+ <fileset dir="${basedir}${file.separator}.." includes="${module.libs}"/>
+ </copy>
+ <!-- Copy the jar for this module -->
+ <copy todir="${module.release}/lib" failonerror="true">
+ <fileset file="${module.jar}"/>
+ <fileset dir="${build.lib}" includes="${module.depends.jars}"/>
+ </copy>
+ </target>
+
+ <target name="resources" description="copy resources into build tree">
+ <copy todir="${build}" failonerror="false" flatten="true">
+ <fileset dir="${basedir}${file.separator}.." includes="${resources}"/>
+ </copy>
+ </target>
+
+ <target name="resources-release" description="copy resources into module release">
+ <copy todir="${module.release}" failonerror="false" flatten="true">
+ <fileset dir="${resources}" excludes="META-INF"/>
+ </copy>
+ </target>
+
<uptodate property="doc.done" targetfile="${module.api}/index.html">
<srcfiles dir="${module.src}" includes="**/*.java"/>
</uptodate>
@@ -304,10 +359,94 @@
<javadoc destdir="${module.api}" sourcepathref="module.src.path"
classpathref="module.class.path" packagenames="*"/>
</target>
+
+ <target name="release-bin-prepare">
+ <mkdir dir="${module.release}"/>
+ <available property="module.release.exists" file="${module.release}"/>
+ </target>
+
+ <target name="check-module-manifest">
+ <uptodate property="module-manifest.done" targetfile="${qpid.jar}">
+ <srcfiles dir="${build.lib}" includes="**/*.jar" excludes="**/${qpid.jar.name}"/>
+ </uptodate>
+ </target>
+
+ <target name="module-manifest" depends="check-module-manifest" unless="module-manifest.done">
+ <path id="class.path">
+ <fileset dir="${module.release.lib}" >
+ <include name="*.jar"/>
+ <exclude name="${qpid.jar.name}"/>
+ </fileset>
+ </path>
+ <pathconvert property="qpid.jar.classpath" pathsep=" " dirsep="/">
+ <path refid="class.path"/>
+ <globmapper from="${module.release.lib}${file.separator}*" to="*"/>
+ </pathconvert>
+
+ <jar destfile="${module.qpid.jar}">
+ <manifest>
+ <attribute name="Class-Path" value="${qpid.jar.classpath}"/>
+ </manifest>
+ <metainf dir="${project.root}/resources/"/>
+ </jar>
+
+ <touch file="${module.qpid.jar}"/>
+ </target>
+
+
+ <target name="zip-release" depends="build-release-bin" description="build module release archive">
+ <zip destfile="${module.release.zip}">
+ <zipfileset dir="${module.release}" prefix="${module.namever}" filemode="755">
+ <include name="bin/*"/>
+ <exclude name="bin/*.txt"/>
+ </zipfileset>
+
+ <zipfileset dir="${module.release}" prefix="${module.namever}" filemode="644">
+ <include name="bin/*.txt"/>
+ </zipfileset>
+
+ <zipfileset dir="${module.release}" prefix="${module.namever}" excludes="${module.release.excludes}" filemode="644" dirmode="755">
+ <exclude name="bin/**"/>
+ <exclude name="**/*.class"/>
+ </zipfileset>
+ </zip>
+ </target>
+
+ <target name="tar-release" depends="zip-release" description="build release archive">
+ <tar destfile="${module.release.tar}" longfile="gnu" >
+ <zipfileset src="${module.release.zip}"/>
+ </tar>
+ </target>
+
+ <target name="gzip-release" depends="tar-release" description="build release archive">
+ <gzip src="${module.release.tar}" destfile="${module.release.tgz}"/>
+ </target>
+
+ <target name="bzip2-release" depends="tar-release" description="build release archive">
+ <bzip2 src="${module.release.tar}" destfile="${module.release.bz2}"/>
+ </target>
+
+ <target name="doc-release" description="no-op override if a doc step is requried "/>
+
+
+ <target name="build-release-bin" depends="release-bin-prepare,libs-release,copy-bin-release,
+ copy-etc-release,doc-release,resources-release,release-bin-other,module-manifest"
+ description="Task that includes all tasks required to create a module binary release"/>
+
+ <!-- ,zip-release,gzip-release -->
+ <target name="release-bin-tasks" depends="gzip-release" description="build all release archives except .bz2"/>
+
+ <target name="release-bin-all-tasks" depends="bzip2-release" description="build all release archives"/>
+
+ <!-- Dummy targets to no-op for most modules. Override if a module package is required -->
+ <target name="release-bin-other" description="Override if there is tasks required for the module bin release to occur last"/>
+ <target name="release-bin" description="Override and depend on release-bin-tasks to generate"/>
+ <target name="release-bin-all" description="Override and depend on release-bin-tasks to generate"/>
<target name="clean" description="remove build artifacts">
<delete dir="${module.build}"/>
<delete dir="${module.results}"/>
+ <delete dir="${module.release.base}"/>
</target>
</project>