blob: 887de2dacafdf1224c862af6af8dc81b4e33094c [file] [log] [blame]
<!--
Copyright 2004 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.
-->
<project name="Xbean" default="default" basedir=".">
<property name="build.compiler" value="javac1.6"/>
<property name="javac.source" value="1.6"/>
<property name="javac.target" value="1.6"/>
<property name="version.base" value="3.0.3"/>
<property name="version.rc" value=""/>
<!-- manifest entries -->
<property name="manifest.name" value="org/apache/xmlbeans/"/>
<property name="manifest.title" value="org.apache.xmlbeans"/>
<property name="manifest.vendor" value="Apache Software Foundation"/>
<property name="manifest.url" value="http://xmlbeans.apache.org/"/>
<property name="repository.m2" value="https://repo1.maven.org"/>
<!-- Apache RAT license check properties -->
<property name="rat.reportdir" value="build/rat"/>
<property name="rat.report" value="${rat.reportdir}/report.txt"/>
<property name="rat.jar" location="${rat.reportdir}/apache-rat-0.12.jar"/>
<property name="rat.url" value="${repository.m2}/maven2/org/apache/rat/apache-rat/0.12/apache-rat-0.12.jar"/>
<!-- api checks -->
<property name="forbidden.jar" location="build/forbiddenapis-2.5.jar"/>
<property name="forbidden.url" value="${repository.m2}/maven2/de/thetaphi/forbiddenapis/2.5/forbiddenapis-2.5.jar"/>
<target name="usage">
<echo message="The following ant targets are defined:"/>
<echo/>
<echo message="usage - this help text"/>
<echo message="deploy - builds our implementation jar (xbean.jar)"/>
<echo message="clean - cleans out the xbeans directories"/>
<echo message="clean.jars - cleans out any downloaded jars"/>
<echo message="docs - builds the JavaDoc documentation in ./build/docs"/>
<echo message="xmlpublic.jar-builds xmlpublic.jar, containing just the public code"/>
<echo message="sources - zips up the XmlBeans source code"/>
<echo/>
<echo message="testbuild - builds, but does not run, the xbean drt"/>
<echo message="checkintest - runs the xbean tests"/>
</target>
<target name="java_version">
<echo message="${java.version}"/>
</target>
<target name="clean">
<delete dir="build"/>
</target>
<target name="clean.jars" description="Delete any downloaded jars and accompanying licenses">
<delete>
<fileset dir="external/lib">
<include name="saxonb9-0-0-4j.zip"/>
<include name="saxonb8-8j.zip"/>
<include name="saxonb8-7-3j.zip"/>
<include name="saxonb8-6-1.zip"/>
<include name="saxonb8-2.zip"/>
<include name="saxonb8-1.zip"/>
<include name="saxon9.jar"/>
<include name="saxon9-dom.jar"/>
<include name="saxon8.jar"/>
<include name="saxon8-dom.jar"/>
<include name="xcresolver.zip"/>
</fileset>
</delete>
</target>
<target name="deploy" depends="xbean"/>
<target name="sources" depends="dirs">
<zip destfile="build/ar/xbeansrc.zip"
basedir="."
excludes="build/**, test/perf/**, mytest/**"/>
</target>
<property environment="env"/>
<target name="saxon.find1" if="env.XMLBEANS_EXTERNALS">
<property name="saxon_jar" value="${env.XMLBEANS_EXTERNALS}/saxon9.jar"/>
<property name="saxon_dom_jar" value="${env.XMLBEANS_EXTERNALS}/saxon9-dom.jar"/>
</target>
<target name="saxon.find2">
<property name="saxon_jar" value="build/lib/saxon9.jar"/>
<property name="saxon_dom_jar" value="build/lib/saxon9-dom.jar"/>
</target>
<target name="check.saxon9.jar" depends="saxon.find1,saxon.find2">
<condition property="saxon9.jar.exists">
<or>
<available file="build/lib/saxon9.jar"/>
<available file="${env.XMLBEANS_EXTERNALS}/saxon9.jar"/>
</or>
</condition>
</target>
<target name="saxon9.jar" depends="check.saxon9.jar, dirs"
unless="saxon9.jar.exists">
<!-- other saxon urls
http://voxel.dl.sourceforge.net/sourceforge/saxon/saxonb8-1.zip
http://easynews.dl.sourceforge.net/sourceforge/saxon/saxonb8-7-3j.zip
http://easynews.dl.sourceforge.net/sourceforge/saxon/saxonb8-8j.zip
-->
<get dest="external/lib/saxonb9-0-0-4j.zip"
src="http://master.dl.sourceforge.net/project/saxon/OldFiles/9.0/9.0.0.4/saxonb9-0-0-4j.zip"
verbose="true" usetimestamp="true" ignoreerrors="true"/>
<unzip src="external/lib/saxonb9-0-0-4j.zip" dest="external/lib/">
<patternset>
<include name="saxon9.jar"/>
<include name="saxon9-dom.jar"/>
</patternset>
</unzip>
<copy file="external/lib/saxon9.jar" tofile="build/lib/saxon9.jar"/>
<!-- saxon9-dom.jar is used to register DOMObjectModel -->
<copy file="external/lib/saxon9-dom.jar" tofile="build/lib/saxon9-dom.jar"/>
</target>
<!-- get resolver.jar -->
<target name="check.xcresolver.zip">
<condition property="xcresolver.zip.exists">
<available file="external/lib/xcresolver.zip"/>
</condition>
</target>
<target name="xcresolver.zip" depends="check.xcresolver.zip, dirs" unless="xcresolver.zip.exists">
<get dest="external/lib/xcresolver.zip"
src="http://archive.apache.org/dist/xml/commons/binaries/xml-commons-resolver-1.1.zip"
verbose="true" usetimestamp="true" ignoreerrors="true"/>
</target>
<target name="check.resolver.jar">
<condition property="resolver.jar.exists">
<available file="build/lib/resolver.jar"/>
</condition>
</target>
<target name="resolver.jar" depends="xcresolver.zip, check.resolver.jar" unless="resolver.jar.exists">
<unzip src="external/lib/xcresolver.zip" dest="external/lib/">
<patternset>
<include name="*/resolver.jar"/>
</patternset>
</unzip>
<copy file="external/lib/xml-commons-resolver-1.1/resolver.jar" tofile="build/lib/resolver.jar"/>
<delete dir="external/lib/xml-commons-resolver-1.1"/>
</target>
<target name="xbean" depends="xbean.jar,xmlpublic.jar">
<copy file="build/lib/xbean.jar" tofile="build/ar/xbean.jar"/>
</target>
<target name="dirs">
<mkdir dir="build"/>
<mkdir dir="build/classes"/>
<mkdir dir="build/lib"/>
<mkdir dir="build/ar"/>
<mkdir dir="build/src"/>
<mkdir dir="build/private"/>
<mkdir dir="build/private/classes"/>
<mkdir dir="build/private/lib"/>
<mkdir dir="build/test/output"/>
</target>
<target name="version">
<!-- svn must be on the path -->
<echo message="Trying to get revision number from Subversion..."/>
<exec executable="svn" output="build/private/svninfo.properties" failifexecutionfails="false">
<arg line="info ${basedir}"/>
</exec>
<replaceregexp file="build/private/svninfo.properties"
match="Last Changed Rev: (.*)"
replace="svn.last.rev=r\1"
byline="true"/>
<property file="build/private/svninfo.properties"/>
<!-- just in case svn info or regexp failed -->
<condition property="svn.last.rev" value="unknown">
<not><isset property="svn.last.rev"/></not>
</condition>
<property name="version.full" value="${version.base}-${svn.last.rev}"/>
<property name="manifest.comment" value="Apache XmlBeans version ${version.full}"/>
<echo message="${manifest.comment}"/>
</target>
<target name="default" depends="deploy"/>
<target name="redeploy" depends="clean, deploy"/>
<!-- oldxbean.jar target =========================================== -->
<target name="oldxbean.jar">
<copy file="external/lib/oldxbean.jar" tofile="build/private/lib/oldxbean.jar"/>
</target>
<!-- bootstrap target ============================================== -->
<target name="bootstrap" depends="xbean">
<subant target="bootstrappass" inheritAll="true" buildpath="." failonerror="false"/>
<subant target="bootstrappass" inheritAll="true" buildpath="." failonerror="true"/>
</target>
<target name="bootstrappass" depends="xbean">
<!-- after xbean.jar is built, move it out of the way and clean the project -->
<tempfile property="bootstrap.jarfile" prefix="oldxbean" suffix=".jar"/>
<move file="build/ar/xbean.jar" tofile="${bootstrap.jarfile}"/>
<antcall target="clean" inheritAll="false"/>
<!-- then move it back into place as oldxbean.jar and do another build -->
<move file="${bootstrap.jarfile}" tofile="build/private/lib/oldxbean.jar"/>
<antcall target="xbean" inheritAll="false"/>
<!-- compare the contents of the first jar to the contents of the second jar -->
<antcall target="zipcompare.classes" inheritAll="false"/>
<java classname="zipcompare.ZipCompare"
classpath="build/private/classes/zipcompare"
fork="true"
failonerror="true">
<arg line="build/ar/xbean.jar build/private/lib/oldxbean.jar"/>
</java>
<!-- when everything succeeds, check out oldxbean.jar from perforce -->
<echo message="==================================="/>
<echo message="Results match! Bootstrap succeeded."/>
<echo message="==================================="/>
<echo message="Attempting to copy oldxbean.jar"/>
<echo message="If the copy fails, you must check out oldxbean.jar"/>
<!-- copy oldxbean.jar whether or not perforce succeeded -->
<echo message="overwriting old external/lib/oldxbean.jar"/>
<copy file="build/private/lib/oldxbean.jar" tofile="external/lib/oldxbean.jar"/>
</target>
<target name="quickbootstrap">
<echo message="=========================================================="/>
<echo message="Bootstrapping currently built xbean.jar without verifying."/>
<echo message="=========================================================="/>
<copy file="build/ar/xbean.jar" tofile="external/lib/oldxbean.jar"/>
</target>
<!-- zipcompare (for checking bootstrap) ============================ -->
<target name="zipcompare.classes">
<mkdir dir="build/private/classes/zipcompare"/>
<javac srcdir="src/zipcompare"
source="${javac.source}" target="${javac.target}"
destdir="build/private/classes/zipcompare"
debug="on"
includeantruntime="false"/>
</target>
<!-- javadocs ====================================================== -->
<!-- All docs to build/docs, including guide and javadocs. -->
<target name="docs" depends="xbean">
<property name="docs.dir" value="build/docs"/>
<delete dir="${docs.dir}"/>
<mkdir dir="${docs.dir}"/>
<javadoc packagenames="*" sourcepath="src/xmlpublic"
classpath="${javadoc.path}" destdir="${docs.dir}/reference"
windowtitle="XMLBeans ${version.base} Documentation" source="${javac.source}" stylesheetfile="docs/stylesheet.css">
<link href="http://xmlbeans.apache.org/${version.base}/docs/reference/index.html"/>
<link href="http://java.sun.com/j2se/1.4.2/docs/api/"/>
<link href="http://java.sun.com/j2ee/1.4/docs/api/"/>
<link href="http://xml.apache.org/xerces-j/apiDocs/"/>
<classpath>
<pathelement location="build/ar/xbean.jar"/>
</classpath>
</javadoc>
<copy file="docs/xmlbeans.css" tofile="${docs.dir}/xmlbeans.css"/>
<copy todir="${docs.dir}/guide">
<fileset dir="docs/guide"/>
</copy>
<copy todir="${docs.dir}/images">
<fileset dir="docs/images"/>
</copy>
<delete file="build/private/xmlbeans-${version.base}${version.rc}-javadoc.jar"/>
<jar jarfile="build/private/xmlbeans-${version.base}${version.rc}-javadoc.jar" index="false">
<fileset dir="${docs.dir}/reference"/>
<fileset file="LICENSE.txt"/>
<fileset file="NOTICE.txt"/>
<manifest>
<section name="${manifest.name}">
<attribute name="Comment" value="${manifest.comment}"/>
<attribute name="Implementation-Title" value="${manifest.title}"/>
<attribute name="Implementation-Version" value="${version.full}"/>
<attribute name="Implementation-Vendor" value="${manifest.vendor}"/>
<attribute name="Implementation-URL" value="${manifest.url}"/>
</section>
</manifest>
</jar>
</target>
<target name="dist" depends="dist-src, dist-bin">
</target>
<target name="dist-bin" depends="xbean, docs">
<delete dir="build/private/xmlbeans-${version.base}"/>
<delete file="build/private/xmlbeans-${version.base}${version.rc}.zip"/>
<delete file="build/private/xmlbeans-${version.base}${version.rc}.tgz"/>
<mkdir dir="build/private/xmlbeans-${version.base}"/>
<copy todir="build/private/xmlbeans-${version.base}">
<fileset dir="xkit"/>
<fileset dir="." includes="bin/**"/>
<fileset file="LICENSE.txt"/>
<fileset file="NOTICE.txt"/>
</copy>
<copy todir="build/private/xmlbeans-${version.base}/schemas/s4s">
<fileset dir="src/xsdschema/schema" includes="XMLSchema.xsd"/>
<fileset dir="src/xmlschema/schema" includes="XML.xsd"/>
</copy>
<copy todir="build/private/xmlbeans-${version.base}/schemas">
<fileset dir="test/cases/xbean/xmlobject"
includes="easypo.xsd,easypo.xsdconfig,numerals.xsd,nameworld.xsd"/>
</copy>
<mkdir dir="build/private/xmlbeans-${version.base}/lib"/>
<copy todir="build/private/xmlbeans-${version.base}/lib">
<fileset dir="build/lib">
<include name="xbean.jar"/>
<include name="xmlpublic.jar"/>
<include name="xbean_xpath.jar"/>
<include name="resolver.jar"/>
</fileset>
</copy>
<mkdir dir="build/private/xmlbeans-${version.base}/docs"/>
<copy todir="build/private/xmlbeans-${version.base}/docs">
<fileset dir="build/docs"/>
</copy>
<mkdir dir="build/private/xmlbeans-${version.base}/samples"/>
<copy todir="build/private/xmlbeans-${version.base}/samples">
<fileset dir="samples">
<include name="MixedContent/**/*"/>
<include name="OrderMatters/**/*"/>
<include name="Any/**/*"/>
<include name="XQueryXPath/**/*"/>
<include name="DateTime/**/*"/>
<include name="SchemaEnum/**/*"/>
<include name="Validation/**/*"/>
<include name="XsdConfig/**/*"/>
<exclude name="**/build/**"/>
</fileset>
</copy>
<zip destfile="build/private/xmlbeans-${version.base}${version.rc}.zip"
basedir="build/private"
includes="xmlbeans-${version.base}/**"/>
<tar destfile="build/private/xmlbeans-${version.base}${version.rc}.tgz"
basedir="build/private"
includes="xmlbeans-${version.base}/**"
excludes="xmlbeans-${version.base}/bin/*"
compression="gzip">
<tarfileset dir="build/private">
<include name="xmlbeans-${version.base}/bin/*.cmd"/>
</tarfileset>
<tarfileset dir="build/private" mode="754">
<include name="xmlbeans-${version.base}/bin/*"/>
<exclude name="xmlbeans-${version.base}/bin/*.cmd"/>
</tarfileset>
</tar>
</target>
<target name="dist-src" depends="clean, dirs, version">
<delete file="build/private/xmlbeans-${version.base}${version.rc}-src.zip"/>
<delete file="build/private/xmlbeans-${version.base}${version.rc}-src.tgz"/>
<delete file="build/private/xmlbeans-${version.base}${version.rc}-sources.jar"/>
<zip destfile="build/private/xmlbeans-${version.base}${version.rc}-src.zip">
<zipfileset dir="." prefix="xmlbeans-${version.base}">
<patternset id="src.dist.content.dirs"
includes="docs/** external/** samples/** src/**"/>
<patternset id="src.dist.content.dirs.bin"
includes="bin/**"/>
<patternset id="src.dist.content.files"
includes="build.xml README.txt xbeanenv.cmd xbeanenv.sh LICENSE.txt NOTICE.txt"/>
<patternset id="src.dist.content.tests"
includes=""/><!-- don't have tests part of the distribution yet -->
</zipfileset>
</zip>
<tar destfile="build/private/xmlbeans-${version.base}${version.rc}-src.tgz"
compression="gzip">
<tarfileset dir="." prefix="xmlbeans-${version.base}">
<patternset refid="src.dist.content.dirs"/>
<patternset refid="src.dist.content.files"/>
<patternset refid="src.dist.content.tests"/>
<patternset includes="bin/*.cmd"/>
</tarfileset>
<tarfileset dir="." prefix="xmlbeans-${version.base}" mode="754">
<include name="bin/*"/>
<exclude name="bin/*.cmd"/>
</tarfileset>
</tar>
<jar jarfile="build/private/xmlbeans-${version.base}${version.rc}-sources.jar" index="false">
<fileset dir="src/common" includes="**/*.java"/>
<fileset dir="src/configschema" includes="**/*.java"/>
<fileset dir="src/jamsupport" includes="**/*.java"/>
<fileset dir="src/marshal" includes="**/*.java"/>
<fileset dir="src/repackage" includes="**/*.java"/>
<fileset dir="src/saaj_api" includes="**/*.java"/>
<fileset dir="src/store" includes="**/*.java"/>
<fileset dir="src/tools" includes="**/*.java"/>
<fileset dir="src/toolschema" includes="**/*.java"/>
<fileset dir="src/typeholder" includes="**/*.java"/>
<fileset dir="src/typeimpl" includes="**/*.java"/>
<fileset dir="src/typestore" includes="**/*.java"/>
<fileset dir="src/xmlcomp" includes="**/*.java"/>
<fileset dir="src/xmlconfig" includes="**/*.java"/>
<fileset dir="src/xmlinputstream" includes="**/*.java"/>
<fileset dir="src/xmlpublic" includes="**/*.java"/>
<fileset dir="src/xmlschema" includes="**/*.java"/>
<fileset dir="src/xpath" includes="**/*.java"/>
<fileset dir="src/xpath_xquery" includes="**/*.java"/>
<fileset dir="src/xsdschema" includes="**/*.java"/>
<fileset dir="src/zipcompare" includes="**/*.java"/>
<fileset dir="maven-plugin/src/java" includes="**/*.java"/>
<manifest>
<section name="${manifest.name}">
<attribute name="Comment" value="${manifest.comment}"/>
<attribute name="Implementation-Title" value="${manifest.title}"/>
<attribute name="Implementation-Version" value="${version.full}"/>
<attribute name="Implementation-Vendor" value="${manifest.vendor}"/>
<attribute name="Implementation-URL" value="${manifest.url}"/>
</section>
</manifest>
</jar>
</target>
<target name="enum-support.jar"
depends="dirs, xmlpublic.classes, typeimpl.classes">
<jar jarfile="build/lib/enum-support.jar" index="false">
<fileset dir="build/classes/typeimpl/">
<include name="org/apache/xmlbeans/impl/values/XmlListImpl.class"/>
<include name="org/apache/xmlbeans/impl/values/XmlObjectBase.class"/>
<include name="org/apache/xmlbeans/impl/util/XsTypeConverter.class"/>
</fileset>
<fileset dir="build/classes/xmlpublic/">
<include name="org/apache/xmlbeans/XmlCalendar.class"/>
</fileset>
</jar>
</target>
<!-- previously in xbean.xml -->
<target name="xbean.jar"
depends="dirs, version, xmlpublic.classes,
typeholder.template, typestore.classes, common.classes,
typeimpl.classes, xmlcomp.classes,
store.classes, saaj_api.classes,
marshal.classes, xpath.classes, oldxbean.jar, xsdschema.classes,
xmlinputstream.classes, resolver.jar, xbean_xpath.jar,
tools.classes, jamsupport.classes">
<jar jarfile="build/lib/xbean.jar" index="true" duplicate="preserve">
<fileset dir="build/classes/xmlpublic"
excludes="javax/**"/>
<fileset dir="build/classes/typeholder"/>
<fileset dir="build/classes/typestore"/>
<fileset dir="build/classes/common"/>
<fileset dir="build/classes/typeimpl"/>
<fileset dir="build/classes/xmlcomp"/>
<fileset dir="build/classes/configschema"/>
<fileset dir="build/classes/toolschema"/>
<fileset dir="build/classes/xsdschema"/>
<fileset dir="build/classes/xmlschema"/>
<fileset dir="build/classes/store"/>
<fileset dir="build/classes/saaj_api"/>
<fileset dir="build/classes/xmlinputstream"/>
<fileset dir="build/classes/marshal"/>
<fileset dir="build/classes/repackage"/>
<fileset dir="build/classes/jam"/>
<fileset dir="build/classes/tools"/>
<fileset file="LICENSE.txt"/>
<fileset file="NOTICE.txt"/>
<manifest>
<section name="${manifest.name}">
<attribute name="Comment" value="${manifest.comment}"/>
<attribute name="Implementation-Title" value="${manifest.title}"/>
<attribute name="Implementation-Version" value="${version.full}"/>
<attribute name="Implementation-Vendor" value="${manifest.vendor}"/>
<attribute name="Implementation-URL" value="${manifest.url}"/>
</section>
</manifest>
</jar>
</target>
<!-- build XMLInputStream interface ============================================= -->
<target name="xmlinputstream.classes" depends="dirs">
<mkdir dir="build/classes/xmlinputstream"/>
<javac srcdir="src/xmlinputstream"
source="${javac.source}" target="${javac.target}"
destdir="build/classes/xmlinputstream"
debug="on"
includeantruntime="false">
<classpath>
<pathelement location="build/classes/common"/>
</classpath>
</javac>
</target>
<!-- xmlpublic target ============================================== -->
<target name="xmlpublic.classes" depends="dirs">
<mkdir dir="build/classes/xmlpublic"/>
<javac srcdir="src/xmlpublic" sourcepath="src/xmlinputstream" destdir="build/classes/xmlpublic"
source="${javac.source}" target="${javac.target}" debug="on" includeantruntime="false">
<classpath/>
</javac>
<!-- Need properties files for XmlError -->
<copy
todir="build/classes/xmlpublic">
<fileset dir="src/xmlpublic">
<include name="**/*.properties"/>
</fileset>
</copy>
</target>
<target name="xmlpublic.jar" depends="dirs,xmlinputstream.classes, xmlpublic.classes, xmlschema.classes, xsdschema.classes">
<jar jarfile="build/lib/xmlpublic.jar" index="true">
<fileset dir="build/classes/xmlpublic"
excludes="javax/**"/>
<fileset dir="build/classes/xmlschema"/>
<fileset dir="build/classes/xsdschema"/>
<manifest>
<section name="${manifest.name}">
<attribute name="Comment" value="${manifest.comment}"/>
<attribute name="Implementation-Title" value="${manifest.title}"/>
<attribute name="Implementation-Version" value="${version.full}"/>
<attribute name="Implementation-Vendor" value="${manifest.vendor}"/>
<attribute name="Implementation-URL" value="${manifest.url}"/>
</section>
</manifest>
</jar>
</target>
<!-- typestore target ============================================== -->
<target name="typestore.classes" depends="dirs, xmlpublic.classes, common.classes, xmlinputstream.classes">
<mkdir dir="build/classes/typestore"/>
<javac srcdir="src/typestore" destdir="build/classes/typestore" source="${javac.source}" target="${javac.target}"
debug="on" includeantruntime="false">
<classpath>
<pathelement location="build/classes/xmlinputstream"/>
<pathelement location="build/classes/xmlpublic"/>
<pathelement location="build/classes/common"/>
</classpath>
</javac>
</target>
<!-- common target ============================================= -->
<target name="common.classes" depends="dirs, xmlpublic.classes, xmlinputstream.classes">
<mkdir dir="build/classes/common"/>
<javac srcdir="src/common" destdir="build/classes/common" source="${javac.source}" target="${javac.target}"
debug="on" includeantruntime="false">
<classpath>
<pathelement location="build/classes/xmlinputstream"/>
<pathelement location="build/classes/xmlpublic"/>
</classpath>
</javac>
</target>
<!-- typeholder target ================================================ -->
<property name="typeholder.name" value="org/apache/xmlbeans/impl/schema/TypeSystemHolder"/>
<target name="typeholder.check">
<condition property="typeholder.notRequired">
<uptodate property="typeholder.notRequired"
targetfile="build/classes/typeholder/${typeholder.name}.template">
<srcfiles dir="src/typeholder" includes="${typeholder.name}.java"/>
</uptodate>
</condition>
</target>
<target name="typeholder.template" depends="typeholder.check, xmlpublic.classes" unless="typeholder.notRequired">
<mkdir dir="build/classes/typeholder"/>
<javac destdir="build/classes/typeholder" source="${javac.source}" target="${javac.target}"
debug="off" includeantruntime="false">
<classpath>
<pathelement location="build/classes/xmlpublic"/>
</classpath>
<src location="src/typeholder"/>
</javac>
<move
file="build/classes/typeholder/${typeholder.name}.class"
tofile="build/classes/typeholder/${typeholder.name}.template"/>
</target>
<!-- typeimpl target ============================================== -->
<target name="typeimpl.classes" depends="dirs, store.classes,
repackage.classes, xmlpublic.classes, typeholder.template, typestore.classes, xsdschema.classes,
configschema.classes, toolschema.classes, jam.classes">
<mkdir dir="build/classes/typeimpl"/>
<javac destdir="build/classes/typeimpl" source="${javac.source}" target="${javac.target}"
debug="on" includeantruntime="false">
<classpath>
<pathelement location="build/classes/store"/>
<pathelement location="build/classes/xmlinputstream"/>
<pathelement location="build/classes/common"/>
<pathelement location="build/classes/repackage"/>
<pathelement location="build/classes/typestore"/>
<pathelement location="build/classes/xmlpublic"/>
<pathelement location="build/classes/xmlconfig"/>
<pathelement location="build/classes/configschema"/>
<pathelement location="build/classes/xsdschema"/>
<pathelement location="build/classes/xmlschema"/>
<pathelement location="build/classes/toolschema"/>
<pathelement location="build/classes/jam"/>
</classpath>
<src path="src/typeimpl"/>
<src path="build/src/xmlschema"/>
<src path="build/src/xsdschema"/>
<src path="build/src/configschema"/>
<src path="build/src/toolschema"/>
<src path="src/xmlconfig"/>
</javac>
<!-- Need properties files for regex -->
<copy
todir="build/classes/typeimpl">
<fileset dir="src/typeimpl">
<exclude name="**/*.java"/>
</fileset>
</copy>
</target>
<!-- xmlcomp target =============================================== -->
<target name="xmlcomp.classes" depends="dirs, repackage.classes, typeimpl.classes, xmlpublic.classes, typestore.classes">
<mkdir dir="build/classes/xmlcomp"/>
<javac srcdir="src/xmlcomp" destdir="build/classes/xmlcomp" source="${javac.source}" target="${javac.target}"
debug="on" includeantruntime="true">
<classpath>
<pathelement location="build/classes/xmlinputstream"/>
<pathelement location="build/classes/xmlpublic"/>
<pathelement location="build/classes/common"/>
<pathelement location="build/classes/repackage"/>
<pathelement location="build/classes/typeimpl"/>
<pathelement location="build/classes/xmlconfig"/>
<pathelement location="build/classes/configschema"/>
<pathelement location="build/classes/toolschema"/>
<pathelement location="build/classes/xsdschema"/>
<pathelement location="build/classes/typestore"/>
</classpath>
</javac>
</target>
<!-- marshal target =============================================== -->
<target name="marshal.classes" depends="dirs, typeimpl.classes, xmlpublic.classes">
<mkdir dir="build/classes/marshal"/>
<javac srcdir="src/marshal" destdir="build/classes/marshal" source="${javac.source}" target="${javac.target}"
debug="on" includeantruntime="false">
<classpath>
<pathelement location="build/classes/configschema"/>
<pathelement location="build/classes/xmlinputstream"/>
<pathelement location="build/classes/xmlpublic"/>
<pathelement location="build/classes/common"/>
<pathelement location="build/classes/typeimpl"/>
<pathelement location="build/classes/store"/>
</classpath>
</javac>
</target>
<!-- support for running JAM under JDK1.5 ========================= -->
<target name="jamsupport.classes" depends="dirs,jam.classes">
<javac srcdir="src/jamsupport" destdir="build/classes/jam" source="${javac.source}" target="${javac.target}"
debug="on" includeantruntime="true">
<classpath id="jamsupport.compile.path">
<pathelement location="build/classes/jam"/>
</classpath>
</javac>
</target>
<!-- saaj_api target ============================================== -->
<target name="saaj_api.classes" depends="dirs">
<mkdir dir="build/classes/saaj_api"/>
<javac srcdir="src/saaj_api" destdir="build/classes/saaj_api" source="${javac.source}" target="${javac.target}"
debug="on" includeantruntime="false">
<classpath id="saaj_api.compile.path">
<pathelement location="build/classes/common"/>
<pathelement location="build/classes/xmlpublic"/>
</classpath>
</javac>
</target>
<!-- store target ============================================== -->
<target name="store.classes"
depends="dirs, common.classes, xmlpublic.classes, typestore.classes, saaj_api.classes">
<mkdir dir="build/classes/store"/>
<javac srcdir="src/store" destdir="build/classes/store" source="${javac.source}" target="${javac.target}"
debug="on" includeantruntime="false">
<classpath id="store.compile.path">
<pathelement location="build/classes/typestore"/>
<pathelement location="build/classes/xmlinputstream"/>
<pathelement location="build/classes/xmlpublic"/>
<pathelement location="build/classes/common"/>
<pathelement location="build/classes/saaj_api"/>
</classpath>
</javac>
</target>
<!-- tools target ============================================== -->
<target name="tools.classes"
depends="dirs, common.classes, xmlpublic.classes, typestore.classes, saaj_api.classes,
typeimpl.classes, xmlcomp.classes">
<mkdir dir="build/classes/tools"/>
<javac srcdir="src/tools" destdir="build/classes/tools" source="${javac.source}" target="${javac.target}"
debug="on" includeantruntime="false">
<classpath id="tools.compile.path">
<pathelement location="build/classes/typestore"/>
<pathelement location="build/classes/xmlinputstream"/>
<pathelement location="build/classes/xmlpublic"/>
<pathelement location="build/classes/common"/>
<pathelement location="build/classes/saaj_api"/>
<pathelement location="build/classes/typeimpl"/>
<pathelement location="build/classes/xmlcomp"/>
</classpath>
</javac>
</target>
<!-- bootstrap schema target support ================================ -->
<!-- xsdschema target =============================================== -->
<!-- Note that this is a tricky target because it bootstraps xbeans on itself. -->
<!-- The basic strategy is to rely on the oldxbeans.jar checked into external/lib -->
<path id="bootstrap.run.path">
<pathelement location="build/private/lib/oldxbean.jar"/>
<pathelement location="build/classes/xmlpublic"/>
</path>
<path id="bootstrap.compile.path">
<pathelement location="build/classes/xmlpublic"/>
</path>
<property name="bootstrap.compile.path" refid="bootstrap.compile.path"/>
<path id="xsdschema.compile.path">
<pathelement location="build/classes/xmlschema"/>
<pathelement location="build/classes/xmlpublic"/>
</path>
<property name="xsdschema.compile.path" refid="xsdschema.compile.path"/>
<target name="xsdschema.check">
<condition property="xsdschema.notRequired">
<uptodate property="xsdschema.notRequired" targetfile="build/classes/xsdschema">
<srcfiles dir="src/xsdschema" includes="**/*.xsd*"/>
</uptodate>
</condition>
</target>
<target name="xsdschema.classes" depends="xsdschema.check, xmlschema.classes, xmlpublic.classes, oldxbean.jar" unless="xsdschema.notRequired">
<delete dir="build/classes/xsdschema"/>
<delete dir="build/src/xsdschema"/>
<java classname="${bootstrap_schema_compiler}" classpathref="bootstrap.run.path" fork="true" failonerror="true">
<jvmarg value="-ea"/>
<arg line="${repackage_arg} -name sXMLSCHEMA -srconly -d build/classes/xsdschema -noann -src build/src/xsdschema src/xsdschema/schema"/>
</java>
</target>
<!-- xmlschema target ============================================= -->
<!-- Note that this is a tricky target because it bootstraps xbeans on itself. -->
<!-- The basic strategy is to rely on the oldxbeans.jar checked into external/lib -->
<!-- This doesn't really work anymore, because the "schema" part now needs the package name and the
ant "replace" mechanism is too difficult to use to be worth it -->
<target name="xmlschema.check">
<condition property="xmlschema.notRequired">
<uptodate property="xmlschema.notRequired" targetfile="build/classes/xmlschema">
<srcfiles dir="src/xmlschema" includes="**/*.xsd*"/>
</uptodate>
</condition>
</target>
<target name="xmlschema.classes" depends="xmlschema.check, xmlpublic.classes, oldxbean.jar" unless="xmlschema.notRequired">
<delete dir="build/classes/xmlschema"/>
<delete dir="build/src/xmlschema"/>
<java classname="${bootstrap_schema_compiler}" classpathref="bootstrap.run.path" fork="true" failonerror="true">
<jvmarg value="-ea"/>
<arg line="${repackage_arg} -name sXMLLANG -noann -d build/classes/xmlschema -src build/src/xmlschema -srconly src/xmlschema/schema"/>
</java>
</target>
<!-- xmlconfig target =============================================== -->
<target name="xmlconfig.classes" depends="dirs, xmlpublic.classes, configschema.classes">
<mkdir dir="build/classes/xmlconfig"/>
<javac srcdir="src/xmlconfig" destdir="build/classes/xmlconfig" source="${javac.source}" target="${javac.target}"
debug="on" includeantruntime="false">
<classpath>
<pathelement location="build/classes/xmlpublic"/>
<pathelement location="build/classes/configschema"/>
</classpath>
</javac>
</target>
<!-- configschema target ============================================= -->
<!-- Note that this is a tricky target because it bootstraps xbeans on itself. -->
<!-- The basic strategy is to rely on the oldxbeans.jar checked into external/lib -->
<property name="bootstrap.compile.path" refid="bootstrap.compile.path"/>
<target name="configschema.check">
<uptodate property="configschema.notRequired" targetfile="build/classes/configschema">
<srcfiles dir="src/configschema" includes="**/*.xsd"/>
</uptodate>
</target>
<target name="configschema.classes" depends="configschema.check, xmlpublic.classes, oldxbean.jar" unless="configschema.notRequired">
<delete dir="build/classes/configschema"/>
<java classname="${bootstrap_schema_compiler}" classpathref="bootstrap.run.path" fork="true" failonerror="true">
<jvmarg value="-ea"/>
<arg line="${repackage_arg} -name sXMLCONFIG -srconly -noann -src build/src/configschema -d build/classes/configschema src/configschema/schema"/>
</java>
</target>
<!-- toolschema target ============================================= -->
<!-- Note that this is a tricky target because it bootstraps xbeans on itself. -->
<!-- The basic strategy is to rely on the oldxbeans.jar checked into external/lib -->
<property name="bootstrap.compile.path" refid="bootstrap.compile.path"/>
<target name="toolschema.check">
<uptodate property="toolschema.notRequired" targetfile="build/classes/toolschema">
<srcfiles dir="src/toolschema" includes="**/*.xsd"/>
</uptodate>
</target>
<target name="toolschema.classes" depends="toolschema.check, xmlpublic.classes, oldxbean.jar" unless="toolschema.notRequired">
<delete dir="build/classes/toolschema"/>
<mkdir dir="build/src/toolschema"/>
<java classname="${bootstrap_schema_compiler}" classpathref="bootstrap.run.path" fork="true" failonerror="true">
<jvmarg value="-ea"/>
<arg line="${repackage_arg} -name sXMLTOOLS -srconly -noann -src build/src/toolschema -d build/classes/toolschema src/toolschema"/>
</java>
</target>
<!-- =========================== -->
<!-- ===== Repackaging ====== -->
<!-- =========================== -->
<target name="edit_build_script">
<echo message="editing repackage build file: ${token} --> ${replacement}"/>
<java classname="repackage.EditBuildScript" failonerror="true">
<arg value="${rp_target_dir}/build.xml"/>
<arg value="${token}"/>
<arg value="${replacement}"/>
<classpath>
<pathelement location="build/classes/repackage"/>
</classpath>
</java>
</target>
<property name="repackage_arg" value=""/>
<property name="schema_compiler" value="org.apache.xmlbeans.impl.tool.SchemaCompiler"/>
<property name="bootstrap_schema_compiler" value="org.apache.xmlbeans.impl.tool.SchemaCompiler"/>
<property name="jam_package_name" value="org.apache.xmlbeans.impl.jam"/>
<!--
Params to repackage are:
repackage_spec:
Of the form from_pkg_1:to_pkg_1;from_pkg_2:to_pkg_2 which specifies which packages
are to be converted which which which other packages. Right now, there are two.
org.apache.xmlbeans and apache.xmlbeans.impl, the public and implementation
packages.
rp_source_dir
From where the sources come...
rp_target_dir
To where the repackaged sources are built
-->
<target name="repackage" depends="repackage.classes">
<echo message="Re-packaging XmlBeans"/>
<echo message=" from: ${rp_source_dir}"/>
<echo message=" to: ${rp_target_dir}"/>
<property
name="new_repackage_arg"
value="-repackage ${repackage_spec}"/>
<java classname="repackage.Repackage" fork="true" failonerror="true">
<classpath>
<pathelement location="build/classes/repackage"/>
</classpath>
<arg line="${new_repackage_arg} -f ${rp_source_dir} -t ${rp_target_dir}"/>
</java>
<echo message="Build XmlBeans in ${rp_target_dir}"/>
<ant dir="${rp_target_dir}" target="xbean" inheritAll="false">
<property name="repackage_arg" value="${new_repackage_arg}"/>
<property name="bootstrap_schema_compiler" value="${bootstrap_schema_compiler}"/>
</ant>
<ant dir="${rp_target_dir}" target="quickbootstrap" inheritAll="false"/>
</target>
<target name="repackage.classes">
<mkdir dir="build/classes/repackage"/>
<javac srcdir="src/repackage" destdir="build/classes/repackage" source="${javac.source}" target="${javac.target}"
debug="on" includeantruntime="false"/>
</target>
<!-- xpath target ============================================= -->
<target name="xpath.classes" depends="dirs, xmlpublic.classes, store.classes, saxon9.jar">
<mkdir dir="build/classes/xpath_xquery"/>
<mkdir dir="build/classes/xpath_xquery/META-INF"/>
<mkdir dir="build/classes/xpath_xquery/META-INF/services"/>
<copy
file="src/xpath_xquery/SelectPathInterface.g"
tofile="build/classes/xpath_xquery/META-INF/services/org.apache.xmlbeans.impl.store.PathDelegate.SelectPathInterface"/>
<copy
file="src/xpath_xquery/QueryInterface.g"
tofile="build/classes/xpath_xquery/META-INF/services/org.apache.xmlbeans.impl.store.QueryDelegate.QueryInterface"/>
<javac
destdir="build/classes/xpath_xquery"
classpathref="xpath.compile.path"
source="${javac.source}" target="${javac.target}"
debug="on"
includeantruntime="false">
<src path="src/xpath_xquery"/>
<classpath id="xpath.compile.path">
<pathelement location="build/classes/xmlpublic"/>
<pathelement location="build/classes/store"/>
<pathelement location="${saxon_jar}"/>
<pathelement location="${saxon_dom_jar}"/>
</classpath>
</javac>
</target>
<target name="xbean_xpath.jar" depends="dirs, xpath.classes">
<jar jarfile="build/lib/xbean_xpath.jar" basedir="build/classes/xpath_xquery"/>
</target>
<!-- TEST Targets ===================================================== -->
<!-- All targets hook up into testbuild.xml -->
<property name="testbuild.file" value="testbuild.xml"/>
<target name="testbuild">
<ant antfile="${testbuild.file}" target="build"/>
</target>
<target name="build.tools">
<ant antfile="${testbuild.file}" target="build.test.tools"/>
</target>
<target name="build.schemas">
<ant antfile="${testbuild.file}" target="build.schemas"/>
</target>
<target name="build.tests">
<ant antfile="${testbuild.file}" target="build.tests"/>
</target>
<target name="testclean">
<ant antfile="${testbuild.file}" target="clean"/>
</target>
<target name="clean.schemas">
<ant antfile="${testbuild.file}" target="clean.schemas"/>
</target>
<target name="clean.tests">
<ant antfile="${testbuild.file}" target="clean.tests"/>
</target>
<target name="clean.cc">
<ant antfile="${testbuild.file}" target="clean.cc"/>
</target>
<target name="run.junit">
<ant antfile="${testbuild.file}" target="run.junit"/>
</target>
<target name="checkintest">
<ant antfile="${testbuild.file}" target="checkin"/>
</target>
<target name="detailed">
<ant antfile="${testbuild.file}" target="detailed"/>
</target>
<target name="compile.run">
<ant antfile="${testbuild.file}" target="compile.run"/>
</target>
<path id="test.compile.path">
<pathelement location="build/classes/marshal"/>
<pathelement location="build/classes/common"/>
<pathelement location="external/lib/junit.jar"/>
<pathelement location="build/ar/xbean.jar"/>
<pathelement location="build/classes/xmlinputstream"/>
</path>
<path id="test.run.path">
<pathelement location="build/ar/xbean.jar"/>
<pathelement location="external/lib/junit.jar"/>
</path>
<target name="drt.classes" depends="dirs">
<mkdir dir="build/private/classes/drt"/>
<javac
destdir="build/private/classes/drt"
classpathref="test.compile.path"
source="${javac.source}" target="${javac.target}"
debug="on"
includeantruntime="false">
<src path="test/src/drt"/>
</javac>
</target>
<target name="drt.jar" depends="drt.classes">
<jar jarfile="build/private/lib/drt.jar" basedir="build/private/classes/drt"/>
</target>
<!-- stsschema (for testing) target ================================ -->
<path id="scomp.run.path">
<pathelement location="build/lib/xbean.jar"/>
</path>
<target name="stsschema.check">
<uptodate property="stsschema.notRequired" targetfile="build/private/lib/stsschema.jar">
<srcfiles dir="test/src/stsschema" includes="**/*.xsd"/>
<srcfiles dir="build/ar" includes="xbean.jar"/>
</uptodate>
</target>
<target name="stsschema.jar" depends="stsschema.check, dirs, xbean" unless="stsschema.notRequired">
<java classname="${schema_compiler}" classpathref="scomp.run.path" fork="true" failonerror="true">
<jvmarg value="-ea"/>
<arg line="-out build/private/lib/stsschema.jar test/src/stsschema"/>
</java>
</target>
<!-- JAM deployment -->
<target name="jam.classes.check">
<uptodate property="jam.classes.notRequired"
targetfile="build/ar/xbean.jar">
<srcfiles dir="external/lib" includes="jam*-src.jar"/>
</uptodate>
</target>
<target name="jam.classes" depends="jam.classes.check, dirs, repackage.classes" unless="jam.classes.notRequired">
<delete dir="build/private/jam"/>
<mkdir dir="build/private/jam"/>
<unjar src="external/lib/jam-0.1.0-src.jar" dest="build/private/jam"/>
<echo message="Re-packaging JAM"/>
<java classname="repackage.Repackage" fork="true" failonerror="true">
<classpath>
<pathelement location="build/classes/repackage"/>
</classpath>
<arg line="-repackage org.codehaus.jam:${jam_package_name} -f build/private/jam/src -t build/private/jam/src_repackage"/>
</java>
<!--copy file="build/private/jam/src/java.g" todir="build/private/jam/src_repackage"/-->
<delete dir="build/classes/jam"/>
<mkdir dir="build/classes/jam"/>
<javac
destdir="build/classes/jam"
source="${javac.source}" target="${javac.target}"
debug="on"
includeantruntime="true">
<src path="build/private/jam/src_repackage"/>
<classpath/>
</javac>
</target>
<macrodef name="downloadfile">
<attribute name="src"/>
<attribute name="dest"/>
<sequential>
<!--fail
message="Java version might be uncapable to download https URLs - see https://stackoverflow.com/questions/6851461/java-why-does-ssl-handshake-give-could-not-generate-dh-keypair-exception">
<condition>
<and>
<equals arg1="${ant.java.version}" arg2="1.6"/>
<contains string="@{src}" substring="https"/>
</and>
</condition>
</fail-->
<get src="@{src}" dest="@{dest}" skipexisting="true"/>
</sequential>
</macrodef>
<target name="rat-check" description="Runs the Apache Creadur Rat check against the source code, to spot any files which are missing the correct license headers">
<mkdir dir="${rat.reportdir}" />
<downloadfile src="${rat.url}" dest="${rat.jar}"/>
<typedef resource="org/apache/rat/anttasks/antlib.xml"
uri="antlib:org.apache.rat.anttasks"
classpath="${rat.jar}" />
<rat:report xmlns:rat="antlib:org.apache.rat.anttasks" reportFile="${rat.report}">
<fileset dir="src/">
<exclude name="**/*.iml" />
<exclude name="**/*.g" />
<exclude name="**/XML.xsd"/>
<exclude name="**/XMLSchema.xsd"/>
</fileset>
</rat:report>
<!-- remove clutter to compact build output -->
<!-- replaceregexp doesn't work within loadfile ... -->
<replaceregexp file="${rat.report}" match="\s+Printing headers for files without AL header.++" replace="" flags="s"/>
<loadfile property="rat.reportcontent" srcFile="${rat.report}">
<filterchain>
<linecontainsregexp negate="true">
<regexp pattern="^\s+(AL|B|N)\s+"/>
</linecontainsregexp>
</filterchain>
</loadfile>
<echo>${rat.reportcontent}</echo>
<!-- fail the build if at least one note is in the report -->
<fail><condition><matches pattern="[1-9][0-9]* Unknown Licens" string="${rat.reportcontent}"/></condition></fail>
</target>
<!-- Runs the Forbiddens APIs checker against the source code, to -->
<!-- spot any cases where we've accidently used methods we shouldn't -->
<!-- See https://github.com/policeman-tools/forbidden-apis for details -->
<!-- of the checks that this can do -->
<target name="forbidden-apis-check">
<downloadfile src="${forbidden.url}" dest="${forbidden.jar}"/>
<taskdef name="forbiddenapis"
classname="de.thetaphi.forbiddenapis.ant.AntTask"
classpath="${forbidden.jar}"/>
<!-- first check rules that apply to all the source code -->
<path id="forbiddenapis.classpath">
<pathelement location="build/classes/common"/>
<pathelement location="build/classes/jam"/>
<pathelement location="build/classes/marshal"/>
<pathelement location="build/classes/repackage"/>
<pathelement location="build/classes/saaj_api"/>
<pathelement location="build/classes/store"/>
<pathelement location="build/classes/tools"/>
<pathelement location="build/classes/typeholder"/>
<pathelement location="build/classes/typeimpl"/>
<pathelement location="build/classes/typestore"/>
<pathelement location="build/classes/xmlcomp"/>
<pathelement location="build/classes/xmlinputstream"/>
<pathelement location="build/classes/xmlpublic"/>
<pathelement location="build/classes/xpath_xquery"/>
<pathelement location="build/classes/xmlinputstream"/>
<path path="${env.ANT_HOME}/lib/ant.jar"/>
<pathelement location="external/lib/saxon9.jar"/>
<pathelement location="external/lib/saxon9-dom.jar"/>
</path>
<forbiddenapis
suppressAnnotation="org.apache.poi.util.SuppressForbidden"
targetVersion="${javac.target}"
classpathref="forbiddenapis.classpath"
>
<bundledsignatures name="jdk-unsafe"/>
<bundledsignatures name="jdk-deprecated"/>
<bundledsignatures name="jdk-internal"/>
<bundledsignatures name="jdk-non-portable"/>
<bundledsignatures name="jdk-reflection"/>
<!--signaturesFileset file="src/resources/devtools/forbidden-signatures.txt"/-->
<!-- sources -->
<fileset dir="build/classes/xmlcomp"/>
<fileset dir="build/classes/common"/>
<fileset dir="build/classes/marshal"/>
<fileset dir="build/classes/repackage"/>
<fileset dir="build/classes/saaj_api"/>
<fileset dir="build/classes/store"/>
<fileset dir="build/classes/tools"/>
<fileset dir="build/classes/typeholder"/>
<fileset dir="build/classes/typeimpl"/>
<fileset dir="build/classes/typestore"/>
<fileset dir="build/classes/xmlcomp"/>
<fileset dir="build/classes/xmlinputstream"/>
<fileset dir="build/classes/xmlpublic"/>
<fileset dir="build/classes/xpath_xquery"/>
<fileset dir="build/classes/xmlinputstream"/>
</forbiddenapis>
</target>
</project>