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]