diff options
Diffstat (limited to 'build')
-rw-r--r-- | build/build-properties.xml | 486 | ||||
-rw-r--r-- | build/build.xml | 983 | ||||
-rw-r--r-- | build/ivysettings.xml | 73 | ||||
-rw-r--r-- | build/package.xml | 266 | ||||
-rw-r--r-- | build/readme-build-and-test-aspectj.html | 604 | ||||
-rw-r--r-- | build/readme-build-module.html | 205 | ||||
-rw-r--r-- | build/test-build-script.xml | 42 |
7 files changed, 0 insertions, 2659 deletions
diff --git a/build/build-properties.xml b/build/build-properties.xml deleted file mode 100644 index febfddfec..000000000 --- a/build/build-properties.xml +++ /dev/null @@ -1,486 +0,0 @@ -<!-- -*- Mode: SGML; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- --> -<!-- ========================================================================= --> -<!-- Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC). --> -<!-- Copyright (c) 2003, 2005 Contributors. --> -<!-- All rights reserved. --> -<!-- This program and the accompanying materials are made available --> -<!-- under the terms of the Eclipse Public License v 2.0 --> -<!-- which accompanies this distribution and is available at --> -<!-- https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt --> -<!-- --> -<!-- Contributors: --> -<!-- Xerox/PARC initial implementation --> -<!-- A Colyer / G Harley eclipse plugin dirs --> -<!-- ========================================================================= --> - -<!-- include as common entity for module build scripts --> -<!-- should only need to edit version properties --> -<project name="build-properties" default="init-properties"> - - <target name="init-properties" - unless="init-properties.done"> - <!-- callers should define aspectj.modules.dir --> - <property name="aspectj.modules.dir" location="${basedir}/.."/> - <require-available property="local-properties" - path="${aspectj.modules.dir}/build/local.properties"/> - <property file="${aspectj.modules.dir}/build/local.properties"/> - <!-- - Changing version: - - base should always be 1.1 (used for manifests, other version-parsing code) - - Others should be DEVELOPMENT unless testing/doing release builds, when - they should be (e.g.,) 1.1b3 or 1.1beta3 - - Changing version here causes org/aspectj/bridge/Version.java to be updated - - also change org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/messages.properties - - build.version.eclipse.plugins should be set to "9.9.9" for "DEVELOPMENT", and - - the same as build.version.long (in major.minor.service form) for releases. - --> - <property name="min.vm" value="13"/> - <property name="max.vm" value="15"/> - <property name="build.verbose" value="false"/> - <property name="build.version" value="DEVELOPMENT"/> - <property name="build.version.base" value="1.2"/> - <property name="build.version.long" value="DEVELOPMENT"/> - <property name="build.version.short" value="DEVELOPMENT"/> - - <!-- formats comply with SimpleDateFormat --> - <property name="build.time.format" value="EEEE MMM d, yyyy 'at' HH:mm:ss z"/> - <property name="build.date.format" value="EEEE MMM d, yyyy"/> - <tstamp> - <format property="build.date" - pattern="${build.date.format}" - timezone="GMT"/> - <format property="build.time" - pattern="${build.time.format}" - timezone="GMT"/> - </tstamp> - - <property name="company.name" value="aspectj.org"/> - <property name="copyright.allRights.from1998" - value="Copyright (c) 1998-2001 Xerox Corporation, 2002 Palo Alto Research Center, Incorporated, 2003-2008 Contributors. All rights reserved." /> - - <!-- aj... names are generated, can be mutated/cleaned --> - <!-- these names are known to BuildModule.java and common to all --> - <property name="aj.build.dir" - location="${aspectj.modules.dir}/aj-build"/> - <property name="aj.temp.dir" - location="${aj.build.dir}/temp"/> - <property name="aj.src.dir" - location="${aj.build.dir}/src"/> - <property name="aj.jar.dir" - location="${aj.build.dir}/jars"/> - <property name="aj.dist.dir" - location="${aj.build.dir}/dist"/> - <property name="aj.webDeploy.dir" - location="${aj.build.dir}/webDeploy"/> - <property name="aj.install.dir" - location="${aj.build.dir}/install"/> - - <property name="aj.build.allresults.dir" - location="${aj.build.dir}/allresults"/> - <property name="aj.build.allfailures.file" - location="${aj.build.allresults.dir}/allfailures.txt"/> - <property name="aj.build.results.dir" - location="${aj.build.dir}/results"/> - <property name="aj.failure.file" - location="${aj.build.results.dir}/failures.txt"/> - <property name="aj.build-id.file" - location="${aj.build.results.dir}/build-id.txt"/> - <property name="aj.junit.dir" - location="${aj.build.results.dir}/junit"/> - <property name="aj.logs.dir" - location="${aj.build.results.dir}/logs"/> - - - <!-- aspectj... names are sources, not to be mutated --> - <property name="aspectj.modules.lib.dir" - location="${aspectj.modules.dir}/lib"/> - <property name="aspectj.modules.build.dir" - location="${aspectj.modules.dir}/build"/> - <property name="aspectj.modules.docs.dir" - location="${aspectj.modules.dir}/docs"/> - <property name="aspectj.modules.tests.dir" - location="${aspectj.modules.dir}/tests"/> - <!-- BuildModule.java assumes products are here --> - <property name="aspectj.products.dir" - location="${aspectj.modules.build.dir}/products"/> - <property name="aspectj.modules.tests.dir" - location="${aspectj.modules.dir}/tests"/> - - <property file="${aspectj.modules.build.dir}/junit-patterns.properties"/> - - <property name="aspectj.tools.modules.13" - value="ajde,ajde.core,ajdoc,asm,bridge,loadtime,org.aspectj.ajdt.core,runtime,taskdefs,util,weaver"/> - <property name="aspectj.tools.modules.15" - value="loadtime5,aspectj5rt,weaver5"/> - <condition property="aspectj.tools.modules" - value="${aspectj.tools.modules.13},${aspectj.tools.modules.15}"> - <equals arg1="1.5" arg2="${ant.java.version}"/> - </condition> - <condition property="aspectj.tools.modules" - value="${aspectj.tools.modules.13}"> - <not> - <equals arg1="1.5" arg2="${ant.java.version}"/> - </not> - </condition> - <property name="aspectj.test.modules" - value="build,testing,testing-client,testing-drivers,testing-util,tests"/> - <property name="aspectj.compilerTest.modules" - value="tests"/> - <property name="aspectj.other.modules" - value="docs,eclipse.plugin"/> - - <jar-property name="junit.jar" - location="${aspectj.modules.lib.dir}/junit/junit.jar"/> - <!-- TODO need version-specific JDK? --> - <guarded-property name="jdk.tools.jar" - location="${java.home}/../lib/tools.jar"/> - <guarded-property name="jdk.tools.jar" - location="${java.home}/lib/tools.jar"/> - <guarded-property name="lib.test.aspectjrt.jar" - location="${aspectj.modules.lib.dir}/test/aspectjrt.jar"/> - <property name="init-properties.done" value="true"/> - </target> - - <target name="init-taskdefs" - depends="init-properties" - unless="init-taskdefs.done" > - <jar-property name="aspectj.build.jar" - location="${aspectj.modules.lib.dir}/build/build.jar"/> - <jar-property name="lib.ant.jar" - location="${aspectj.modules.lib.dir}/ant/lib/ant.jar"/> - <taskdef resource="org/aspectj/internal/tools/ant/taskdefs/taskdefs.properties" - classpath="${aspectj.build.jar}"/> - <path id="ant.lib.path"> - <fileset dir="${aspectj.modules.lib.dir}/ant/lib"> - <include name="**/*.jar"/> - </fileset> - </path> - <taskdef name="junit" - classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask" - classpathref="ant.lib.path"/> - <available classname="org.apache.xalan.processor.TransformerFactoryImpl" - property="xalan.available" - value="true"> - <classpath refid="ant.lib.path"/> - </available> - <condition property="junitreport.available" value="true"> - <istrue value="${xalan.available}"/> - </condition> - <echo message="junitreport.available: ${junitreport.available}"/> - <antcall target="init-junitreport"/> - </target> - - <target name="init-junitreport" depends="init-properties" - if="xalan.available"> - <taskdef name="junitreport" - classname="org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator" - classpathref="ant.lib.path"/> - </target> - - <target name="init-directories" - depends="init-properties" - description="ensure dirs, possibly many times in a build"> - <mkdir dir="${aj.build.dir}" /> - <mkdir dir="${aj.temp.dir}" /> - <mkdir dir="${aj.jar.dir}" /> - <mkdir dir="${aj.dist.dir}" /> - <mkdir dir="${aj.install.dir}" /> - <mkdir dir="${aj.logs.dir}" /> - </target> - - <target name="init-filters" - depends="init-properties" - unless="init-filters.done" > - - <!-- build.version and build.date used in filters throughout, and - build.version.base used in filtering manifest, but - others used mainly for installer-resources/properties.txt --> - - <filter token="build.version" value="${build.version}"/> - <filter token="build.version.base" value="${build.version.base}"/> - <filter token="build.version.long" value="${build.version.long}"/> - <filter token="build.version.short" value="${build.version.short}"/> - - <filter token="build.time.format" value="${build.time.format}"/> - <filter token="build.date.format" value="${build.date.format}"/> - <filter token="build.date" value="${build.date}"/> - <filter token="build.time" value="${build.time}"/> - <filter token="company.name" value="${company.name}"/> - <filter token="copyright.allRights.from1998" - value="${copyright.allRights.from1998}" /> - <property name="init-filters.done" value="done"/> - </target> - - <target name="clean-directories" depends="init-properties"> - <delete quiet="on"> - <fileset dir="${aj.build.dir}" includes="*,**/*"/> - </delete> - <antcall target="init-directories"/> - </target> - - <target name="clean-jars" - depends="init-directories" - unless="clean-jars.done" > - <delete quiet="on"> - <fileset dir="${aj.jar.dir}" includes="*"/> - </delete> - <property name="clean-jars.done" value="done"/> - </target> - - <target name="clean-keep-results" depends="init-properties"> - <delete> - <fileset dir="${aj.build.dir}"> - <exclude name="results/*"/> - <exclude name="results/**"/> - <exclude name="allresults/*"/> - <exclude name="allresults/**"/> - </fileset> - </delete> - </target> - - <target name="clean-default-results" depends="init-properties"> - <delete> - <fileset dir="${aj.build.results.dir}" includes="*,**/*"/> - </delete> - </target> - - <target name="clean-result" depends="init-properties"> - <delete quiet="on"> - <fileset dir="${aj.build.results.dir}" includes="*,**/*"/> - </delete> - </target> - - <macrodef name="save-build-id" - description="save ${id} to ${aj.build-id.file}"> - <attribute name="id"/> - <sequential> - <echo message="@{id}" file="${aj.build-id.file}"/> - </sequential> - </macrodef> - - <macrodef name="load-build-id"> - <attribute name="property"/> - <sequential> - <available property="aj.build-id.file.available" - file="${aj.build-id.file}"/> - <antcall target="ensure-build-id"/> - <loadfile srcfile="${aj.build-id.file}" property="@{property}"/> - </sequential> - </macrodef> - - <target name="ensure-build-id" unless="aj.build-id.file.available" - description="create datestamp build id in ${aj.build-id.file} if n/a"> - <tstamp> - <format property="build.id.name" - timezone="GMT+10" - pattern="yyyyMMdd-hhmmss" - /> - </tstamp> - <echo file="${aj.build-id.file}" message="${build.id.name}"/> - </target> - - <target name="save-result" depends="init-properties"> - <load-build-id property="build.id"/> - <copy todir="${aj.build.allresults.dir}/${build.id}"> - <fileset dir="${aj.build.results.dir}" /> - </copy> - </target> - - <target name="echo-properties" depends="init-properties"> - <echo> - Build Properties - - build.date = ${build.date} - build.time = ${build.time} - build.version = ${build.version} - build.version.long = ${build.version.long} - build.version.short = ${build.version.short} - aspectj.modules.dir = ${aspectj.modules.dir} - aj.build.dir = ${aj.build.dir} - ant.home = ${ant.home} - java.home = ${java.home} - java11.home = ${java11.home} - java13.home = ${java13.home} - java14.home = ${java14.home} - java15.home = ${java15.home} -</echo> - </target> - <macrodef name="guarded-property" - description="set property {name} to {location} if unset and {location} exists"> - <attribute name="name"/> - <attribute name="location"/> - <sequential> - <property name="@{name}.path" - location="@{location}"/> - <condition property="@{name}" - value="${@{name}.path}"> - <and> - <not> - <isset property="@{name}"/> - </not> - <available file="${@{name}.path}"/> - </and> - </condition> - </sequential> - </macrodef> - - <macrodef name="clean-dir"> - <attribute name="dir"/> - <sequential> - <mkdir dir="@{dir}"/> - <delete> - <fileset dir="@{dir}" includes="*,**/*"/> - </delete> - <mkdir dir="@{dir}"/> - </sequential> - </macrodef> - - <!-- - Reporting failures - - Failure-reports supports running multiple build targets in sequence for a - configuration, saving off those results, doing it over, etc., and then - checking the result (of the current builds or all builds), i.e., - - # first set of builds - - build, report-if-failed ... - - build, report-if-failed ... - ... - - {save-build-id} first-set - - save-result - - clean-keep-results - - clean-default-results - # second set of builds - - build, report-if-failed ... - ... - - save-result - - # fail build if anything in either set failed - - fail-if-allresults-allfailures - - Clients call - <report-if-failed property="failed" text="JUnit failed"/> - to signal failure. This goes into results/failures.txt, to be read later. - Many clients can call this, across many (current) build invocations, so - results just accumulate. Clients should never call <fail> directly; while - the cruise-control script can handle build failures, they won't be recorded - in a way that supports easy evaluation. - - To fail if the current builds fail, do - <antcall target="fail-if-results-failures"/> - - You can do a sequence of builds (e.g., in 1.3), save the results off, - and do it again (e.g., in 1.4), save the results, and then compare them. - Use save-result to store the current build results in ../allresults. - - Between such builds, you can do a clean-keep-results (to clear out jars - and such), followed by clean-default-results (to clear the current results). - (The normal clean also cleans out any results, so avoid that when saving - results from multiple builds.) - - Each build can be named using save-build-id. This name must be a valid - directory name. When the results are saved to ../allresults, the directory - name will use the most recent build-id. If none has been saved, then this - creates a name out of the date (down to the second). - - To fail if any of the saved builds has failed, do fail-if-allresults-allfailures. - This target ignores the current builds (if they are unsaved). - - --> - - <macrodef name="report-if-failed"> - <attribute name="property"/> - <attribute name="text"/> - <sequential> - <echo level="debug" message="property: @{property}: ${@{property}}"/> - <echo level="debug" message="text: @{text}: ${@{text}}"/> - <condition property="failed" value="true"> - <isset property="@{property}"/> - </condition> - <echo level="debug" message="failed: ${failed}"/> - <antcall target="do-report-fail"> - <param name="text" value="@{text}"/> - </antcall> - </sequential> - </macrodef> - <target name="do-report-fail" - if="failed"> - <echo append="true" file="${aj.failure.file}">${text} -</echo> - </target> - - <target name="fail-if-results-failures" depends="init-properties"> - <fail-if-failures failureFile="${aj.failure.file}"/> - </target> - - <target name="fail-if-allresults-allfailures" depends="init-properties"> - <concat destfile="${aj.build.allfailures.file}"> - <fileset dir="${aj.build.allresults.dir}" - includes="*/failures.txt"/> - </concat> - <fail-if-failures failureFile="${aj.build.allfailures.file}"/> - </target> - - <macrodef name="fail-if-failures" - description="fail if ${failureFile} exists and is not empty"> - <attribute name="failureFile"/> - <sequential> - <loadfile - failonerror="false" - property="failures" - srcfile="@{failureFile}"/> - <fail> - <condition> - <length file="@{failureFile}" - when="greater" length="0"/> - </condition> -# @{failureFile} failures: -${failures} -</fail> - </sequential> - </macrodef> - <macrodef name="jar-property"> - <attribute name="name"/> - <attribute name="location"/> - <sequential> - <property name="@{name}" - location="@{location}"/> - <available file="${@{name}}" - property="@{name}.available" - value="${@{name}}"/> - <fail unless="@{name}.available" - message="unable to find @{name}: ${@{name}}"/> - </sequential> - </macrodef> - - <macrodef name="set-available" - description="set property and property.available if path exists"> - <attribute name="property"/> - <attribute name="path"/> - <sequential> - <property name="@{property}.location" - location="@{path}"/> - - <available property="@{property}" - file="${@{property}.location}" - value="${@{property}.location}"/> - <condition property="@{property}.available"> - <equals arg1="${@{property}.location}" arg2="${@{property}}"/> - </condition> - </sequential> - </macrodef> - - <macrodef name="require-available"> - <attribute name="property"/> - <attribute name="path"/> - <attribute name="message" default=""/> - <sequential> - - <set-available property="@{property}" path="@{path}"/> - <fail unless="@{property}.available"> -@{message} (property "@{property}" not at "@{path}") - </fail> - </sequential> - </macrodef> - -</project> diff --git a/build/build.xml b/build/build.xml deleted file mode 100644 index a5f33476a..000000000 --- a/build/build.xml +++ /dev/null @@ -1,983 +0,0 @@ -<!-- -*- Mode: SGML; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- --> - -<!-- ========================================================================= --> -<!-- Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC), --> -<!-- 2003-2005 Contributors --> -<!-- All rights reserved. --> -<!-- This program and the accompanying materials are made available --> -<!-- under the terms of the Eclipse Public License v 2.0 --> -<!-- which accompanies this distribution and is available at --> -<!-- https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt --> -<!-- --> -<!-- Contributors: (See CVS checkin's) --> -<!-- Xerox/PARC initial implementation --> -<!-- Adrian Colyer / George Harley eclipse plugin targets --> -<!-- ========================================================================= --> - -<project name="build" default="all" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:maven="antlib:org.apache.maven.artifact.ant"> - - <target name="all" depends="aspectj"> - <antcall target="eclipse.plugins"/> - </target> - <target name="clean" depends="clean-directories"/> - - <target name="compile" depends="build-module" - description="compile module ${module.name} (without tests, by default)"/> - - <target name="compile-tests" depends="init" - description="compile module ${module.name} tests"> - <assemble-module-test module="${module.name}"/> - </target> - - <target name="test" depends="compile-tests"> - <antcall target="do-test-junit"/> - </target> - - <!-- ===================================================================== --> - <!-- Init --> - <!-- ===================================================================== --> - <property name="modules.dir" location="${basedir}/.."/> - <property name="module.name" value="${ant.project.name}"/> - - <import file="${modules.dir}/build/build-properties.xml"/> - - <target name="init" depends="init-properties,init-directories"> - <property name="build.config" value=""/> - <property name="trim.testing.default" value="true"/> - <property name="aj.installer.jar" location="${aj.dist.dir}/aspectj-${build.version.long}.jar"/> - - <available property="ant.lib.aspectjtools" - file="${ant.home}/lib/aspectjtools.jar" - value="Expect classpath errors from ${ant.home}/lib/aspectjtools.jar"/> - - <available property="ant.lib.aspectjrt" - file="${ant.home}/lib/aspectjrt.jar" - value="Expect classpath errors from ${ant.home}/lib/aspectjrt.jar"/> - - <available property="testing.drivers.all.available" - file="${aj.jar.dir}/testing-drivers-all.jar" - value="${aj.jar.dir}/testing-drivers-all.jar"/> - </target> - - <target name="version-uptodate" depends="init,init-taskdefs" - unless="version-uptodate.done"> - <!-- XXX change task to pre-check & avoid scan if dates uptodate --> - <versionuptodate - version="${build.version}" - versionSourceFile="${aspectj.modules.dir}/bridge/src/org/aspectj/bridge/Version.java" - versionTagFile="${aj.temp.dir}/versionUptodate"/> - - <available file="${aj.temp.dir}/versionUptodate" - property="version.uptodate"/> - <property name="version-uptodate.done" value="done"/> - </target> - - <target name="init-version" depends="init,init-filters,version-uptodate" > - <antcall target="init-filters"/> - <copy file="${aspectj.modules.dir}/build/lib/BridgeVersion.java.txt" - tofile="${aspectj.modules.dir}/bridge/src/org/aspectj/bridge/Version.java" - overwrite="yes" filtering="yes"/> - <property name="init.version.done" value="done"/> - <!-- consider checking this in? --> - </target> - - - <!-- ===================================================================== --> - <!-- Misc setup and warnings --> - <!-- ===================================================================== --> - - <target name="warn.ant.lib.aspectjrt" if="ant.lib.aspectjrt"> - <echo message="----- WARNING: ${ant.lib.aspectjrt}" /> - </target> - - <target name="warn.ant.lib.aspectjtools" if="ant.lib.aspectjtools"> - <echo message="----- WARNING: ${ant.lib.aspectjtools}" /> - </target> - - <target name="fail-unless-boot-libraries-uptodate" depends="init" - description="fail unless all boot libraries are up-to-date"> - - <antcall target="verify-boot-lib"> - <param name="boot.lib" value="test/aspectjrt.jar"/> - <param name="vbl.module.name" value="runtime"/> - </antcall> - - <antcall target="verify-boot-lib"> - <param name="boot.lib" value="build/build.jar"/> - <param name="vbl.module.name" value="build"/> - </antcall> - - <antcall target="verify-boot-lib"> - <param name="boot.lib" value="test/testing-client.jar"/> - <param name="vbl.module.name" value="testing-client"/> - </antcall> - - <echo message="fyi, bridge/util changes rarely mean client is invalid"/> - <antcall target="verify-boot-lib"> - <param name="boot.lib" value="test/testing-client.jar"/> - <param name="vbl.module.name" value="util"/> - </antcall> - - <antcall target="verify-boot-lib"> - <param name="boot.lib" value="test/testing-client.jar"/> - <param name="vbl.module.name" value="bridge"/> - </antcall> - - <echo message="all boot libraries verified"/> - </target> - - <target name="update-tree" depends="init" - description="update tree"> - <fail unless="CVSROOT" - message="required: {ant} -DCVSROOT=... ..."/> - <cvs cvsRoot="${CVSROOT}" - dest="${aspectj.modules.dir}" - quiet="on" - failonerror="on" - command="update -dP" /> - </target> - - <!-- ===================================================================== --> - <!-- antcall targets --> - <!-- ===================================================================== --> - - <target name="build-product" depends="init,init-taskdefs,init-version" description="build $${product.name}"> - <ajbuild jarDir="${aj.jar.dir}" - baseDir="${aspectj.modules.dir}" - distDir="${aj.dist.dir}" - productDir="${aspectj.modules.dir}/build/products/${product.name}" - trimTesting="true" - buildConfig="${build.config}" - version="${build.version.long}" - verbose="${build.verbose}" - failonerror="true"/> - </target> - - <target name="build-module" depends="init,init-taskdefs,init-version"> - <ajbuild module="${module.name}" - baseDir="${aspectj.modules.dir}" - distDir="${aj.dist.dir}" - jarDir="${aj.jar.dir}" - trimTesting="${trim.testing}" - buildConfig="${build.config}" - version="${build.version.long}" - verbose="${build.verbose}" - assembleall="${assemble}" - failonerror="true"/> - </target> - - <macrodef name="build-module-all"> - <attribute name="module"/> - <attribute name="trimTesting" default="${trim.testing.default}"/> - <sequential> - <antcall target="build-module"> - <param name="module.name" value="@{module}"/> - <param name="trim.testing" value="@{trimTesting}"/> - <param name="assemble" value="true"/> - </antcall> - </sequential> - </macrodef> - <macrodef name="build-module"> - <attribute name="module"/> - <attribute name="trimTesting" default="${trim.testing.default}"/> - <attribute name="assemble" default="false"/> - <sequential> - <antcall target="build-module"> - <param name="module.name" value="@{module}"/> - <param name="trim.testing" value="@{trimTesting}"/> - <param name="assemble" value="@{assemble}"/> - </antcall> - </sequential> - </macrodef> - - <macrodef name="assemble-module-test"> - <attribute name="module"/> - <sequential> - <build-module module="@{module}" assemble="true" trimTesting="false"/> - </sequential> - </macrodef> - - - <target name="create-installer" depends="init,init-taskdefs,init-filters" - description="create ${installer.file} from ${staging.dir} using ${htmlSrc.dir} and ${simpleClassName}"> - <!-- init-filters: filter on copy used by ajinstaller taskdef --> - - <delete quiet="on" file="${installer.file}"/> - <ajinstaller zipfile="${installer.file}" - installerclassjar="${aspectj.build.jar}" - basedir="${staging.dir}" - mainclass="$$installer$$.org.aspectj.${simpleClassName}" - htmlSrc="${htmlSrc.dir}" - resourcesSrc="${aspectj.modules.build.dir}/installer-resources"/> - </target> - - <target name="verify-boot-lib" depends="init" - description="fail if ${boot.lib} is out of date wrt ${vbl.module.name}"> - <uptodate property="lib-warning-${vbl.module.name}" - targetfile="${aspectj.modules.dir}/lib/${boot.lib}"> - <srcfiles dir="${aspectj.modules.dir}/${vbl.module.name}/src" - includes="**/*.java"/> - </uptodate> - - <fail unless="lib-warning-${vbl.module.name}" - message="${boot.lib} out of date wrt module ${vbl.module.name}"/> - - </target> - - <!-- ===================================================================== --> - <!-- test targets --> - <!-- ===================================================================== --> - <target name="test-run-all-junit-tests" - depends="init" - description="run unit tests via run-all-junit-tests module"> - <antcall target="test"> - <param name="module.name" value="run-all-junit-tests"/> - </antcall> - </target> - - <target name="test-compiler-tests" - depends="init" - description="run compiler tests via tests module"> - <antcall target="test"> - <param name="module.name" value="tests"/> - </antcall> - </target> - - <target name="test-each-module" - depends="init" - description="run JUnit tests for each module"> - <subant target="test"> - <filelist dir="${aspectj.modules.dir}" - files="${aspectj.tools.modules},${aspectj.test.modules}"/> - </subant> - </target> - -<!-- -<target name="ivy.init" unless="ivy.initialized"> - <property name="ivy.lib.dir" value="n:/apache-ivy-2.1.0/lib"/> - <property name="ivy.settings.file" value="n:/workspaces/aspectj16_1/build/ivysettings.xml"/> - <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant"> - <classpath> - <path location="${ivy.lib.dir}/ivy.jar"/> - <path location="${ivy.lib.dir}/org.springframework.build.aws.ivy.jar"/> - <path location="${ivy.lib.dir}/commons-codec.jar"/> - <path location="${ivy.lib.dir}/commons-httpclient.jar"/> - <path location="${ivy.lib.dir}/commons-logging.jar"/> - <path location="${ivy.lib.dir}/jets3t.jar"/> - <path location="${ivy.lib.dir}"/> - </classpath> - </taskdef> - - <ivy:settings file="${ivy.settings.file}"/> - <property name="ivy.initialized" value="true"/> - </target> ---> - - <target name="maven.init" > - <property name="org.apache.maven.ant.version" value="2.0.10"/> - <property name="org.springframework.build.aws.maven.version" value="2.0.0.RELEASE"/> -<!-- - <ivy:cachepath resolveId="maven.ant.tasks.classpath" pathid="maven.ant.tasks.classpath" - organisation="org.apache.maven" module="com.springsource.org.apache.maven.ant" - revision="${org.apache.maven.ant.version}" conf="runtime" type="jar" inline="true" log="download-only"/> ---> -<!-- - <taskdef resource="org/apache/maven/artifact/ant/antlib.xml" uri="antlib:org.apache.maven.artifact.ant" - classpathref="maven.ant.tasks.classpath"/> ---> - <maven:install-provider groupId="org.springframework.build.aws" artifactId="org.springframework.build.aws.maven" - version="${org.springframework.build.aws.maven.version}"/> -<!-- - <maven:install-provider groupId="org.springframework.build" artifactId="aws.maven" - version="${org.springframework.build.aws.maven.version}"/> ---> - </target> - - - - <target name="junitreport" depends="init,init-taskdefs" - if="junitreport.available"> - <clean-dir dir="${aj.junit.dir}/html"/> - <junitreport todir="${aj.junit.dir}/html"> - <fileset dir="${aj.junit.dir}"> - <include name="**/TEST-*.xml"/> - </fileset> - <report format="frames" todir="${aj.junit.dir}/html"/> - </junitreport> - <pathconvert property="jur.url" targetos="unix"> - <path location="${aj.junit.dir}/html/index.html"/> - </pathconvert> - <echo message="see file:${jur.url}"/> - </target> - - <target name="do-test-junit" - depends="init-taskdefs" - description="run junit tests for a module using module root or leaves"> - <property name="dtj.dir" - location="${aj.junit.dir}/${module.name}"/> - <mkdir dir="${dtj.dir}"/> - - <condition property="dtj.includes" - value="${junit.includes}" - else="${junit.rootSuites}"> - <istrue value="${junit.leaves}"/> - </condition> - <condition property="dtj.excludes" - value="${junit.excludes}" - else=""> - <istrue value="${junit.leaves}"/> - </condition> - - <junit - dir="${aspectj.modules.build.dir}" - failureproperty="test-junit-${module.name}.failed" - fork="on" - forkmode="perTest" - maxmemory="400m" - includeAntRuntime="off" - printsummary="yes" - haltonfailure="${haltOnTestFailure}" > - <classpath> - <pathelement location="${aj.jar.dir}/${module.name}-test-all.jar"/> - <!-- see skipped libraries in Builder.properties --> - <pathelement location="${jdk.tools.jar}"/> - <pathelement location="${aspectj.modules.lib.dir}/junit/junit.jar"/> - <fileset dir="${aspectj.modules.lib.dir}/commons" includes="commons.jar"/> - <!-- XML api's used by loadtime, also needed when running under 1.3 per Ant FAQ --> - <fileset dir="${aspectj.modules.lib.dir}/ant/lib" - includes="ant.jar,ant-junit.jar,xml-apis.jar,xercesImpl.jar"/> - </classpath> - <jvmarg value="-Daspectjrtpath=${lib.test.aspectjrt.jar}" /> - <formatter type="xml"/> - <batchtest todir="${dtj.dir}"> - <fileset dir="${modules.dir}/${module.name}/testsrc" - includes="${dtj.includes}" - excludes="${dtj.excludes}"/> - </batchtest> - </junit> - <report-if-failed text="JUnit tests for ${module.name} failed" - property="test-junit-${module.name}.failed"/> - </target> - - - <!-- ===================================================================== --> - <!-- custom targets --> - <!-- ===================================================================== --> - - <target name="build-harness-jar" depends="init" - description="build harness jar from scratch"> - <antcall target="clean-jars"/> - <assemble-module-test module="testing-drivers"/> - </target> - - <target name="build-testing-jars" depends="init" - description="build testing jars from scratch"> - <antcall target="build-harness-jar"/> - </target> - - <target name="build-testing-client" depends="init-taskdefs,init"> - <build-module module="testing-client" assemble="true"/> - <assemble-module-test module="testing-client"/> - <echo> -To use testing client jar in tests, - mv ../aj-build/jars/testing-client-all.jar ../lib/tests/testing-client.jar -</echo> - </target> - - <target name="aspectj" depends="init,aspectjtools-dist,docs-dist" description="create installer from local distributions"> - <property name="installer.staging.dir" location="${aj.temp.dir}/installer-staging"/> - <clean-dir dir="${installer.staging.dir}"/> - <copy todir="${installer.staging.dir}"> - <fileset dir="${aj.dist.dir}/tools"/> - <fileset dir="${aj.dist.dir}/docs"/> - </copy> - - <antcall target="create-installer"> - <param name="installer.file" location="${aj.installer.jar}"/> - <param name="staging.dir" location="${installer.staging.dir}"/> - <param name="htmlSrc.dir" location="${aspectj.modules.build.dir}/products/aspectj/install"/> - <param name="simpleClassName" value="ToolsInstaller"/> - </antcall> - <delete dir="${installer.staging.dir}"/> - </target> - - <target name="docs-dist" depends="init"> - <ant dir="${aspectj.modules.dir}/docs" - antfile="build.xml" - target="local-dist" - inheritAll="false"/> - </target> - - <target name="aspectjrt" depends="init" - description="build aspectjrt.jar (differently than release)"> - <build-module-all module="aspectj5rt"/> - <copy file="${aj.jar.dir}/aspectj5rt-all.jar" - tofile="${aj.jar.dir}/aspectjrt.jar"/> - </target> - - <target name="compile-runtime-11" depends="init-properties" - description="compile runtime under 1.1 - fails, but by how much?"> - <condition property="cr1.in13"> - <equals arg1="1.3" arg2="${ant.java.version}"/> - </condition> - <antcall target="compile-runtime-11-flag-unless13"/> - <antcall target="compile-runtime-11-do-if13"/> - </target> - - <target name="compile-runtime-11-flag-unless13" depends="init-properties" - unless="cr1.in13"> - <echo message="Skipping compile-runtime-11 unless 1.3"/> - </target> - - <target name="compile-runtime-11-do-if13" depends="init-properties" - if="cr1.in13"> - <mkdir dir="${aj.build.dir}/classes-1.1"/> - <property name="java11.classes.zip" - location="${java11.home}/lib/classes.zip"/> - <available property="classes.zip.available" - file="${java11.classes.zip}"/> - <fail unless="classes.zip.available" message="no 1.1 bootclasspath"/> - <javac - compiler="javac1.1" - bootclasspath="${java11.classes.zip}" - source="1.3" - includejavaruntime="no" - includeantruntime="no" - destdir="${aj.build.dir}/classes-1.1" - srcdir="${aspectj.modules.dir}/runtime/src" - target="1.1" - verbose="false" - failonerror="true" - /> - <delete dir="${aj.build.dir}/classes-1.1"/> - </target> - - <!-- ===================================================================== --> - <!-- boilerplate antcalls --> - <!-- ===================================================================== --> - - <!-- for any-[module|product], define [module|product].name --> - <target name="any-module" depends="init"> - <fail unless="module.name" message="use -Dmodule.name=... to define"/> - <build-module module="${module.name}"/> - </target> - - <target name="any-module-all" depends="init"> - <fail unless="module.name" message="use -Dmodule.name=... to define"/> - <build-module-all module="${module.name}"/> - </target> - - <target name="any-product" depends="init"> - <fail unless="product.name" message="use -Dproduct.name=... to define"/> - <antcall target="build-product"> - <param name="product.name" value="${product.name}"/> - </antcall> - </target> - - <target name="ajdoc-all"> - <build-module-all module="ajdoc"/> - </target> - - <target name="build"> - <build-module-all module="build"/> - </target> - - <target name="aspectjtools-dist" depends="init" description="build local distribution"> - <antcall target="build-product"> - <param name="product.name" value="tools"/> - </antcall> - </target> - - <!-- ===================================================================== --> - <!-- eclipse plugins --> - <!-- ===================================================================== --> - - <target name="eclipse.plugins" depends="init" - description="create the Eclipse distribution plugins"> - <ant dir="${aspectj.modules.dir}/eclipse.plugin" inheritAll="false"/> - </target> - - <target name="src" depends="init" description="build src modules"> - - <mkdir dir="${aj.src.dir}"/> - <jar destfile="${aj.src.dir}/aspectjrt${build.version}-src.jar"> - <fileset dir="${aspectj.modules.dir}/aspectj5rt/java5-src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/runtime/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - </jar> - - <unzip dest="${aj.src.dir}/bcelsrc" src="${aspectj.modules.dir}/lib/bcel/bcel-src.zip"/> - <!-- loadtime5/asm/bridge/loadtime/weaver/weaver5 --> - <jar destfile="${aj.src.dir}/aspectjweaver${build.version}-src.jar"> - <fileset dir="${aspectj.modules.dir}/aspectj5rt/java5-src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/runtime/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - <exclude name="**/*.html"/> - </fileset> - <fileset dir="${aj.src.dir}/bcelsrc"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/loadtime5/java5-src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/asm/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/bridge/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/loadtime/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/org.aspectj.matcher/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/weaver/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/weaver5/java5-src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/util/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - </jar> - - <!-- missing from this are the jdtDepends.jar src files --> - <unzip dest="${aj.src.dir}/jdtsrc" src="${aspectj.modules.dir}/lib/jdtcore-aj/jdtcore-for-aspectj-src.zip"/> - <!-- ajde/ajde.core/ajdoc/asm/bridge/loadtime/org.aspectj.ajdt.core/taskdefs/util/weaver5 --> - <jar destfile="${aj.src.dir}/aspectjtools${build.version}-src.jar"> - <fileset dir="${aj.src.dir}/jdtsrc"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aj.src.dir}/bcelsrc"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/loadtime5/java5-src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/loadtime/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/ajde/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/ajde.core/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/runtime/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/aspectj5rt/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/ajdoc/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/asm/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/bridge/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/loadtime/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/org.aspectj.ajdt.core/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/taskdefs/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/util/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/weaver/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/org.aspectj.matcher/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/weaver5/java5-src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - </jar> - <delete dir="${aj.src.dir}/bcelsrc" failonerror="false"/> - <delete dir="${aj.src.dir}/jdtsrc" failonerror="false"/> - - <jar destfile="${aj.src.dir}/org.aspectj.matcher-${build.version}-src.jar"> - <fileset dir="${aspectj.modules.dir}/bridge/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/util/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/org.aspectj.matcher/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <!-- - <fileset dir="${aj.src.dir}/jdtsrc"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aj.src.dir}/bcelsrc"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/loadtime5/java5-src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/loadtime/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/ajde/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/ajde.core/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/runtime/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/aspectj5rt/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/ajdoc/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/asm/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/loadtime/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/org.aspectj.ajdt.core/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/taskdefs/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/weaver/src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - <fileset dir="${aspectj.modules.dir}/weaver5/java5-src"> - <exclude name="CVS"/> - <exclude name="**/.cvsignore"/> - </fileset> - --> - </jar> - - <jar destfile="${aj.src.dir}/org.aspectj-${build.version}-src.jar"> - <fileset dir="${aj.src.dir}"> - <include name="aspectjrt${build.version}-src.jar"/> - <include name="aspectjweaver${build.version}-src.jar"/> - <include name="aspectjtools${build.version}-src.jar"/> - <include name="org.aspectj.matcher-${build.version}-src.jar"/> - </fileset> - </jar> - - <delete file="{aj.src.dir}/aspectjrt${build.version}-src.jar"/> - <delete file="{aj.src.dir}/aspectjweaver${build.version}-src.jar"/> - <delete file="{aj.src.dir}/aspectjtools${build.version}-src.jar"/> - <delete file="{aj.src.dir}/org.aspectj.matcher${build.version}-src.jar"/> - </target> - - - - <target name="repo" depends="init" description="deploy maven repo"> - <property name="repo.url" value="scp://simonegianni.it/home/mavenrsync/repo"/> - <property name="repo.id" value="simonegianni-rsync"/> - - <mkdir dir="${modules.dir}/aj-build/repo"/> - <copy toDir="${modules.dir}/aj-build/repo" file="aspectjtools.pom"/> - <copy toDir="${modules.dir}/aj-build/repo" file="aspectjweaver.pom"/> - <copy toDir="${modules.dir}/aj-build/repo" file="aspectjrt.pom"/> - <replaceregexp byline="true" flags="g"> - <regexp pattern="ASPECTJVERSION"/> - <substitution expression="${repo.version}"/> - <fileset dir="${modules.dir}/aj-build/repo"> - <include name="*.pom"/> - </fileset> - </replaceregexp> - - - <!-- Invoke maven to deploy the jars to the rsynced repo --> - <antcall target="mavenDeployJar"> - <param name="file" value="${modules.dir}/aj-build/dist/tools/lib/aspectjtools.jar"/> - <param name="artifact" value="aspectjtools"/> - <param name="desc" value="AspectJ Tools"/> - </antcall> - <antcall target="mavenDeployJar"> - <param name="file" value="${modules.dir}/aj-build/dist/tools/lib/aspectjweaver.jar"/> - <param name="artifact" value="aspectjweaver"/> - <param name="desc" value="AspectJ Weaver"/> - </antcall> - <antcall target="mavenDeployJar"> - <param name="file" value="${modules.dir}/aj-build/dist/tools/lib/aspectjrt.jar"/> - <param name="artifact" value="aspectjrt"/> - <param name="desc" value="AspectJ Runtime"/> - </antcall> - - <antcall target="mavenDeploySource"> - <param name="file" value="${modules.dir}/aj-build/src/aspectjtools${build.version}-src.jar"/> - <param name="artifact" value="aspectjtools"/> - <param name="desc" value="AspectJ Tools"/> - </antcall> - <antcall target="mavenDeploySource"> - <param name="file" value="${modules.dir}/aj-build/src/aspectjweaver${build.version}-src.jar"/> - <param name="artifact" value="aspectjweaver"/> - <param name="desc" value="AspectJ Weaver"/> - </antcall> - <antcall target="mavenDeploySource"> - <param name="file" value="${modules.dir}/aj-build/src/aspectjrt${build.version}-src.jar"/> - <param name="artifact" value="aspectjrt"/> - <param name="desc" value="AspectJ Runtime"/> - </antcall> - - - - </target> - -<!-- -ant -propertyfile XXX publishtomaven ---> - <target name="publishtomaven_snapshot" depends="maven.init"> - <property name="build.root" value="/Users/aclement/gits/org.aspectj"/> - - - <property name="adjusted.release.type" value="snapshot"/> - <property name="maven.central.repository" value="s3://maven.springframework.org/${adjusted.release.type}"/> -<!-- - <property name="maven.central.repository" value="https://repo.spring.io/libs-snapshot-local/org/aspectj/aspectjweaver"/> ---> - -<!-- aspectjtools/target/aspectjtools-1.9.8-SNAPSHOT.jar --> - - <property name="bin.jars.folder" value="${build.root}/dist/tools/lib"/> - <property name="src.jars.folder" value="${build.root}/src"/> - <property name="suffix" value="1.9.8-SNAPSHOT"/> - - <!-- ASPECTJRT --> - <maven:deploy file="${build.root}/aspectjrt/target/aspectjrt-${suffix}.jar"> - <remoteRepository url="${maven.central.repository}"> - <authentication username="${accessKey}" passphrase="${secretKey}"/> - </remoteRepository> - <pom file="usedForMavenUpload/aspectjrt.pom"/> - <attach file="${build.root}/aspectjrt/target/aspectjrt-${suffix}-sources.jar" classifier="sources"/> - </maven:deploy> - - <!-- ASPECTJTOOLS --> - <maven:deploy file="${build.root}/aspectjtools/target/aspectjtools-${suffix}.jar"> - <remoteRepository url="${maven.central.repository}"> - <authentication username="${accessKey}" passphrase="${secretKey}"/> - </remoteRepository> - <pom file="usedForMavenUpload/aspectjtools.pom"/> - <attach file="${build.root}/aspectjtools/target/aspectjtools-${suffix}-sources.jar" classifier="sources"/> - </maven:deploy> - - <!-- ASPECTJWEAVER --> - <maven:deploy file="${build.root}/aspectjweaver/target/aspectjweaver-${suffix}.jar"> - <remoteRepository url="${maven.central.repository}"> - <authentication username="${accessKey}" passphrase="${secretKey}"/> - </remoteRepository> - <pom file="usedForMavenUpload/aspectjweaver.pom"/> - <attach file="${build.root}/aspectjweaver/target/aspectjweaver-${suffix}-sources.jar" classifier="sources"/> - </maven:deploy> - - <!-- ASPECTJMATCHER --> - <maven:deploy file="${build.root}/aspectjmatcher/target/aspectjmatcher-${suffix}.jar"> - <remoteRepository url="${maven.central.repository}"> - <authentication username="${accessKey}" passphrase="${secretKey}"/> - </remoteRepository> - <pom file="usedForMavenUpload/aspectjmatcher.pom"/> - <attach file="${build.root}/aspectjmatcher/target/aspectjmatcher-${suffix}-sources.jar" classifier="sources"/> - </maven:deploy> - - </target> - - - - - - <target name="publishtomaven_milestone" depends="maven.init"> - <property name="build.root" value="/Users/aclement/gits/org.aspectj"/> - <property name="suffix" value="1.9.8.M1"/> - - <property name="adjusted.release.type" value="milestone"/> - <property name="maven.central.repository" value="s3://maven.springframework.org/${adjusted.release.type}"/> - <property name="bin.jars.folder" value="${build.root}/dist/tools/lib"/> - <property name="src.jars.folder" value="${build.root}/src"/> - - <!-- ASPECTJRT --> - <maven:deploy file="${build.root}/aspectjrt/target/aspectjrt-${suffix}.jar"> - <remoteRepository url="${maven.central.repository}"> - <authentication username="${accessKey}" passphrase="${secretKey}"/> - </remoteRepository> - <pom file="usedForMavenUpload_milestone/aspectjrt.pom"/> - <attach file="${build.root}/aspectjrt/target/aspectjrt-${suffix}-sources.jar" classifier="sources"/> - </maven:deploy> - - <!-- ASPECTJTOOLS --> - <maven:deploy file="${build.root}/aspectjtools/target/aspectjtools-${suffix}.jar"> - <remoteRepository url="${maven.central.repository}"> - <authentication username="${accessKey}" passphrase="${secretKey}"/> - </remoteRepository> - <pom file="usedForMavenUpload_milestone/aspectjtools.pom"/> - <attach file="${build.root}/aspectjtools/target/aspectjtools-${suffix}-sources.jar" classifier="sources"/> - </maven:deploy> - - <!-- ASPECTJWEAVER --> - <maven:deploy file="${build.root}/aspectjweaver/target/aspectjweaver-${suffix}.jar"> - <remoteRepository url="${maven.central.repository}"> - <authentication username="${accessKey}" passphrase="${secretKey}"/> - </remoteRepository> - <pom file="usedForMavenUpload_milestone/aspectjweaver.pom"/> - <attach file="${build.root}/aspectjweaver/target/aspectjweaver-${suffix}-sources.jar" classifier="sources"/> - </maven:deploy> - - <!-- ASPECTJMATCHER --> - <maven:deploy file="${build.root}/aspectjmatcher/target/aspectjmatcher-${suffix}.jar"> - <remoteRepository url="${maven.central.repository}"> - <authentication username="${accessKey}" passphrase="${secretKey}"/> - </remoteRepository> - <pom file="usedForMavenUpload_milestone/aspectjmatcher.pom"/> - <attach file="${build.root}/aspectjmatcher/target/aspectjmatcher-${suffix}-sources.jar" classifier="sources"/> - </maven:deploy> - - </target> - - <target name="publishtomaven_release" depends="maven.init"> - <property name="suffix" value="1.7.2"/> - - <property name="build.root" value="/Users/aclement/gits/org.aspectj/aj-build"/> - <property name="adjusted.release.type" value="release"/> - <property name="maven.central.repository" value="s3://maven.springframework.org/${adjusted.release.type}"/> - <property name="bin.jars.folder" value="${build.root}/dist/tools/lib"/> - <property name="src.jars.folder" value="${build.root}/src"/> - - <!-- ASPECTJRT --> - <maven:deploy file="${bin.jars.folder}/aspectjrt.jar"> - <remoteRepository url="${maven.central.repository}"> - <authentication username="${accessKey}" passphrase="${secretKey}"/> - </remoteRepository> - <pom file="usedForMavenUpload_${adjusted.release.type}/aspectjrt.pom"/> - <attach file="${src.jars.folder}/aspectjrt${suffix}-src.jar" classifier="sources"/> - </maven:deploy> - - <!-- ASPECTJTOOLS --> - <maven:deploy file="${bin.jars.folder}/aspectjtools.jar"> - <remoteRepository url="${maven.central.repository}"> - <authentication username="${accessKey}" passphrase="${secretKey}"/> - </remoteRepository> - <pom file="usedForMavenUpload_${adjusted.release.type}/aspectjtools.pom"/> - <attach file="${src.jars.folder}/aspectjtools${suffix}-src.jar" classifier="sources"/> - </maven:deploy> - - <!-- ASPECTJWEAVER --> - <maven:deploy file="${bin.jars.folder}/aspectjweaver.jar"> - <remoteRepository url="${maven.central.repository}"> - <authentication username="${accessKey}" passphrase="${secretKey}"/> - </remoteRepository> - <pom file="usedForMavenUpload_${adjusted.release.type}/aspectjweaver.pom"/> - <attach file="${src.jars.folder}/aspectjweaver${suffix}-src.jar" classifier="sources"/> - </maven:deploy> - </target> - - - <target name="repo2" depends="maven.init"> - </target> - - <target name="mavenDeployJar"> - <!-- - Currently only an exec is usable, see http://jira.codehaus.org/browse/MANTTASKS-71 - this mean you need to have maven installed on your system. - --> - <exec executable="n:/tools/apache-maven-2.0.9/bin/mvn.bat" failonerror="true"> - <arg line="--batch-mode"/> - <arg line="deploy:deploy-file"/> - <arg line="-Durl=${repo.url}"/> - <arg line="-DrepositoryId=${repo.id}"/> - <arg line="-Dfile=${file}"/> - <arg line="-DgroupId=org.aspectj"/> - <arg line="-DartifactId=${artifact}"/> - <arg line="-Dpackaging=jar"/> - <arg line="-Dversion=${repo.version}"/> - <arg line="-DpomFile=${modules.dir}/aj-build/repo/${artifact}.pom"/> - </exec> - </target> - - <target name="mavenDeploySource"> - <!-- - Currently only an exec is usable, see http://jira.codehaus.org/browse/MANTTASKS-71 - this mean you need to have maven installed on your system. - - failonerror is set to false because deploy:deploy-file goes NPE for some obscure reason - on recent versions, see http://jira.codehaus.org/browse/MDEPLOY-48 - --> - <exec executable="n:/tools/apache-maven-2.0.9/bin/mvn.bat" failonerror="false"> - <arg line="--batch-mode"/> - <arg line="deploy:deploy-file"/> - <arg line="-Durl=${repo.url}"/> - <arg line="-DrepositoryId=${repo.id}"/> - <arg line="-Dfile=${file}"/> - <arg line="-DgroupId=org.aspectj"/> - <arg line="-DartifactId=${artifact}"/> - <arg line="-Dpackaging=java-source"/> - <arg line="-Dversion=${repo.version}"/> - <arg value="-DgeneratePom=false"/> - </exec> - </target> - - -</project> diff --git a/build/ivysettings.xml b/build/ivysettings.xml deleted file mode 100644 index 4a95008fe..000000000 --- a/build/ivysettings.xml +++ /dev/null @@ -1,73 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ivysettings> - - - <settings defaultResolver="external-lookup" defaultLatestStrategy="latest-lexico"/> - - <caches resolutionCacheDir="${ivy.cache.dir}/resolution" repositoryCacheDir="${ivy.cache.dir}/repository" - ivyPattern="[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" - artifactPattern="[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" - useOrigin="true" checkUpToDate="false"/> - -<!-- - <typedef name="s3" classname="org.springframework.aws.ivy.S3Resolver"/> - <macrodef name="s3repo"> - <attribute name="bucket"/> - <attribute name="artifact.type"/> - <attribute name="release.type"/> - <s3 descriptor="required" accessKey="${accessKey}" secretKey="${secretKey}"> - <ivy pattern="s3://@{bucket}/ivy/@{artifact.type}/@{release.type}/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/> - <artifact pattern="s3://@{bucket}/ivy/@{artifact.type}/@{release.type}/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/> - </s3> - </macrodef> ---> - -<!-- - <macrodef name="localrepo"> - <filesystem descriptor="required"> - <ivy pattern="${local.repo.dir}/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/> - <artifact pattern="${local.repo.dir}/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/> - </filesystem> - </macrodef> ---> - - <resolvers> -<!-- Integration repositories --> -<!-- - <filesystem name="integration" descriptor="required"> - <ivy pattern="${integration.repo.dir}/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/> - <artifact pattern="${integration.repo.dir}/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/> - </filesystem> ---> - -<!-- Lookup repositories --> - <chain name="external-lookup" returnFirst="true"> - <localrepo name="local-external-repository"/> - <s3repo name="bundle-external-repository" bucket="repository.springsource.com" artifact.type="bundles" release.type="external"/> - <s3repo name="library-external-repository" bucket="repository.springsource.com" artifact.type="libraries" release.type="external"/> - </chain> - - <chain name="spring-portfolio-lookup" returnFirst="true"> - <resolver ref="integration"/> - <localrepo name="local"/> - <s3repo name="bundle-release-repository" bucket="repository.springsource.com" artifact.type="bundles" release.type="release"/> - <s3repo name="bundle-milestone-repository" bucket="repository.springsource.com" artifact.type="bundles" release.type="milestone"/> - <s3repo name="bundle-snapshot-repository" bucket="repository.springsource.com" artifact.type="bundles" release.type="snapshot"/> - <s3repo name="library-release-repository" bucket="repository.springsource.com" artifact.type="libraries" release.type="release"/> - <s3repo name="library-milestone-repository" bucket="repository.springsource.com" artifact.type="libraries" release.type="milestone"/> - <s3repo name="library-snapshot-repository" bucket="repository.springsource.com" artifact.type="libraries" release.type="snapshot"/> - </chain> - -<!-- Publishing repositories --> - <s3repo name="ebr-bundle-publish" bucket="${publish.bucket}" artifact.type="bundles" release.type="${adjusted.release.type}"/> - <s3repo name="ebr-library-publish" bucket="${publish.bucket}" artifact.type="libraries" release.type="${adjusted.release.type}"/> - <localrepo name="local-bundle-publish"/> - <localrepo name="local-library-publish"/> - </resolvers> - - <modules> - <module organisation="org.springframework.*" name="*" resolver="spring-portfolio-lookup"/> - <module organisation="com.springsource.*" name="*" resolver="spring-portfolio-lookup"/> - </modules> - -</ivysettings> diff --git a/build/package.xml b/build/package.xml deleted file mode 100644 index 5e187ede4..000000000 --- a/build/package.xml +++ /dev/null @@ -1,266 +0,0 @@ -<?xml version="1.0" ?> -<!-- writen for Ant 1.5.1 --> -<project name="Packaging AJ for AJDT" default="ajdtjars"> - - <description>Takes an AJ build and spits out the jars for AJDT</description> - - <property name="pkg.working.dir" value="../aj-build/ajdttemp" /> - <property name="aspectj.lib.dir" value="../aj-build/dist/tools/lib"/> - <property name="ajdt.output.dir" value="../aj-build/ajdtoutput"/> - - - - <target name="ajdtjars" depends="ajdejar,weaverjar,runtimejar" - description="Run in the build folder, it will take the aj-build/ output and create AJDT jars"> - </target> - - - <target name="ajdejar" description="Construct ajde.jar and ajdesrc.zip for the ajde plugin using an AJ build"> - - <!-- copy and unpack an aspectjtools.jar --> - <delete dir="${pkg.working.dir}"/> - <copy file="${aspectj.lib.dir}/aspectjtools.jar" tofile="aspectjtools.jar" overwrite="true" /> - <mkdir dir="${pkg.working.dir}" /> - <unzip dest="${pkg.working.dir}" src="aspectjtools.jar" /> - <delete file="aspectjtools.jar"/> - - <!-- delete everything that isn't in the org.aspectj package --> - <delete includeemptydirs="true"> - <fileset dir="${pkg.working.dir}"> - <exclude name="org/aspectj/**/*.*" /> - </fileset> - </delete> - - <!-- delete everything which is going to be in aspectjweaver.jar --> - <echo message="Removing files not required in ajde.jar since they're contained in aspectjweaver.jar"/> - <delete includeemptydirs="true"> - <fileset dir="${pkg.working.dir}"> - <include name="org/aspectj/asm/**/*.*" /> - <include name="org/aspectj/weaver/**/*.*" /> - <include name="org/aspectj/apache/bcel/**/*.*" /> - <include name="org/aspectj/bridge/**/*.*" /> - <include name="org/aspectj/util/**/*.*" /> - </fileset> - </delete> - - <!-- delete everything which is going to be in aspectjrt.jar --> - <echo message="Removing files not required in ajde.jar since they're contained in aspectjrt.jar"/> - <delete includeemptydirs="true"> - <fileset dir="${pkg.working.dir}"> - <!-- bug 118235: currently the commented out classes appear in both ajde.jar and aspectjrt.jar - uncomment this if decide it should only live in aspectjrt.jar - <include name="org/aspectj/internal/lang/annotation/**/*.*" /> - <include name="org/aspectj/internal/lang/reflect/**/*.*" /> --> - <include name="org/aspectj/runtime/**/*.*" /> - <include name="org/aspectj/lang/**/*.*" /> - </fileset> - </delete> - - <!-- construct the ajde.jar --> - <zip destfile="ajde.jar"> - <fileset dir="${pkg.working.dir}" /> - </zip> - <delete dir="${pkg.working.dir}" /> - - <!-- build a src zip --> - - <unzip dest="${pkg.working.dir}" src="${aspectj.lib.dir}/../../ide/eclipse/org.aspectj.ajde.source/src/jdtcore-for-aspectj-src.zip"/> - <unzip dest="${pkg.working.dir}" src="${aspectj.lib.dir}/../../ide/eclipse/org.aspectj.ajde.source/src/aspectjsrc.zip"/> - - <!-- delete everything that isn't in the org.aspectj package --> - <delete includeemptydirs="true"> - <fileset dir="${pkg.working.dir}"> - <exclude name="org/aspectj/**/*.*"/> - </fileset> - </delete> - - <!-- delete everything which is going to be in aspectjweaversrc.zip --> - <echo message="Removing files not required in ajdesrc.zip since they're contained in aspectjweaversrc.zip"/> - <delete includeemptydirs="true"> - <fileset dir="${pkg.working.dir}"> - <include name="org/aspectj/asm/**/*.*" /> - <include name="org/aspectj/weaver/**/*.*" /> - <include name="org/aspectj/apache/bcel/**/*.*" /> - <include name="org/aspectj/bridge/**/*.*" /> - <include name="org/aspectj/util/**/*.*" /> - </fileset> - </delete> - - <!-- delete everything which is going to be in aspectjrtsrc.zip --> - <echo message="Removing files not required in ajdesrc.zip since they're contained in aspectjrtsrc.zip"/> - <delete includeemptydirs="true"> - <fileset dir="${pkg.working.dir}"> - <!-- bug 118235: currently the commented out classes appear in both ajde.jar and aspectjrt.jar - uncomment this if decide it should only live in aspectjrt.jar - <include name="org/aspectj/internal/lang/annotation/**/*.*" /> - <include name="org/aspectj/internal/lang/reflect/**/*.*" /> --> - <include name="org/aspectj/runtime/**/*.*" /> - <include name="org/aspectj/lang/**/*.*" /> - </fileset> - </delete> - - <zip destfile="ajdesrc.zip"> - <fileset dir="${pkg.working.dir}"/> - </zip> - <delete dir="${pkg.working.dir}" /> - <copy file="ajde.jar" todir="${ajdt.output.dir}"/> - <copy file="ajdesrc.zip" todir="${ajdt.output.dir}"/> - <delete file="ajde.jar"/> - <delete file="ajdesrc.zip"/> - </target> - - <target name="weaverjar" description="Construct aspectjweaver.jar and aspectjweaversrc.zip for the aspectjweaver plugin using an AJ build"> - <!-- copy and unpack an aspectjweaver.jar into a local build directory --> - <delete dir="${pkg.working.dir}"/> - <copy file="${aspectj.lib.dir}/aspectjweaver.jar" tofile="aspectjweaver.jar" overwrite="true" /> - <mkdir dir="${pkg.working.dir}" /> - <unzip dest="${pkg.working.dir}" src="aspectjweaver.jar" /> - <delete file="aspectjweaver.jar"/> - - <!-- delete everything which shouldn't be included in the aspectjweaver.jar --> - <echo message="Removing files not required in aspectjweaver.jar"/> - <delete includeemptydirs="true"> - <fileset dir="${pkg.working.dir}"> - <exclude name="META-INF/*.*" /> - <exclude name="org/aspectj/apache/bcel/**/*.*" /> - <exclude name="org/aspectj/asm/**/*.*" /> - <exclude name="org/aspectj/bridge/**/*.*" /> - <exclude name="org/aspectj/util/**/*.*" /> - <exclude name="org/aspectj/weaver/**/*.*" /> - <exclude name="org/aspectj/org/objectweb/asm/**/*.*"/> - </fileset> - </delete> - - <!-- construct the aspectjweaver.jar directly in the org.aspectj.weaver plugin --> - <zip destfile="aspectjweaver.jar"> - <fileset dir="${pkg.working.dir}" /> - </zip> - <delete dir="${pkg.working.dir}" /> - - <!-- build a src zip --> - - <unzip dest="${pkg.working.dir}" src="${aspectj.lib.dir}/../../ide/eclipse/org.aspectj.ajde.source/src/jdtcore-for-aspectj-src.zip"/> - <unzip dest="${pkg.working.dir}" src="${aspectj.lib.dir}/../../ide/eclipse/org.aspectj.ajde.source/src/aspectjsrc.zip"/> - <!-- delete everything that isn't in the org.aspectj package --> - <delete includeemptydirs="true"> - <fileset dir="${pkg.working.dir}"> - <exclude name="org/aspectj/**/*.*"/> - </fileset> - </delete> - <!-- delete everything which shouldn't be included in the aspectjweaversrc.zip --> - <echo message="Removing files not required in aspectjweaversrc.zip"/> - <delete includeemptydirs="true"> - <fileset dir="${pkg.working.dir}"> - <exclude name="org/aspectj/apache/bcel/**/*.*" /> - <exclude name="org/aspectj/asm/**/*.*" /> - <exclude name="org/aspectj/bridge/**/*.*" /> - <exclude name="org/aspectj/util/**/*.*" /> - <exclude name="org/aspectj/weaver/**/*.*" /> - </fileset> - </delete> - - <zip destfile="aspectjweaversrc.zip"> - <fileset dir="${pkg.working.dir}"/> - </zip> - <delete dir="${pkg.working.dir}" /> - - <copy file="aspectjweaver.jar" todir="${ajdt.output.dir}"/> - <copy file="aspectjweaversrc.zip" todir="${ajdt.output.dir}"/> - <delete file="aspectjweaver.jar"/> - <delete file="aspectjweaversrc.zip"/> - </target> - - <target name="runtimejar" description="Copy the aspectjrt.jar from an - AJ build into the runtime plugin containing - the src"> - <copy file="${aspectj.lib.dir}/aspectjrt.jar" - tofile="aspectjrt.jar" - overwrite="true" /> - - <delete dir="${pkg.working.dir}" /> - <!-- build a src zip --> - <unzip dest="${pkg.working.dir}" src="${aspectj.lib.dir}/../../ide/eclipse/org.aspectj.ajde.source/src/jdtcore-for-aspectj-src.zip"/> - <unzip dest="${pkg.working.dir}" src="${aspectj.lib.dir}/../../ide/eclipse/org.aspectj.ajde.source/src/aspectjsrc.zip"/> - <!-- delete everything which shouldn't be included in the aspectjrtsrc.zip --> - <echo message="Removing files not required in aspectjrtsrc.zip"/> - <delete includeemptydirs="true"> - <fileset dir="${pkg.working.dir}"> - <exclude name="org/aspectj/internal/lang/annotation/**/*.*" /> - <exclude name="org/aspectj/internal/lang/reflect/**/*.*" /> - <exclude name="org/aspectj/runtime/**/*.*" /> - <exclude name="org/aspectj/lang/**/*.*" /> - </fileset> - </delete> - - <zip destfile="aspectjrtsrc.zip"> - <fileset dir="${pkg.working.dir}"/> - </zip> - <delete dir="${pkg.working.dir}" /> - - <copy file="aspectjrt.jar" todir="${ajdt.output.dir}"/> - <copy file="aspectjrtsrc.zip" todir="${ajdt.output.dir}"/> - <delete file="aspectjrt.jar"/> - <delete file="aspectjrtsrc.zip"/> - </target> - - - - - <!-- VERSION-STRING --> - <!-- these property values will be overridden when called from the master build script --> - <property name="ajde.version" value="9.9.9" /> - - - <property name="build.dir" value="build" /> - - <property file="aspectjlib.properties" /> - - <target name="init"> - <mkdir dir="${build.dir}" /> - <mkdir dir="dist" /> - </target> - - <target name="clean" depends="init"> - <delete dir="${build.dir}" /> - <delete dir="dist" /> - </target> - - <!--target name="packaged-plugin" depends="init" description="Create the plugin jar file from the assembled components in the build dir"> - <copy todir="${build.dir}" includeemptydirs="false"> - <fileset dir="."> - <exclude name="*src.zip" /> - <exclude name="build.*" /> - <exclude name=".*" /> - <exclude name="*/*" /> - <exclude name="META-INF/MANIFEST.MF" /> - <exclude name="aspectjlib.properties" /> - <depth max="0" /> - </fileset> - </copy> - <copy file="META-INF/MANIFEST.MF" tofile="${build.dir}/META-INF/MANIFEST.MF"> - <filterset begintoken="9" endtoken="9"> - <filter token="2.2.2" value="${ajde.version}"/> - </filterset> - </copy> - <copy todir="${build.dir}/doc"> - <fileset dir="doc" /> - </copy> - <copy todir="${build.dir}/icons"> - <fileset dir="icons" /> - </copy> - <zip destfile="dist/org.aspectj.ajde_${ajde.version}.jar"> - <fileset dir="build" /> - </zip> - </target--> - - <target name="copy doc" description="This copies the aspectj docs into the org.eclipse.ajde - plugin. By default, it only copies over any changes from the current version"> - <copy todir="doc" failonerror="false"> - <fileset dir="${aspectj.doc.dir}"> - <exclude name="examples" /> - </fileset> - </copy> - </target> - - -</project>
\ No newline at end of file diff --git a/build/readme-build-and-test-aspectj.html b/build/readme-build-and-test-aspectj.html deleted file mode 100644 index 4019a3f9d..000000000 --- a/build/readme-build-and-test-aspectj.html +++ /dev/null @@ -1,604 +0,0 @@ -<html> -<head> -<title>Build and Test AspectJ</title> -</head> -<body> -<h1>Build and Test AspectJ</h1> - -This describes how to build and test AspectJ -for developers working on source code for AspectJ. -It covers building with Ant or Eclipse and testing with -JUnit and the harness used for compiler tests. - -For information on how the build works and how to -debug failed builds, see -<a href="readme-build-module.html"> - readme-build-module.html</a>. - -<ol> - <li>Quick start</li> - <li>Requirements</li> - <li>Standard builds - <ol> - <li>Building using Ant</li> - <li>Building with Eclipse</li> - <li>Running the Ant build scripts from Eclipse</li> - <li>Using Eclipse to compile but Ant to assemble</li> - </ol> - </li> - <li>Running build products - <ol> - <li>Running the compiler, browser, or harness from the command-line</li> - <li>Running the compiler, browser, or harness from Eclipse</li> - <li>Running Ant-built jars from Eclipse</li> - </ol> - </li> - <li>Testing AspectJ - <ol> - <li>Running JUnit tests in Eclipse</li> - <li>Running JUnit tests from the command-line without Eclipse</li> - <li>Running JUnit tests from Ant without Eclipse</li> - <li>Using the test harness to run compiler tests</li> - </ol> - </li> - <li>Releases - <ol> - <li>Release builds</li> - <li>Release preconditions and testing</li> - <li>Release completion</li> - </ol> - </li> - <li>New modules, Java 5, and Ant-only build problems</li> - <li>Build Problems</li> -</ol> - -<h3>Quick start</h3> -This is a minimal introduction to building and testing AspectJ. - -<p/>Command-line users use CVS to check out something like this: -<pre> - export CVS_ROOT=":pserver:anonymous@dev.eclipse.org:/home/technology" - cvs co org.aspectj/modules</pre> -If using Eclipse, check out the subdirectories of -<code>org.aspectj/modules</code> as Eclipse projects. -Skip the <code>aspectj-attic</code> module. - -<p/>Build an AspectJ distribution: -<pre> - cd org.aspectj/modules/build - ../lib/ant/bin/ant</pre> - -Install the distribution (e.g., into build/../aspectj-install): - -<pre> java -jar ../aj-build/dist/aspectj-DEVELOPMENT.jar</pre> - -You can skip the GUI by specifying an existing, empty writable -target directory using <code>-to {targDir}</code>: - -<pre> java -jar ../aj-build/dist/aspectj-DEVELOPMENT.jar -to .</pre> - -Test it by running the build script in the examples directory: - -<pre> cd ../aspectj-install/doc/examples - ../../lib/ant/bin/ant</pre> - -This should build and run the spacewar example. - -<h3>Required sources, libraries, and tools</h3> - <p> - -To build requires only the AspectJ project modules and Java VM's. -All necessary libraries and tools are in the -<a href="../lib/">lib</a> directory, including Ant. - </p> -<p>To get the source, check out from CVS. E.g., from the command line, -</p> - -<pre> - export CVS_ROOT=":pserver:anonymous@dev.eclipse.org:/home/technology" - cvs co org.aspectj/modules -</pre> -<p> - Eclipse users should check out each relevant subdirectory of - <code>org.aspectj/modules</code> as a project - (most have .project files). -</p> -<p> -Not all modules are required. -The <code>aspectj-attic</code> module only has old code. -</p> - -<h3>Standard builds</h3> -<h4>Overview</h4> -The build system is designed to work standalone and support -Eclipse and Ant. -Each module is an Eclipse project, and all required libraries -are in lib/. -All build dependencies are read from Eclipse .classpath files -and managed using an Ant builder task, -so no Ant build scripts need to change when dependencies change. -However, that means the modules (read: Eclipse projects) can only -do what the builder task understands. Currently it expects -release source files in <code>src</code> (or <code>java5-src</code> -for Java 5 code) and test source files in -<code>testsrc</code> (or <code>java5-testsrc</code>), -and can handle Java and AspectJ projects. -For more information on the build infrastructure and setup, see -<a href="readme-build-module.html">readme-build-module.html</a> -and <a href="#antInvariants">below</a>. - -<h4>Building using Ant</h4> -<p> -You should use the Ant in ../lib/ant. Currently this is a vanilla -distribution of Ant 1.6.3, but that might change. -</p> -<p> -This <a href=".">build</a> directory has a master -<a href="build.xml">build.xml</a> script, and the modules have -satellite <code>build.xml</code> which support building only that -module. -The <a href="release">release</a> directory has scripts for doing -release builds (in multiple VM's, with testing). These are run by -automated build and before any AspectJ distribution. -Custom <code>build.xml</code> files are in -The <a href="../docs/build.xml">../docs/build.xml</a>, - <a href="../org.aspectj.lib/build-aspectjlib.xml">org.aspectj.lib/build-aspectjlib.xml</a>, -and <a href="../eclipse.plugin/build.xml">../eclipse.plugin/build.xml</a>. -These are invoked by the master -<a href="build.xml">build.xml</a> as needed. -Other modules have generic <code>build.xml</code>'s that just -use the master build file to run targets <code>compile</code> and -<code>test</code> for that module. -(If you do <code>clean</code>, all binaries for all -modules are cleaned.) -</p> -<p> -The master <a href="build.xml">build.xml</a> -creates an AspectJ distribution in - <a href="../aj-build/dist/aspectj-DEVELOPMENT.jar"> - ../aj-build/dist/aspectj-DEVELOPMENT.jar - </a>; -You'll notice module jar results are put in - <a href="../aj-build/jars">../aj-build/jars</a>, -including <code>{module}.jar</code> and <code>{module}-test.jar</code> -(for the release and test classes) and -<code>{module}-all.jar</code>, and -<code>{module}-test-all.jar</code> -(including all antecedant classes and libraries). -See <a href="build.xml">build.xml</a> for other targets. -</p> -<p> -For any build, you should create your own version of - <a href="local.properties">local.properties</a>, using - <a href="sample.local.properties">sample.local.properties</a> -as a template. -When using the master <code>build.xml</code>, -consider defining "build.config" to pass flags to the Ant -builder. E.g., to reuse Eclipse classes and log verbosely, -<p/> -<pre> - ant -Dbuild.config=useEclipseCompiles,verbose -</pre> -<p> -(<code>useEclipseCompiles</code> is incompatible with release builds -since it mixes testing and release classes.) -<p/> -<h4>Example builds</h4> -<p> -For example, to build everything into a release bundle, -with verbose logging: -</p> -<pre> - cd modules/build - ../lib/ant/bin/ant -</pre> - -<p> -To build only the asm module (and any modules it requires) using -<code>modules/build</code>: -</p> -<pre> - cd modules/build - ../lib/ant/bin/ant -f build.xml any-module -Dmodule.name=asm -</pre> -<p> -To build and test the asm module from that module: -</p> -<pre> - cd modules/asm - ../lib/ant/bin/ant test -</pre> - -<p> -To build the test harness into - <code>../aj-build/jars/testing-drivers-all.jar</code>: -</p> -<pre> - cd modules/build - ../lib/ant/bin/ant build-harness-jar -</pre> - -<h4>Building with Eclipse</h4> -<p> -As mentioned above, the modules are Eclipse projects, so -once checked out, they should build as-is. -(You will need to be using a version of Eclipse that can -handle the .project and .classpath files in the modules/projects.) -That will enable you -to run the compiler or test harness from within Eclipse (see below), -but it will not build the AspectJ release as Ant does. -If you are making changes in Eclipse, you should set your default JRE -to the minimum supported by the AspectJ tools (currently JDK 1.3) -to avoid using later API's. -You'll need to set some variables in your Eclipse environment; -currently these are: -</p> -<ul> - <li><u>JAVA_HOME</u>: used to access <code>JAVA_HOME/lib/tools.jar</code> - </li> - <li><u>JRE15_LIB</u>: used to access Java 5 libraries. - Some modules/projects use Java 5 API's. These have - per-project compiler settings for 5.0 compliance, but cannot - be built with the default pre-1.5 VM libraries. - Until the minimum VM required by the tools is 1.5, - we'll need to define this variable. - </li> -</ul> - -<h4>Running the Ant build scripts from Eclipse</h4> -When running Ant from older versions of Eclipse, -be sure to replace the Eclipse Ant -libraries with ours. In the Ant configuration, remove all jars -specified by Eclipse and add all the libraries in -<a href="../lib/ant/lib">../lib/ant/lib</a> -as well as in <a href="../lib/junit">../lib/junit</a>. -(Do not add <code>../lib/build/build.jar</code>, which is -added via a taskdef declaration.) -<p/> -If you find on rebuilding that the build products are not -being regenerated, you may need to manually delete them -or restart eclipse (the files are not being closed); see -<a href="readme-build-module.html">readme-build-module.html</a> -for more information. - -<h4>Using Eclipse to compile but Ant to assemble</h4> -As mentioned above, -assuming Eclipse is compiling the AspectJ modules successfully, -you can use Ant to assemble the Eclipse-built .class files into a -product by including <code>useEclipseCompiles</code> in the -<code>build.config</code>. That reduces the build process -to product assembly. -(And of course you can run Ant from Eclipse as described above.) - -<h4>Running the compiler, browser, or harness from the command-line</h4> -The build produces jar files in - <a href="../aj-build/jars/">../aj-build/jars/</a>, -some of which have manifests specifying the main class, so they -can be run using <code>java -jar {file} {arguments}</code>. - -<p/>To run the compiler from the command-line, use the <code>ajbrowser</code> jar file: -<pre> - java -jar aj-build/jars/ajbrowser-all.jar {compile arguments} -</pre> -This will run <code>ajbrowser</code> if you provide no arguments or - only (unflagged) .lst file arguments. To run the test harness, - use the <code>testing-drivers</code> jar file: -<pre> - java -jar aj-build/jars/testing-drivers-all.jar tests/ajcTests.xml ... -</pre> - -<h4>Running the compiler, browser, or harness from Eclipse</h4> -To run things within Eclipse, create a run configuration from the -defining module using the main class: -<p/> - -<table border="1" cellpadding="1"> -<tr><th>Program</th><th>Module</th><th>Main</th></tr> -<tr><td>AspectJ compiler</td><td>org.aspectj.ajdt.core</td><td>org.aspectj.tools.ajc.Main</td></tr> -<tr><td>AspectJ browser</td><td>ajbrowser</td><td>org.aspectj.tools.ajbrowser.Main</td></tr> -<tr><td>Test harness</td><td>testing-drivers</td><td>org.aspectj.testing.drivers.Harness</td></tr> -</table> - -<h4>Running Ant-built jars from Eclipse</h4> -You can run build products (built jars) from Eclipse in two ways: -<ul> - <li>Put them on the classpath of some run configuration</li> - <li>Select the jar files and right-click to "open with default editor" - (assuming your system is configured to run .jar files)</li> -</ul> -You might do this to run the installer or test the browser as built. -However, doing so might prevent those jar files from being recreated -in the next build. -It appears that sometimes these jar files are not close during the -Eclipse session, which means they cannot be overwritten in new builds, -even those run from a different Ant process. -If you find that builds are silently failing, try deleting the -build products. - - -<h3>Testing AspectJ</h3> -<p> -Each module has a tree of JUnit tests in the <code>testsrc</code> directory. -These parallel the <code>src</code> directories and contain roll-up suites -for each package - (<code>{module}/testsrc/{packagePath}/{package}Tests.java</code>) and -for the module as a whole - (<code>{module}/testsrc/{module}ModuleTests.java</code>). -</p> -<p> -The AspectJ project also has <i>additional</i> custom tests in the -<a href="../tests">tests module</a>, -mainly the compiler tests run by the harness in - <a href="../tests/ajcTests.xml">ajcTests.xml</a>. <u>It is important -to run these additional compiler tests (not covered by the JUnit -suite) before and after any change to the compiler.</u> -</p> -<p> -The module <a href="../run-all-junit-tests">run-all-junit-tests</a> -refers to all the other modules and the compiler tests adapted through -the <a href="../tests/src">../tests/src</a>. So the easiest way to -run the JUnit and compiler tests is to run the top-level suite -<a href="../run-all-junit-tests/testsrc/RunTheseBeforeYouCommitTests.java"> - RunTheseBeforeYouCommitTests</a>. -</p> - -<h4>Running JUnit tests in Eclipse</h4> -JUnit tests may be run under eclipse by selecting any JUnit source file -and creating a run configuration for it, including the roll-up - root test -<a href="../run-all-junit-tests/testsrc/RunTheseBeforeYouCommitTests.java"> - RunTheseBeforeYouCommitTests</a>. - -<h4>Running JUnit tests in Ant from the command line</h4> -To run the JUnit tests for any module, just go there and -<pre>../lib/ant/bin/ant tests</pre>. - -<h4>Running JUnit tests from the command-line without Eclipse or Ant</h4> -<p> -To run JUnit directly, put JUnit and the {module}-test-all.jar file -on the classpath: -</p> -<pre> - set cp="lib/junit/junit.jar;aj-build/jars/util-test-all.jar" - java -classpath "$cp" junit.textui.TestRunner UtilModuleTests -</pre> -<p> -The assembled (<code>-all</code>) jar files include all antecedants, -except for those "skipped" (like Ant and JUnit). -(For more on skipped libraries, see -<a href="readme-build-module.html">readme-build-module.html</a>). -</p> - -<h4>Using the test harness to run compiler tests</h4> -<p> - -The <a href="build.xml">build.xml</a> <code>build-harness-jar</code> -target builds a single jar with -the AspectJ binaries and a test harness as the main class. -It reads test suite files like - <a href="../tests/ajcTests.xml">../tests/ajcTests.xml</a>; -use the -help flag to see available options. -For more information, see - <a href="../tests/readme-tests-module.html"> - ../tests/readme-tests-module.html</a>. -</p> -<hr/> -<h3><a name="releases"></a>Releases</h3> -<h4>Release builds</h4> -Committers do official release builds to create the distribution -released in binary form from the web site. - -Release builds differ mainly in running -from a clean, up-to-date tree and with correct build version values -in <a href="local.properties">local.properties</a>, which -will update <code>org.aspectj.bridge.Version</code>. -Do not run using the <code>build.config</code> value -<code>useEclipseCompiles</code>, -because this will include testing classes in the release libraries. -See <a href="#version">Version synchronization</a> below -for more details on how the version is updated. - -<h4>Release preconditions and testing</h4> -<p/> -Normally, we do releases only after fixing all high-priority -(P1 and P2) bugs in the bug database - (<a href="https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&priority=P1&priority=P2"> -All open AspectJ bugs with P1 and P2</a>). -For bug fixes, associated tests in - <code>tests/ajcTestsFailing.xml</code> are fixed and moved to - <code>tests/ajcTests.xml</code>. - - -<p/>Before a release, run the release tests as described in - <a href="../tests/readme-release-tests.html"> - ../tests/readme-release-tests.html</a> - (deprecated? using: - <a href="../build/release-checklist.txt"> - ../build/release-checklist.txt</a>). - - -<h4>Release completion</h4> -When the release build is accepted, -tag the tree with the release version -so others can do diffs or create patches -based on the release code. E.g., from the command line: -<pre> - cd org.aspectj/ - cvs tag -R -c v1_1_0 -</pre> -<p/> -Pushing the release out to the web involves manually updating -the web with the release files and documentation, - verifying the downloads and pages, - and sending any release notifications. - Save the release installer, test results, and any notes - about deferred bugs or tests in - <code>org.aspectj/releases/aspectj-{version}/</code>. - -<p/> -<hr/> -<a name="antInvariants"/> -<h3>New modules, Java 5, and Ant-only build problems</h3> -<p> - To reiterate (and as described more fully in - <a href="readme-build-module.html">readme-build-module.html</a>), - the build system introspects on module and the .classpath file - to determine how to build. Further, it enforces stricter build - invariants than the Eclipse projects do; when your code works - in Eclipse but fails in the Ant, it's your responsibility to fix it - by following the build invariants below. -</p> -<p> -<p>What to do when adding a new module (i.e., eclipse project): -</p> -<ol> - <li>Setup like the other modules, following the invariants below, esp. - <ol> - <li>same directory level</li> - <li>same naming conventions for source folders</li> - <li>same use of known classpath variables/entries</li> - </ol> - </li> - <li>Add module to those checked for copyright/license in - <a href="testsrc/org/aspectj/build/BuildModuleTests.java"> - testsrc/org/aspectj/build/BuildModuleTests.java - </a> - </li> - <li>Add module to module dependency tree as usual in Eclipse project properties</li> - <li>If the module is to produce a jar visible in {AspectJ}/lib, - then add a zero-length file of the correct name to - <a href="products/tools/dist/lib">products/tools/dist/lib</a> - and an alias to that file from the module name in - <a href="src/org/aspectj/internal/tools/build/Builder.properties"> - Builder.properties</a> - </li> - <li>To make the JUnit tests visible to the Ant builder, include a - top-level Ant suite titled {Module}ModuleTests.java - </li> - <li>Test the build in Eclipse/JUnit using - <a href="testsrc/org/aspectj/internal/build/BuildModuleTest.java"> - testsrc/org/aspectj/internal/build/BuildModuleTest.java - </a> - </li> -</ol> -<p> - How the build system introspects, and the build invariants that - are enforced by the Ant build: -</p> -<ul> - <li>A given module is identified by its directory name. - </li> - <li>Most modules are Eclipse Java projects; some are AspectJ projects. - Eclipse is not required to build. - </li> - <li>The file <code>{module.name}/.classpath</code> is read to determine - the source directories and required projects and libraries. - </li> - <li>Normal Java source files are in <code>src</code> and <code>testsrc</code> - directories. - </li> - <li>Java 5 source files are in <code>java5-src</code> and <code>java5-testsrc</code> - directories. - </li> - <li>Neither <code>testsrc</code> directory is used in production builds. - </li> - <li> - This only requires what's in the - <a href="../lib">../lib</a> directory and the usual Java VM's. - That means modules can only depend on each other and the libraries - in <a href="../lib">../lib</a>. - </li> - <li>Modules are built into jar files. <code>{module.name}.jar</code> - includes only the module classes, and <code>{module.name}-all.jar</code> - includes the module classes plus any antecendant modules and any - required libraries not skipped (see below). - </li> - <li>A file <code>{module.name}/{module.name}.mf.txt</code>, if available, - will be used as the jar file manifest, after replacing certain - variables in the <code>.mf.txt</code> file. - </li> - <li>All required libraries are included in the production jars, except - for testing libraries and those "skipped" in - <a href="src/org/aspectj/internal/tools/build/Builder.properties"> - Builder.properties</a> - (Ant, JUnit, etc.). - </li> - <li>Test classes are excluded from the compile process for production builds. - These result in the same jar files; there is no way to - tell externally whether the test classes were stripped from a jar. - </li> - <li>ONLY resources specified as <code>resource.pattern</code> in - <a href="src/org/aspectj/internal/tools/build/Builder.properties"> - Builder.properties</a> - are included with assembled jars. - </li> - <li>No <code>testing-*</code> module is used in production builds, - directly or indirectly. - </li> - <li>It is an error for any code to depend on any <code>testsrc</code> code, - whether in the same or another module. - </li> - <li>AspectJ projects are built in Ant using - <a href="../lib/aspectj">../lib/aspectj</a>. - </li> - <li>Java 5 code is not supported in AspectJ (yet). - </li> - <li>Java 5 code is built in Ant only if JAVA_HOME points to Java 5 (or later). - </li> - <li>No normal code can depend on any Java 5 code. - The build system checks by building everything using the - lowest VM supported by the tools. - </li> -</ul> -<p>That means there are a number of legal Eclipse projects and code - arrangements which are not valid AspectJ modules. - When you add modules, libraries, or dependencies, you must build - with Ant to verify these invariants are not broken. -</p> -<h3>Build problems</h3> -Some build problems and fixes encountered in the past: -<ul> - <li>If the build works in Eclipse, but fails in Ant, - do not assume the build scripts are broken. - See <a href="#antInvariants">Invariants enforced only in Ant</a>. - </li> - <li>If your compiles fail because Ant cannot find <code>javac</code>, - put the JDK bin directory on your PATH and/or define - the JAVA_HOME environment variable. - Ant requires the path to the <code>javac</code> executable - when the <code>BuildModule</code> taskdef runs. I think it either - gets it from <code>$JAVA_HOME</code> or if the <code>bin</code> - directory is on the <code>PATH</code>. - </li> - <li>If using an IBM JDK at version 1.4 or higher within Eclipse, - then the default value of JRE_LIB will point to the jar file - "core.jar." Unlike the Sun JDK, IBM does not package the full - runtime into a single jar ("rt.jar"), but instead has multiple - jar files. Since core.jar does not contain the graphics libraries, - several of the AspectJ projects will fail to build as checked out - of CVS - there are missing dependencies on AWT and swing. The - solution is to add graphics.jar to the project classpaths... BUT - if this is added as an ordinary (external jar), then the main - ant build script will pick up the contents of graphics.jar and - include it in the aspectj distribution (obvious clue, the size of - the built aspectjtools.jar doubles to about 10MB). Instead, from the - Java Build Path properties page of the project, select "Add Library" - and add the JDK library. You now have to remove the JRE_LIB entry - from the project or Eclipse complains about duplicate jar files - in the path. - </li> - <li>More generally, if you find extra classes in the assembled jars, - most likely you have added unexpected libraries to the build, e.g., - when adding libraries for the IBM JRE. - To skip those, add them to the "skip.libraries" list in - <a href="src/org/aspectj/internal/tools/build/Builder.properties"> - src/org/aspectj/internal/tools/build/Builder.properties</a>. - These libraries will always be skipped for any module built this way; - there is no way to include a library in one module but not another. - For more information on the properties file, see - <a href="readme-build-module.html">readme-build-module.html</a>. - </li> -</ul> - -</body> -</html> diff --git a/build/readme-build-module.html b/build/readme-build-module.html deleted file mode 100644 index e63b0c38d..000000000 --- a/build/readme-build-module.html +++ /dev/null @@ -1,205 +0,0 @@ -<html> -<head> -<title>AspectJ build module</title> -</head> -<body> -<h1>AspectJ build</h1> - -This build module contains taskdefs and resources for doing builds -and checking source licenses. This document describes our approach -to builds and provides some notes for maintaining the build module -and debugging builds. -For information -on running builds and doing testing for the AspectJ project, see - <a href="readme-build-and-test-aspectj.html"> - readme-build-and-test-aspectj.html</a>. - -<h3>Approach</h3> -The AspectJ project source files are broken into modules, -the subdirectories of the modules directory. -(To eclipse users, each module is a Java or AspectJ project.) -The modules are compiled independently and may be assembled -by the build script into the release jar files. -All required libraries are checked into the <code>lib</code> module. -We use Ant to drive the build, but the logic for building and -assembling modules resides in the BuildModule taskdef, -which reads module dependencies from the Eclipse .classpath files -and assembles the product according to the templates in the -product directory. -This makes it easy to change dependencies and add modules, -but could make it difficult to debug if something were to go wrong. - - -<h3>Maintaining the build module</h3> - -Because the BuildModule taskdef extracts dependencies from the Eclipse -<code>.classpath</code> file, there is no need to update build scripts when -adding or removing modules or changing their dependencies, so long -as they are all in the base modules directory (usually the base of -the eclipse workspace). -Likewise, updating a product assembly should be easy, -since they are based on introspection of the product directories. - -Still, the taskdef workings are not obvious in the build script, so -this section makes clear some of the implicit logic -in case it's required when debugging build failures or -to make changes. - -<h4>Build module code updates</h4> -The build module produces taskdefs used to run the build. -The scripts avoid bootstrapping by using a build library jar -checked in to - <code>lib/build/build.jar</code>. -That means code updates in the build module are not reflected in -the build process until the <code>build.jar</code> produced by -building this <code>build</code> module replaces that found in - <code>lib/build/build.jar</code>. Once the module update is - confirmed, the new <code>lib/build/build.jar</code> must be checked in - to propogate the changes to other users. -The scripts support an Ant variable <code>check.build.jar</code> -by warning when <code>lib/build/build.jar</code> is out of date. - -<h4>BuildModule task</h4> -The -<a href="src/org/aspectj/internal/tools/ant/taskdefs/BuildModule.java"> - BuildModule</a> -taskdef implements an integrated module or product build. -<p/><u>Module builds</u> are based on the Eclipse <code>.classpath</code> -file, and can produce -a jar with the module classes, with two variations: -<ul> - <li> include only the module classes, - or assemble the jar complete with all antecedent modules and - libraries; - </li><li>compile the module(s) with or without any - testing source or libraries - </li> -</ul> -If there is a file {moduleName}.mf.txt -in the module directory, it will be used as the manifest for the -module jar file. - -<p/><u>Product builds</u> are defined by introspection of a -<a href="products">products</a> subdirectory like -<a href="products/tools">products/tools</a> for the AspectJ installer. - -These have an <code>install</code> directory for installer resources -and a <code>dist</code> directory containing all files belonging in -the distribution, including 0-length placeholders for the module build -results (e.g., <a href="products/tools/dist/lib">products/tools/dist/lib</a>). -These placeholder file names are mapped to the originating -module by <code>Builder.moduleAliasFor(String)</code> -using values in - <a href="src/org/aspectj/internal/tools/build/Builder.properties"> - Builder.properties</a>. -(The "-all" suffix in the source jars means that the module and all required -modules are included.) -<p/> -<a name="version"></a> -<h4>Version synchronization</h4> -The version is expressed in the jar manifests, in the <code>Version</code> class, -and in some documentation files. The build script -ensures all version expressions -are aligned. When not doing or testing release builds, -developers use the default "DEVELOPMENT" version. - -<p/>The build version is set in -<a href="build-properties.xml">build-properties.xml</a> and propogated -using Ant copy filters out to -the <a href="../aspectj5rt/aspectj5rt.mf.txt">aspectjrt.jar manifest</a>, -the <a href="../ajbrowser/ajbrowser.mf.txt">aspectjtools.jar manifest</a> -and to -<a href="../bridge/src/org/aspectj/bridge/Version.java"> - ../bridge/src/org/aspectj/bridge/Version.java</a> -which the <a href="build.xml">build.xml</a> <code>init-version</code> task -generates from a template -<a href="lib/BridgeVersion.java.txt">lib/BridgeVersion.java.txt</a>. -To avoid updating <code>Version.java</code> whenever -<code>build-properties.xml</code> changes, a task -<a href="src/org/aspectj/internal/tools/ant/taskdefs/VersionUptodate.java"> - src/org/aspectj/internal/tools/ant/taskdefs/VersionUptodate.java</a> -determines whether Version.java has the same version by scanning the source file. -The scan is dim-witted; do not change the lines flagged in the template -without also changing the scanning code in the task. - -<h4>Temporary aj-{name} and persistant aspectj-{name}</h4> -<p/> -Top-level temporary build directories are prefixed "aj-", -so you can safely destroy any such directory or ignore it -in CVS or the Eclipse package explorer. By default the build script -puts them at the same level as other modules. In build scripts, property names -follow a similar convention; those prefixed "aj-" may be deleted at will, while -"aspectj-" names are source directories which should never be deleted. - -<h4>Building Java 5 sources</h4> -<p/> -Java 5 source is supported in <code>{module}/java5-src</code> directories. -Under Ant, when building in a pre-Java-5 VM, this source will be ignored -(hence, it must not be required to compile). Under Eclipse, developers -not using Java 5 should close the corresponding modules. - -<h4>Builder.properties, resources, and tree audit tests</h4> -<p/> -In <a href="src/org/aspectj/internal/tools/build/Builder.properties"> - src/org/aspectj/internal/tools/build/Builder.properties</a> -you can set up -<ul> - <li>product aliases for mapping module jars</li> - <li>libraries to exclude for assembling module jars</li> - <li>patterns for copying resources.</li> -</ul> -Regarding the patterns, if you add a resource with an unrecognized suffix to a -source tree, the corresponding unit test in -<a href="testsrc/BuildModuleTests.java">testsrc/BuildModuleTests.java</a> -will fail. You'll need to update the <code>Builder.properties</code> -file (and recreate the build.jar) to ensure that the new resource -is copied to the assembled module jar. - -<h3>Debugging build problems</h3> -<h4>Running under Eclipse</h4> -When running Ant from eclipse, -do not use the default Eclipse Ant classpath; remove those jars and -add all the libraries in <a href="../lib/ant/lib">../lib/ant/lib</a> -as well as in <a href="../lib/junit">../lib/junit</a>. -If the build is failing under eclipse or Ant and the problem appears -to be in the build module, you can run the build directly in eclipse -(not using the Ant script) by running the skipped JUnit tests in -<a href="testsrc/org/aspectj/internal/build/ModulesTests.java"> - testsrc/org/aspectj/internal/build/ModulesTests.java</a>. -<p/> - -<h4>Why new or changed modules might not work</h4> -The BuildModule taskdef makes some assumptions about the naming, -position, and contents of module directories and files. -Understand those (documented in -<a href="src/org/aspectj/internal/tools/ant/taskdefs/BuildModule.java"> - BuildModule.java</a>) before using non-standard module directories. - -<h4>Silent classpath and build failures</h4> -<u>warning</u>: When Ant runs compile processes, sometimes Jar files -are not closed until the process quits. When running Ant under Eclipse, -that means the jar files are not writable until eclipse quits. -This affects build products (e.g., installers) which are run under eclipse -(e.g., by opening with the "default system editor") and libraries used -when compiling under Javac (if not zip products or input). This problem -presents as files not being writable, i.e., deleted or modified. -<p/> -One workaround is to delete any existing build products -before re-creating them. The problem with this is that Ant provides no -notice of that deletes fail when deleting with quiet="on", but when not -running in quiet mode, deletes will fail if the directory does not exist. -The workaround-workaround would be to create any required directories -before trying to deleting any files, with the result of creating unused -empty directories. - -<p/> -Currently BuildModule tasks forks the Javac command to try to work around -this problem, but the Zip commands do not work around it. - -If under Eclipse, you get strange behavior with Ant builds, clear -out everything and build from the command line. In some cases, you -have to exit Eclipse before files can be deleted. (*sigh*) - -<p/> -</body> -</html> diff --git a/build/test-build-script.xml b/build/test-build-script.xml deleted file mode 100644 index 610dd66cd..000000000 --- a/build/test-build-script.xml +++ /dev/null @@ -1,42 +0,0 @@ -<!-- ========================================================================= --> -<!-- Copyright (c) 2005 Contributors --> -<!-- All rights reserved. --> -<!-- This program and the accompanying materials are made available --> -<!-- under the terms of the Eclipse Public License v 2.0 --> -<!-- which accompanies this distribution and is available at --> -<!-- https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt --> -<!-- --> -<!-- Contributors: (See CVS checkin's) --> -<!-- Wes Isberg initial implementation --> -<!-- ========================================================================= --> - -<project name="test-build-script" default="all" basedir="."> - - <property name="modules.dir" location="${basedir}/.."/> - - <import file="${modules.dir}/build/build-properties.xml"/> - - <target name="all" depends="failures"/> - - <target name="failures" depends="init-properties"> - <delete file="${aj.failure.file}"/> - <echo message="-> no false negative (no file)"/> - <antcall target="fail-if-failures"/> - - <touch file="${aj.failure.file}"/> - <echo message="-> no false negative (empty file)"/> - <antcall target="fail-if-failures"/> - - <echo message="-> no false negative (unset Property)"/> - <report-if-failed text="not error text" property="unsetProperty"/> - <antcall target="fail-if-failures"/> - - <echo message="-> true negative (set Property)"/> - <property name="setProperty" value="."/> - <report-if-failed text="error text" property="setProperty"/> - <antcall target="fail-if-failures"/> - - <loadfile property="emit" srcfile="${aj.failure.file}"/> - <echo message="-> file contents: ${emit}"/> - </target> -</project> |