glassfish-gmbal/glassfish-gmbal-3.2.0-b003-01-build.xml
2020-08-28 14:00:44 +08:00

299 lines
9.6 KiB
XML

<project name="glassfish-gmbal" default="dist" basedir=".">
<description>
GlassFish MBean Annotation Library.
</description>
<!-- set global properties for this build -->
<property name="version" value="3.2.0-b003"/>
<property name="jar.name" value="gmbal"/>
<property name="src" location="src"/>
<property name="src.test" location="test"/>
<property name="build" location="build/classes"/>
<property name="build.test" location="build/test-classes"/>
<property name="test.reports" location="build/test-reports"/>
<property name="dist" location="dist"/>
<property name="javadoc" location="dist/javadoc"/>
<property name="javac.debug" value="true"/>
<path id="project.cp">
<pathelement location="${build}"/>
</path>
<path id="test.cp">
<pathelement location="${build.test}"/>
</path>
<target name="init">
<!-- Create the build directory structure used by compile -->
<mkdir dir="${build}"/>
</target>
<path id="build.classpath">
<path refid="project.cp"/>
<fileset dir="/usr/share/java">
<include name="glassfish-management-api.jar"/>
<include name="glassfish-pfl/pfl-basic.jar"/>
<include name="glassfish-pfl/pfl-basic-tools.jar"/>
<include name="glassfish-pfl/pfl-tf.jar"/>
<include name="glassfish-pfl/pfl-tf-tools.jar"/>
<include name="ant/ant-junit.jar"/>
<include name="junit.jar"/>
</fileset>
</path>
<target name="compile" depends="init"
description="compile the source " >
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}"
classpathref="build.classpath"
destdir="${build}"
debug="${javac.debug}"
source="1.6"
target="1.6">
</javac>
</target>
<macrodef name="jar-and-manifest">
<attribute name="destfile"/>
<attribute name="basedir"/>
<attribute name="excludes" default=""/>
<attribute name="includes" default=""/>
<sequential>
<jar destfile="${dist}/@{destfile}.jar"
basedir="@{basedir}"
excludes="@{excludes}"
includes="@{includes}">
<manifest>
<attribute name="Built-By"
value="${user.name}"/>
<attribute name="Bundle-Name"
value="@{destfile}"/>
<attribute name="Bundle-SymbolicName"
value="@{destfile}"/>
<attribute name="Bundle-Version"
value="${version}"/>
</manifest>
</jar>
</sequential>
</macrodef>
<target name="dist" depends="compile"
description="generate the distribution" >
<antcall target="make-bnd-properties"/>
<antcall target="gen-resource-bundle"/>
<!-- generate LogStrings.properties ResourceBundle -->
<copy tofile="${build}/org/glassfish/gmbal/typelib/LogStrings.properties">
<filelist dir="${build}/org/glassfish/gmbal/typelib">
<file name="Exceptions.properties"/>
</filelist>
</copy>
<!-- Create the distribution directory -->
<mkdir dir="${dist}"/>
<make-pom
module="gmbal"
description="gmbal implementation"/>
<make-pom
module="gmbal-api-only"
description="gmbal API"/>
</target>
<target name="jars" depends="dist"
description="generate osgi manifest" >
<jar-and-manifest
basedir="${build}"
destfile="gmbal"
includes="org/glassfish/gmbal/**/*"/>
<jar-and-manifest
basedir="${build}"
destfile="gmbal-api-only"
includes="org/glassfish/gmbal/*.class,org/glassfish/gmbal/util/**/"/>
</target>
<target name="osgi" depends="dist"
description="generate osgi manifest" >
<mkdir dir="${dist}/bundles"/>
<osgi-manifest
inputfile="gmbal"
bndfile="gmbal"/>
<osgi-manifest
inputfile="gmbal-api-only"
bndfile="gmbal-api-only"/>
</target>
<target name="gen-resource-bundle">
<!-- generate Exceptions.properties ResourceBundle -->
<java classname="org.glassfish.pfl.basic.tools.logex.ExceptionResourceGenerator" classpathref="build.classpath" fork="true" dir=".">
<arg value="-verbose"/>
<arg value="2"/>
<arg value="-source"/>
<arg value="${build}"/>
<arg value="-destination"/>
<arg value="${build}"/>
</java>
</target>
<target name="make-bnd-properties">
<delete file="make/bnd.properties"/>
<echo message="Bundle-Version: ${version}${line.separator}" file="make/bnd.properties"/>
</target>
<macrodef name="osgi-manifest">
<attribute name="inputfile"/>
<attribute name="bndfile"/>
<sequential>
<java classpath="/usr/share/java/aqute-bnd/biz.aQute.bnd.jar:/usr/share/java/aqute-bnd/biz.aQute.bndlib.jar" classname="bnd" fork="true" failonerror="true">
<arg value="build"/>
<arg value="-classpath"/>
<arg value="${dist}/@{inputfile}.jar"/>
<arg value="-output"/>
<arg value="${dist}/bundles/@{inputfile}.jar"/>
<arg value="make/@{bndfile}.bnd"/>
</java>
</sequential>
</macrodef>
<macrodef name="make-pom">
<attribute name="module"/>
<attribute name="description"/>
<sequential>
<loadfile property="HEADER-@{module}" srcFile="make/header.xml">
<filterchain>
<replacetokens>
<token key="artifactId" value="@{module}"/>
<token key="version" value="${version}"/>
<token key="jarDescription" value="@{description}"/>
<token key="groupId" value="org.glassfish.gmbal"/>
</replacetokens>
</filterchain>
</loadfile>
<copy file="make/@{module}.template.xml" tofile="make/@{module}.pom" overwrite="true">
<filterset>
<filter token="HEADER" value="${HEADER-@{module}}"/>
<filter token="version" value="${version}"/>
<filter token="groupId" value="org.glassfish.gmbal"/>
</filterset>
</copy>
</sequential>
</macrodef>
<target name="clean"
description="clean up" >
<!-- Delete the ${build} and ${dist} directory trees -->
<delete dir="${build}"/>
<delete dir="${dist}"/>
<delete dir="${javadoc}"/>
</target>
<target name="javadoc">
<javadoc sourcepath="${src}"
destdir="${javadoc}"
additionalparam="-Xdoclint:none"
source="1.6" charset="ISO-8859-1"
>
<packageset dir="${src}"/>
<classpath>
<pathelement location="${dist}/${jar.name}.jar"/>
<pathelement location="${dist}/${jar.name}-api-only.jar"/>
<path refid="project.cp"/>
<path refid="build.classpath"/>
</classpath>
</javadoc>
</target>
<target name="compile-tests"
depends="compile"
description="Compile the test code"
unless="test.skip">
<mkdir dir="${build.test}"/>
<javac destdir="${build.test}"
encoding="UTF-8"
nowarn="false"
debug="true"
optimize="false"
deprecation="true"
target="1.6"
verbose="false"
fork="false"
source="1.6">
<src>
<pathelement location="${src.test}"/>
</src>
<classpath>
<pathelement location="${dist}/${jar.name}.jar"/>
<path refid="project.cp"/>
<path refid="build.classpath"/>
</classpath>
</javac>
</target>
<target name="test"
depends="compile-tests, junit-missing"
unless="junit.skipped"
description="Run the test cases">
<mkdir dir="${test.reports}"/>
<junit printSummary="yes" haltonerror="true" haltonfailure="true" fork="true" dir=".">
<sysproperty key="basedir" value="."/>
<formatter type="xml"/>
<formatter type="plain" usefile="false"/>
<classpath>
<path refid="test.cp"/>
<pathelement location="${build}"/>
<pathelement location="${build.test}"/>
<path refid="project.cp"/>
<path refid="build.classpath"/>
<pathelement location="${java.home}/../lib/tools.jar"/>
</classpath>
<batchtest todir="${test.reports}" unless="test">
<fileset dir="${src.test}">
<include name="**/*Test.java"/>
<!-- this test fail -->
<exclude name="org/glassfish/gmbal/typelib/*.java"/>
</fileset>
</batchtest>
<batchtest todir="${test.reports}" if="test">
<fileset dir="${src.test}">
<include name="**/${test}.java"/>
<!-- this test fail -->
<exclude name="org/glassfish/gmbal/typelib/*.java"/>
</fileset>
</batchtest>
</junit>
</target>
<target name="test-junit-present">
<available classname="junit.framework.Test" property="junit.present"/>
</target>
<target name="test-junit-status"
depends="test-junit-present">
<condition property="junit.missing">
<and>
<isfalse value="${junit.present}"/>
<isfalse value="${test.skip}"/>
</and>
</condition>
<condition property="junit.skipped">
<or>
<isfalse value="${junit.present}"/>
<istrue value="${test.skip}"/>
</or>
</condition>
</target>
<target name="junit-missing"
depends="test-junit-status"
if="junit.missing">
<echo>=================================== WARNING ===================================</echo>
<echo> JUnit is not present in your CLASSPATH. Tests not executed </echo>
<echo>===============================================================================</echo>
</target>
</project>