<!--/******************************************************************************* | |
* This program and the accompanying materials are made available under the | |
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 | |
* which accompanies this distribution. | |
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html | |
* and the Eclipse Distribution License is available at | |
* http://www.eclipse.org/org/documents/edl-v10.php. | |
* | |
* Ant naming conventions: | |
* - regardless of the actual OS platform,'/' is the directory separator | |
* (Ant will convert as appropriate). | |
* - multi-word properties use periods '.' | |
* - properties ending in .jar define jarfile names only (no path) | |
* - properties ending in .lib are fully qualified jars (path and filename) | |
* - properties ending in .dir are directory paths | |
* - properties ending in .path are path refid names (classpath fragments) | |
* - multi-word targets use hyphens '-' | |
* - targets beginning with test- are reserved for high level test targets, | |
* and are used in test results parsing | |
* - targets typically use the form <action>-<object>-<type> (ie. package-bundle-zip) | |
* - multi-word macros use underscores '_' | |
* - multi-word macro attributes are concatinated | |
* e.g. 'runpathref' | |
* - multi-word tasks (taskdef) names are concatinated | |
* e.g. 'validateconnection' | |
* - OS environment variables are in ALLCAPS and have 'env' as a prefix | |
* e.g. ${env.XXX}. | |
* - Ant properties are lower case. | |
* | |
* Contributors: | |
* egwin - initial implementation. | |
#******************************************************************************/--> | |
<!-- ============================================================================= | |
* General Comments | |
* This buildfile contains: | |
* - calls to the component builds to clean, compile, package and test thier bits | |
* - calls to initiate component tests | |
* - targets to generate the eclipselink tools installer | |
* - targets to generate the javadocs | |
* Used standalone it can generate Developer Builds of the entire product or subsets | |
* of the product. | |
*================================================================================= --> | |
<!-- This ant project includes the following tasks: | |
- build (default) : compiles all components and tests | |
- clean : removes all build generated files | |
- build-distribution : compiles and packages all jars, javadocs, installer | |
- build-javadocs : generates Javadocs | |
- package-installer-zip : builds installer | |
- test-srg : runs all Short ReGression test suites | |
- test-lrg : runs all Long ReGression test suites | |
It may require some configuration of the build.properties to run. | |
--> | |
<project name="eclipselink.tools.temp" default="build" basedir="."> | |
<target name="build" depends="init, build-tools, build-tools-test" description="Default ant target, compiles all components and tests"/> | |
<target name="clean" depends="init, clean-tools, clean-tools-test" description="Cleans all build generated files."/> | |
<target name="build-distribution" depends="clean, build, build-javadocs, package-installer-zip" description="Builds all jars, generates javadoc, and builds installer."/> | |
<target name="test-srg" depends="init, test-tools-srg" description="Run the SRG test suites"/> | |
<target name="test-lrg" depends="init, test-tools" description="Run the LRG test suites"/> | |
<!-- ================================================================================= --> | |
<!-- =========================== Init Targets ====================================== --> | |
<target name="init"> | |
<dirname property="tools.build.location_temp" file="${ant.file.eclipselink.tools.temp}"/> | |
<pathconvert targetos="unix" property="tools.build.location"> | |
<path> | |
<pathelement location="${tools.build.location_temp}"/> | |
</path> | |
</pathconvert> | |
<echo message="tools.build.location = '${tools.build.location}'"/> | |
<property environment="env"/> | |
<echo message="env.JAVA_HOME = '${env.JAVA_HOME}'"/> | |
<echo message="env.ANT_HOME = '${env.ANT_HOME}'"/> | |
<echo message="env.JUNIT_HOME = '${env.JUNIT_HOME}'"/> | |
<echo message="env.MAVENANT_DIR= '${env.MAVENANT_DIR}'"/> | |
<echo message="env.PATH = '${env.PATH}'"/> | |
<echo message="env.CLASSPATH = '${env.CLASSPATH}'"/> | |
<echo message="env.GIT_EXEC = '${env.GIT_EXEC}'"/> | |
<echo message="env.TARGET = '${env.TARGET}'"/> | |
<echo message=" "/> | |
<!-- Allows a user to overide certain user specific properties. --> | |
<echo message="user.home = '${user.home}'"/> | |
<!-- local property overrides --> | |
<condition property="custom.properties.message" value="Loading ${user.home}/build.properties..." | |
else="Custom properties file '${user.home}/build.properties' not found. Skipping..."> | |
<available file="${user.home}/build.properties"/> | |
</condition> | |
<echo message="${custom.properties.message}"/> | |
<property file="${user.home}/build.properties"/> | |
<!-- default dependency jar location --> | |
<condition property="extensions.depend.dir" value="${tools.build.location}/../extension.lib.external" | |
else="${tools.build.location}"> | |
<available file="${tools.build.location}/../extension.lib.external" type="dir"/> | |
</condition> | |
<echo message="extensions.depend.dir= '${extensions.depend.dir}'"/> | |
<!-- helper definitions --> | |
<property name="tools.root" value="${tools.build.location}/tools"/> | |
<property name="tools.mvn.parent" value="${tools.root}/org.eclipse.persistence.tools.parent"/> | |
<property name="tools.prefix" value="eclipselink-tools"/> | |
<!-- Versioning --> | |
<!-- These variables are set in Hudson. A manual build gets defaults --> | |
<tstamp> | |
<format property="build.date" pattern="yyyyMMdd"/> | |
<format property="build.time" pattern="HHmm"/> | |
</tstamp> | |
<property name="build.type" value="SNAPSHOT"/> | |
<property name="git.hash" value="NA"/> | |
<condition property="version.qualifier" value="qualifier" | |
else="v${build.date}-${git.hash}"> | |
<equals arg1="${git.hash}" arg2="NA"/> | |
</condition> | |
<property name="release.version" value="2.6.0"/> | |
<property name="version.string" value="${release.version}.${version.qualifier}"/> | |
<property name="release.designation" value="EclipseLink DeveloperBuild"/> | |
<!-- generate string for tag creation (used for maven publish and handoff-version as well) --> | |
<condition property="milestone.tag" value="${release.version}"> | |
<equals arg1="${build.type}" arg2="RELEASE"/> | |
</condition> | |
<property name="milestone.tag" value="${release.version}-${build.type}"/> | |
<echo message="milestone.tag ='${milestone.tag}'"/> | |
<!-- Javadoc properties --> | |
<property name="javadoc.title" value="EclipseLink Tools ${release.version}, build '${version.qualifier}' API Reference"/> | |
<property name="javadoc.dir" value="${tools.build.location}/tools/target/javadoc"/> | |
<path id="javadoc.path"> | |
<pathelement path="${some.jar}"/> | |
</path> | |
<echo message="ANT_ARGS='${env.ANT_ARGS}'"/> | |
<echo message="ANT_OPTS='${env.ANT_OPTS}'"/> | |
<echo message=" "/> | |
<echo message="java.version ='${java.version}'"/> | |
<echo message="java.class.path='${java.class.path}'"/> | |
<echo message="os.name ='${os.name}'"/> | |
<echo message="os.arch ='${os.arch}'"/> | |
<echo message="os.version ='${os.version}'"/> | |
<echo message=" "/> | |
<echo message="tools.root ='${tools.root}'"/> | |
<echo message="tools.mvn.parent='${tools.mvn.parent}'"/> | |
<echo message="tools.prefix ='${tools.prefix}'"/> | |
<echo message=" "/> | |
<echo message="builddate.buildtime='${build.date}.${build.time}'"/> | |
<echo message="git.hash ='${git.hash}'"/> | |
<echo message="build.type ='${build.type}'"/> | |
<echo message="version.qualifier ='${version.qualifier}'"/> | |
<echo message="release.version ='${release.version}'"/> | |
<echo message="version.string ='${version.string}'"/> | |
<echo message="release.designation='${release.designation}'"/> | |
<echo message=" "/> | |
<echo message="javadoc.title ='${javadoc.title}'"/> | |
<echo message="javadoc.dir ='${javadoc.dir}'"/> | |
</target> | |
<!-- Needed for Maven/Tycho builds --> | |
<target name="check-maven" description="Verify the Maven tool is installed and configured"> | |
<condition property="M2_HOME" value="${env.M2_HOME}"> | |
<!-- else="D:/apache-maven-3.0.4" --> | |
<isset property="env.M2_HOME"/> | |
</condition> | |
<echo message="Maven install (M2_HOME) set to: '${M2_HOME}'"/> | |
<available file="${M2_HOME}/bin/mvn" property="use.maven"/> | |
<fail message="Maven 3 not found. Build won't run if Maven 3 not installed and M2_HOME properly set!." unless="use.maven"/> | |
</target> | |
<!-- ================================================================================= --> | |
<!-- =========================== Clean Targets ===================================== --> | |
<target name="clean-tools" depends="check-maven" description="Clean the maven built runtime projects"> | |
<java dir="${tools.mvn.parent}" fork="true" failonerror="true" classname="org.codehaus.plexus.classworlds.launcher.Launcher"> | |
<jvmarg value="-Dclassworlds.conf=${M2_HOME}/bin/m2.conf"/> | |
<jvmarg value="-Dmaven.home=${M2_HOME}"/> | |
<jvmarg value="-Dbuild.qualifier=${version.qualifier}"/> | |
<arg value="clean"/> | |
<classpath> | |
<fileset dir="${M2_HOME}/boot"> | |
<include name="plexus-classworlds-*.jar"/> | |
</fileset> | |
</classpath> | |
</java> | |
<echo message="Deleting: '${tools.root}/target/**/*'"/> | |
<delete failonerror="false"> | |
<fileset dir="${tools.root}/target"> | |
<include name="**/*"/> | |
</fileset> | |
</delete> | |
<echo message="Deleting old archives: '${tools.build.location}/${tools.prefix}*.zip'"/> | |
<delete failonerror="false"> | |
<fileset dir="${tools.build.location}"> | |
<include name="${tools.prefix}*.zip"/> | |
</fileset> | |
</delete> | |
</target> | |
<!-- Placeholder for non-OSGi test targets --> | |
<target name="clean-tools-test" description="Clean the testing projects"> | |
<echo message="clean-tools-test"/> | |
<!-- ant antfile="antbuild.xml" dir="" target="clean"/> | |
<delete file="${eclipselink.tst.src.prefix}${eclipselink.zip.suffix}" failonerror="false"/ --> | |
</target> | |
<!-- ================================================================================= --> | |
<!-- =========================== Build Targets ===================================== --> | |
<!-- Compiles all runtime tools OSGi components. --> | |
<target name="build-tools" depends="check-maven"> | |
<echo message="Launching Maven build with the following parameters:"/> | |
<echo message=" -Dclassworlds.conf=${M2_HOME}/bin/m2.conf"/> | |
<echo message=" -Dmaven.home=${M2_HOME}"/> | |
<echo message=" -Dbuild.qualifier=${version.qualifier}"/> | |
<echo message=" -DforceContextQualifier=${version.qualifier}"/> | |
<echo message=" verify"/> | |
<java dir="${tools.mvn.parent}" fork="true" failonerror="true" classname="org.codehaus.plexus.classworlds.launcher.Launcher"> | |
<jvmarg value="-Dclassworlds.conf=${M2_HOME}/bin/m2.conf"/> | |
<jvmarg value="-Dmaven.home=${M2_HOME}"/> | |
<jvmarg value="-Dbuild.qualifier=${version.qualifier}"/> | |
<jvmarg value="-DforceContextQualifier=${version.qualifier}"/> | |
<!-- arg value="-X"/ --> | |
<arg value="verify"/> | |
<classpath> | |
<fileset dir="${M2_HOME}/boot"> | |
<include name="plexus-classworlds-*.jar"/> | |
</fileset> | |
</classpath> | |
</java> | |
</target> | |
<!-- Placeholder for non-OSGi tools compiles --> | |
<!-- Compiles tests (excluding workbench, dbws-util and Oracle extensions). --> | |
<target name="build-tools-test"> | |
<echo message="build-tools-test"/> | |
<!-- ant antfile="antbuild.xml" dir="${eclipselink.core.test}" target="build"/ --> | |
</target> | |
<!-- ================================================================================= --> | |
<!-- =========================== Javadoc Targets =================================== --> | |
<target name="build-javadocs"> | |
<!-- the following property needs to be here because the "qualifier" is generated at runtime --> | |
<mkdir dir="${javadoc.dir}"/> | |
<delete dir="${javadoc.dir}" failonerror="false"/> | |
<javadoc | |
maxmemory="384m" | |
Verbose="false" | |
packagenames="org.eclipse.persistence.**" | |
destdir="${javadoc.dir}" | |
useexternalfile="yes" | |
additionalparam="-breakiterator -quiet" | |
windowtitle="${javadoc.title}" | |
> | |
<classpath> | |
<path refid="javadoc.path"/> | |
</classpath> | |
<tag name ="author" enabled="true" description="Author:" /> | |
<tag name ="since" scope="all" description="Since:" /> | |
<tag name ="SBGen" scope="all" description="SBGen:" /> | |
<tag name ="bug" enabled="true" description="Related Bugs:" /> | |
<doctitle><![CDATA[${javadoc.title}]]></doctitle> | |
<header><![CDATA[${javadoc.title}]]></header> | |
<!-- *** EclipseLink modules *** --> | |
<fileset dir="${tools.build.location}/tools/org.eclipse.persistence.tools.db/src" defaultexcludes="yes"> | |
<include name="org/eclipse/persistence/tools/**/*.java"/> | |
<exclude name="org/eclipse/persistence/tools/internal/**/*.java"/> | |
</fileset> | |
<fileset dir="${tools.build.location}/tools/org.eclipse.persistence.tools.gen.db/src" defaultexcludes="yes"> | |
<include name="org/eclipse/persistence/tools/**/*.java"/> | |
<exclude name="org/eclipse/persistence/tools/internal/**/*.java"/> | |
</fileset> | |
<fileset dir="${tools.build.location}/tools/org.eclipse.persistence.tools.mapping/src" defaultexcludes="yes"> | |
<include name="org/eclipse/persistence/tools/**/*.java"/> | |
<exclude name="org/eclipse/persistence/tools/internal/**/*.java"/> | |
</fileset> | |
<fileset dir="${tools.build.location}/tools/org.eclipse.persistence.tools.utility/src" defaultexcludes="yes"> | |
<include name="org/eclipse/persistence/tools/**/*.java"/> | |
<exclude name="org/eclipse/persistence/tools/internal/**/*.java"/> | |
</fileset> | |
<fileset dir="${tools.build.location}/tools/org.eclipse.persistence.tools.gen.nosql/src" defaultexcludes="yes"> | |
<include name="org/eclipse/persistence/tools/**/*.java"/> | |
<exclude name="org/eclipse/persistence/tools/internal/**/*.java"/> | |
</fileset> | |
</javadoc> | |
</target> | |
<!-- ================================================================================= --> | |
<!-- =========================== Package Targets =================================== --> | |
<!-- Packages javadoc into a zip. --> | |
<target name="package-javadoc-zip" depends="build-javadocs" description="build EclipseLink javadoc zip"> | |
<delete file="${tools.prefix}-javadoc-${version.string}.zip" failonerror="false"/> | |
<zip destfile="${tools.prefix}-javadoc-${version.string}.zip"> | |
<!-- miscellaneous files --> | |
<zipfileset dir="${javadocs.dir}/"/> | |
</zip> | |
</target> | |
<!-- Packages the installer zip. --> | |
<target name="package-installer-zip" description="build EclipseLink Tools Installer zip"> | |
<delete file="${tools.prefix}-${version.string}.zip" failonerror="false"/> | |
<zip destfile="${tools.prefix}-${version.string}.zip"> | |
<!-- miscellaneous files --> | |
<zipfileset dir="${tools.mvn.parent}/resource"> | |
<include name="*.html"/> | |
</zipfileset> | |
<zipfileset dir="."> | |
<include name="eclipselink-tools-javadoc-${version.string}.zip"/> | |
</zipfileset> | |
<!-- Library bundles --> | |
<zipfileset dir="${tools.root}/target"> | |
<include name="*.jar"/> | |
<exclude name="*.test*"/> | |
<exclude name="*.parent*"/> | |
</zipfileset> | |
<!-- Testing bundles --> | |
<zipfileset dir="${tools.root}/target" prefix="testing"> | |
<include name="*.test*"/> | |
</zipfileset> | |
</zip> | |
</target> | |
<!-- ================================================================================= --> | |
<!-- =========================== Test Targets ====================================== --> | |
<!-- Run core LRG. --> | |
<target name="test-tools" description="run the LRG tests"> | |
<echo message="test-tools (LRG run)"/> | |
<ant antfile="test.xml" dir="${tools.root}/org.eclipse.persistence.tools.utility.tests" target="run"/> | |
</target> | |
<!-- Run core SRG. --> | |
<target name="test-tools-srg" description="run the SRG tests"> | |
<echo message="test-tools-srg (SRG run)"/> | |
<ant antfile="test.xml" dir="${tools.root}/org.eclipse.persistence.tools.utility.tests" target="test-srg"/> | |
</target> | |
<!-- ================================================================================= --> | |
<!-- =========================== AutoBuild Targets ================================= --> | |
<target name="build-nightly" depends="get-git-hash, build-distribution, publish-distribution" description="Setup for nightly, build, then export for promote"/> | |
<!-- ================================================================================= --> | |
<!-- =========================== AutoBuild Init Targets ============================ --> | |
<target name="set-defaults"> | |
<!-- The following variables should be passed from Hudson: | |
env.JAVA_HOME - JAVA_HOME as defined by Hudson | |
git.exec - fully qualified path to git executable | |
build.deps.dir - location on buildserver that stores dependencies (/shared/rt/eclipselink/bld_deps/master) | |
junit.dir - directory where junit.jar can be found | |
junit.lib - fully qualified path to junit jarfile (junit.dir/junit.jarname) | |
build.tool.root - root of build server (from here releng and db data files can be found) | |
hudson.workspace- WORKSPACE as defined by the Hudson slave | |
M2_HOME - location of Maven3 install (on build server) | |
--> | |
<property name="branch" value="master"/> | |
<condition property="git.exec.message" value="git.exec = '${git.exec}' (Set by Hudson Job)" | |
else="git.exec = not set!"> | |
<isset property="git.exec"/> | |
</condition> | |
<!-- property file="${build.tool.root}/db-${branch}.properties"/ --> | |
<!-- M2_HOME defaults the value maven 3.0.3 install location on the build --> | |
<!-- server for AutoBuilds. This is brittle, but easier for now --> | |
<property name="M2_HOME" value="/shared/common/apache-maven-3.0.3"/> | |
<!-- Set location of executed scripts to hudson (is also set in promote-init for milestone publising) --> | |
<property name="script.dir" value="${hudson.workspace}/buildsystem"/> | |
<!-- Set location to export builds for publishing --> | |
<property name="extract.root.dir" value="${build.tool.root}/exported_builds"/> | |
<echo message=" "/> | |
<echo message="${git.exec.message}"/> | |
<echo message="build.deps.dir = '${build.deps.dir}'"/> | |
<echo message="build.tool.root = '${build.tool.root}'"/> | |
<echo message="hudson.workspace= '${hudson.workspace}'"/> | |
<echo message="M2_HOME = '${M2_HOME}'"/> | |
<echo message=" "/> | |
<echo message="branch = '${branch}'"/> | |
<echo message="extract.root.dir= '${extract.root.dir}'"/> | |
</target> | |
<target name="get-git-hash" unless="git.hash" depends="set-defaults"> | |
<fail message="${git.exec.message}" unless="git.exec"/> | |
<!-- get git.hash NOTE: if "get" fails defaulted to "NA" --> | |
<exec outputproperty="git.hash" | |
failonerror="false" | |
failifexecutionfails="false" | |
errorproperty="githash.failed" | |
logError="true" | |
executable="${git.exec}"> | |
<arg value="log"/> | |
<arg value="-1"/> | |
<arg value="--format=%h"/> | |
</exec> | |
<property name="git.hash" value="NA"/> | |
</target> | |
<!-- ================================================================================= --> | |
<!-- =========================== AutoBuild Publish Targets ========================= --> | |
<target name="cannot-generate-handoff" unless="procedure" depends="init"> | |
<fail message="'procedure' not set. Cannot generate handoff file!"/> | |
</target> | |
<target name="generate-handoff" if="procedure" depends="cannot-generate-handoff" description="generate the publishing handoff file"> | |
<property name="handoff.file" value="${build.tool.root}/handoff-file-${procedure}-${branch}-${version.qualifier}.dat"/> | |
<echo message="Generating Publishing handoff file with the following values:"/> | |
<echo message=" procedure ='${procedure}'"/> | |
<echo message=" extract.loc ='${extract.loc}'"/> | |
<echo message=" host ='${host}'"/> | |
<echo message=" milestone.tag='${milestone.tag}'"/> | |
<echo message=" handoff.file ='${handoff.file}'"/> | |
<echo message="extract.loc=${extract.loc} host=${host} maven.tag=${milestone.tag}" file="${handoff.file}" append="false"/> | |
<!-- could use ${line.separator} to generate on separate lines, but don't as yet --> | |
</target> | |
<target name="publish-distribution" depends="build-distribution"> | |
<echo message="publish-distribution"/> | |
<property name="tools.extract.dir" value="${extract.root.dir}/tools/${release.version}/${version.qualifier}"/> | |
<mkdir dir="${tools.extract.dir}"/> | |
<echo message="Exporting Tools artifacts..."/> | |
<echo message=" from '${hudson.workspace}'"/> | |
<echo message=" to '${tools.extract.dir}'"/> | |
<copy todir="${tools.extract.dir}" failonerror="false"> | |
<fileset dir="${hudson.workspace}"> | |
<include name="${tools.prefix}*${version.qualifier}.zip"/> | |
</fileset> | |
</copy> | |
<!-- Generate proper handoff file --> | |
<antcall target="generate-handoff"> | |
<param name="procedure" value="tools"/> | |
<param name="host" value="Eclipse"/> | |
<param name="extract.loc" value="${tools.extract.dir}"/> | |
</antcall> | |
</target> | |
</project> |