leosimons 2003/11/13 04:41:08 Modified: . maven-common-gump-build.xml Log: move this over from avalon/buildsystem Revision Changes Path 1.4 +323 -42 avalon-excalibur/maven-common-gump-build.xml Index: maven-common-gump-build.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/maven-common-gump-build.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- maven-common-gump-build.xml 7 Jul 2003 16:50:43 -0000 1.3 +++ maven-common-gump-build.xml 13 Nov 2003 12:41:08 -0000 1.4 @@ -7,7 +7,42 @@ <!-- note the lack of property file inclusion. You should do that from the script which calls this file. --> - <target name="excalibur:warn-project.name" unless="project.name.set"> + <target name="avalon:warning" unless="do.not.warn"> + <echo> +======================================================================= + WARNING! + + This buildfile is only here for gump integration. Please use + maven (http://maven.apache.org/) for normal builds. +======================================================================= + </echo> + </target> + + <target name="avalon:debug" unless="do.not.debug"> + <echo> +======================================================================= +DEBUG INFO + + maven.src.dir = ${maven.src.dir} + maven.build.dir = ${maven.build.dir} + maven.compile.debug = ${maven.compile.debug} + maven.compile.deprecation = ${maven.compile.deprecation} + maven.compile.optimize = ${maven.compile.optimize} + + project.name = ${project.name} + project.version = ${project.version} + project.copyright.year = ${project.copyright.year} + + java sources = ${maven.src.dir}/java + java classes = ${maven.build.dir}/classes + jarfile = ${maven.build.dir}/${project.name}-${project.version}.jar + javadocs = ${maven.build.dir}/docs/apidocs + junitreports = ${maven.build.dir}/docs/junitreports +======================================================================= + </echo> + </target> + + <target name="avalon:warn-project.name" unless="project.name.set"> <echo> ======================================================================= WARNING! @@ -23,11 +58,78 @@ </echo> </target> - <target name="excalibur:init"> - <condition property="project.name.set"> - <isset property="project.name"/> - </condition> - <antcall target="excalibur:warn-project.name"/> + <target name="avalon:warn-avail-api-src" unless="api.src.present"> + <echo> +======================================================================= + NOTE! + + The directory + + ${maven.src.dir}/api + + does not exist. This means the api jar that will be created will be + empty. +======================================================================= + </echo> + </target> + + <target name="avalon:warn-avail-impl-src" unless="impl.src.present"> + <echo> +======================================================================= + NOTE! + + The directory + + ${maven.src.dir}/impl + + does not exist. This means the impl jar that will be created will be + empty. +======================================================================= + </echo> + </target> + + <target name="avalon:warn-avail-test-src" unless="test.src.present"> + <echo> +======================================================================= + NOTE! + + The directory + + ${maven.src.dir}/test + + does not exist. This means no unit tests will be run. +======================================================================= + </echo> + </target> + + <target name="avalon:warn-avail-no-sources" if="no.sources.available"> + <fail> +======================================================================= + ERROR! + + This project does not contain any java source files in + + ${maven.src.dir}/api or + ${maven.src.dir}/impl or + ${maven.src.dir}/java or + ${maven.src.dir}/test or + + that means it is not possible to generate any classes, jars or + javadocs. +======================================================================= + </fail> + </target> + + <target name="avalon:warn-avail"> + <antcall target="avalon:warn-avail-no-sources"/> + <antcall target="avalon:warn-avail-api-src"/> + <antcall target="avalon:warn-avail-impl-src"/> + <antcall target="avalon:warn-avail-test-src"/> + </target> + + <target name="avalon:init"> + <antcall target="avalon:warning"/> + <antcall target="avalon:debug"/> <!-- defaults --> <property name="maven.src.dir" value="${basedir}/src"/> @@ -44,68 +146,140 @@ <format property="project.version" pattern="yyyyMMdd"/> </tstamp> <property name="project.copyright.year" value="1997-2003"/> - </target> - <target name="excalibur:debug" depends="excalibur:init" unless="do.not.debug"> - <echo> -======================================================================= -DEBUG INFO + <condition property="project.name.set"> + <isset property="project.name"/> + </condition> + <antcall target="avalon:warn-project.name"/> - maven.src.dir = ${maven.src.dir} - maven.build.dir = ${maven.build.dir} - maven.compile.debug = ${maven.compile.debug} - maven.compile.deprecation = ${maven.compile.deprecation} - maven.compile.optimize = ${maven.compile.optimize} + <available file="${basedir}/src/api" property="api.src.present"/> + <available file="${basedir}/src/impl" property="impl.src.present"/> + <available file="${basedir}/src/java" property="java.src.present"/> + <available file="${basedir}/src/test" property="test.src.present"/> + + <condition property="no.sources.available"> + <and> + <not><isset property="api.src.present"/></not> + <not><isset property="impl.src.present"/></not> + <not><isset property="java.src.present"/></not> + <not><isset property="test.src.present"/></not> + </and> + </condition> - project.name = ${project.name} - project.version = ${project.version} - project.copyright.year = ${project.copyright.year} + <antcall target="avalon:warn-avail"/> + </target> - java sources = ${maven.src.dir}/java - java classes = ${maven.build.dir}/classes - jarfile = ${maven.build.dir}/${project.name}-${project.version}.jar - javadocs = ${maven.build.dir}/docs/apidocs + <target name="avalon:jar" + depends="avalon:init, avalon:api-compile, avalon:impl-compile, avalon:java-compile, avalon:test, avalon:api-jar, avalon:impl-jar, avalon:regular-jar"/> + + <target name="avalon:java-compile" if="java.src.present" + depends="avalon:init,avalon:api-compile,avalon:impl-compile"> + <echo> +======================================================================= + Compiling Sources ======================================================================= </echo> + <mkdir dir="${maven.build.dir}"/> + <mkdir dir="${maven.build.dir}/classes"/> + <mkdir dir="${maven.build.dir}/api-classes"/><!-- to ensure <classpath/> works --> + <mkdir dir="${maven.build.dir}/impl-classes"/><!-- to ensure <classpath/> works --> + <javac + destdir="${maven.build.dir}/classes" + excludes="**/package.html" + debug="${maven.compile.debug}" + deprecation="${maven.compile.deprecation}" + optimize="${maven.compile.optimize}"> + + <src> + <pathelement path="${maven.src.dir}/java"/> + <pathelement path="${maven.build.dir}/api-classes"/> + <pathelement path="${maven.build.dir}/impl-classes"/> + </src> + </javac> + + <mkdir dir="${maven.build.dir}/src"/> + <copy todir="${maven.build.dir}/src"> + <fileset dir="${maven.src.dir}/java"/> + </copy> </target> - <target name="excalibur:warning" depends="excalibur:init,excalibur:debug" unless="do.not.warn"> + <target name="avalon:api-compile" if="api.src.present" + depends="avalon:init"> <echo> ======================================================================= - WARNING! - - This buildfile is only here for gump integration. Please use - maven (http://maven.apache.org/) for normal builds. + Compiling API Sources ======================================================================= </echo> + <mkdir dir="${maven.build.dir}"/> + <mkdir dir="${maven.build.dir}/api-classes"/> + <javac + destdir="${maven.build.dir}/api-classes" + excludes="**/package.html" + debug="${maven.compile.debug}" + deprecation="${maven.compile.deprecation}" + optimize="${maven.compile.optimize}"> + + <src> + <pathelement path="${maven.src.dir}/api"/> + </src> + </javac> + + <mkdir dir="${maven.build.dir}/classes"/> + <copy todir="${maven.build.dir}/classes"> + <fileset dir="${maven.build.dir}/api-classes"/> + </copy> + <mkdir dir="${maven.build.dir}/src"/> + <copy todir="${maven.build.dir}/src"> + <fileset dir="${maven.src.dir}/api"/> + </copy> </target> - <target name="excalibur:jar" depends="excalibur:init,excalibur:warning"> + <target name="avalon:impl-compile" if="impl.src.present" + depends="avalon:init,avalon:api-compile"> <echo> ======================================================================= - Compiling Sources + Compiling Implementation Sources ======================================================================= </echo> <mkdir dir="${maven.build.dir}"/> - <mkdir dir="${maven.build.dir}/classes"/> + <mkdir dir="${maven.build.dir}/impl-classes"/> + <mkdir dir="${maven.build.dir}/api-classes"/><!-- to ensure <classpath/> works --> <javac - destdir="${maven.build.dir}/classes" + destdir="${maven.build.dir}/impl-classes" excludes="**/package.html" debug="${maven.compile.debug}" deprecation="${maven.compile.deprecation}" optimize="${maven.compile.optimize}"> <src> - <pathelement path="${maven.src.dir}"/> + <pathelement path="${maven.src.dir}/impl"/> </src> + <classpath> + <pathelement path="${maven.build.dir}/api-classes"/> + </classpath> </javac> + <mkdir dir="${maven.build.dir}/classes"/> + <copy todir="${maven.build.dir}/classes"> + <fileset dir="${maven.build.dir}/impl-classes"/> + </copy> + <mkdir dir="${maven.build.dir}/src"/> + <copy todir="${maven.build.dir}/src"> + <fileset dir="${maven.src.dir}/impl"/> + </copy> + </target> + + <target name="avalon:test" if="test.src.present" + depends="avalon:init,avalon:api-compile,avalon:impl-compile,avalon:java-compile"> <echo> ======================================================================= Compiling Tests ====================================================================== </echo> <mkdir dir="${maven.build.dir}/test-classes"/> + <mkdir dir="${maven.build.dir}/classes"/><!-- to ensure <classpath/> works --> + <mkdir dir="${maven.build.dir}/api-classes"/><!-- to ensure <classpath/> works --> + <mkdir dir="${maven.build.dir}/impl-classes"/><!-- to ensure <classpath/> works --> <javac destdir="${maven.build.dir}/test-classes" excludes="**/package.html" @@ -117,7 +291,9 @@ <pathelement path="${maven.src.dir}/test"/> </src> <classpath> - <pathelement path="${maven.build.dir}/classes"/> + <pathelement path="${maven.build.dir}/classes"/> + <pathelement path="${maven.build.dir}/api-classes"/> + <pathelement path="${maven.build.dir}/impl-classes"/> </classpath> </javac> @@ -141,13 +317,14 @@ <formatter type="xml"/> <formatter type="plain" usefile="${maven.junit.usefile}"/> <classpath> - <pathelement location="${maven.build.dir}/classes"/> - <pathelement location="${maven.build.dir}/test-classes"/> + <pathelement location="${maven.build.dir}/classes"/> + <pathelement path="${maven.build.dir}/api-classes"/> + <pathelement path="${maven.build.dir}/impl-classes"/> + <pathelement location="${maven.build.dir}/test-classes"/> </classpath> - <batchtest todir="${maven.build.dir}/test-classes"> + <batchtest todir="${maven.build.dir}/test-reports"> <fileset dir="${maven.src.dir}/test"> <include name="**/*TestCase.java"/> - <!-- KEEP ALL ABSTRACT TESTS FROM BEING RUN! --> <exclude name="**/*Abstract*"/> </fileset> </batchtest> @@ -155,23 +332,72 @@ <echo> ======================================================================= + Generating test reports +======================================================================= + </echo> + + <!-- note: this completely deviates from the approach maven + takes to generating the junit reports and stores them + in a different location. --> + + <mkdir dir="${maven.build.dir}/docs/junitreports"/> + + <junitreport todir="${maven.build.dir}/docs/junitreports"> + <fileset dir="${maven.build.dir}/test-reports"> + <include name="TEST-*.xml"/> + </fileset> + <report format="frames" todir="${maven.build.dir}/docs/junitreports"/> + </junitreport> + + </target> + + <target name="avalon:regular-jar" + depends="avalon:init,avalon:api-compile,avalon:impl-compile,avalon:java-compile"> + <echo> +======================================================================= Building jar ======================================================================= </echo> + <mkdir dir="${maven.build.dir}/classes"/> <jar destfile="${maven.build.dir}/${project.name}-${project.version}.jar" basedir="${maven.build.dir}/classes"/> </target> - <target name="excalibur:javadocs" depends="excalibur:init,excalibur:warning,excalibur:jar"> + <target name="avalon:api-jar" + depends="avalon:init,avalon:api-compile"> + <echo> +======================================================================= + Building API jar +======================================================================= + </echo> + <mkdir dir="${maven.build.dir}/api-classes"/> + <jar destfile="${maven.build.dir}/${project.name}-${project.version}-api.jar" basedir="${maven.build.dir}/api-classes"/> + </target> + + <target name="avalon:impl-jar" + depends="avalon:init,avalon:impl-compile"> + <echo> +======================================================================= + Building Implementation jar +======================================================================= + </echo> + <mkdir dir="${maven.build.dir}/impl-classes"/> + <jar destfile="${maven.build.dir}/${project.name}-${project.version}-impl.jar" basedir="${maven.build.dir}/impl-classes"/> + </target> + + <target name="avalon:javadocs" depends="avalon:init,avalon:jar"> <mkdir dir="${maven.build.dir}/docs"/> <mkdir dir="${maven.build.dir}/docs/apidocs"/> + <mkdir dir="${maven.build.dir}/classes"/><!-- to ensure <classpath/> works --> + <mkdir dir="${maven.build.dir}/api-classes"/><!-- to ensure <classpath/> works --> + <mkdir dir="${maven.build.dir}/impl-classes"/><!-- to ensure <classpath/> works --> <property name="copyright" value="Copyright &copy; ${project.copyright.year} Apache Software Foundation. All Rights Reserved." /> - <property name="title" value="Avalon-Excalibur ${project.name} API"/> + <property name="title" value="Avalon ${project.name} API"/> <javadoc - sourcepath="${maven.src.dir}/java" + sourcepath="${maven.build.dir}/src" packagenames="org.apache.*" destdir="${maven.build.dir}/docs/apidocs" windowtitle="${title}" @@ -182,8 +408,63 @@ <link href="http://avalon.apache.org/framework/api/"/> <classpath> <path location="${maven.build.dir}/classes"/> + <path location="${maven.build.dir}/api-classes"/> + <path location="${maven.build.dir}/impl-classes"/> </classpath> </javadoc> </target> -</project> + + <target name="avalon:distclean"> + <delete dir="${maven.build.dir}/${project.name}-${project.version}"/> + <delete dir="${maven.build.dir}/dist"/> + </target> + + <target name="avalon:dist" depends="avalon:init,avalon:distclean,avalon:jar,avalon:javadocs"> + <mkdir dir="${maven.build.dir}"/> + <mkdir dir="${maven.build.dir}/${project.name}-${project.version}"/> + <mkdir dir="${maven.build.dir}/dist"/> + + <echo> +======================================================================= + Building Binary Distribution +======================================================================= + </echo> + <mkdir dir="${maven.build.dir}/${project.name}-${project.version}/bin"/> + <copy todir="${maven.build.dir}/${project.name}-${project.version}/bin"> + <fileset dir="${maven.build.dir}"> + <include name="*.jar"/> + <include name="*.txt"/> + <include name="*.zip"/> + <include name="docs"/> + </fileset> + </copy> + <zip destfile="${maven.build.dir}/dist/${project.name}-${project.version}-bin.zip"> + <zipfileset dir="${maven.build.dir}/${project.name}-${project.version}/bin" + prefix="${project.name}-${project.version}"/> + </zip> + + <echo> +======================================================================= + Building Source Distribution +======================================================================= + </echo> + <mkdir dir="${maven.build.dir}/${project.name}-${project.version}/src"/> + <copy todir="${maven.build.dir}/${project.name}-${project.version}/src"> + <fileset dir="${maven.src.dir}"/> + <fileset dir="${maven.build.dir}"> + <include name="*.txt"/> + </fileset> + <fileset dir="${basedir}"> + <include name="README*"/> + <include name="LICENSE*"/> + <include name="maven.*"/> + <include name="project.*"/> + </fileset> + </copy> + <zip destfile="${maven.build.dir}/dist/${project.name}-${project.version}-src.zip"> + <zipfileset dir="${maven.build.dir}/${project.name}-${project.version}/src" + prefix="${project.name}-${project.version}"/> + </zip> + </target> +</project> \ No newline at end of file
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]