diff options
Diffstat (limited to 'dev-java/oscore/files/osbuild.xml')
-rw-r--r-- | dev-java/oscore/files/osbuild.xml | 383 |
1 files changed, 383 insertions, 0 deletions
diff --git a/dev-java/oscore/files/osbuild.xml b/dev-java/oscore/files/osbuild.xml new file mode 100644 index 000000000000..95de72cadc9d --- /dev/null +++ b/dev-java/oscore/files/osbuild.xml @@ -0,0 +1,383 @@ +<project name="common" default="jar" basedir="."> + <!-- + OpenSymphony Common Build + ========================= + TODO (Introduction) + + Layout + ========================= + TODO + + Overriding + ========================= + TODO + Example: <target name="compile" depends="myPreCompile,common.compile,myPostCompile"/> + + --> + <!-- NOTE: this property is purely here to make a clear distinction in IDEA where the common build is --> + <property name="------common-properties-below------" value="Common properties below:"/> + + <property name="compile.version" value="1.3"/> + <property name="test.compile.version" value="1.3"/> + + <dirname property="common.dir" file="${ant.file.common}"/> + <property file="build.properties"/> + <property file="release.properties"/> + <property file="ivyrep.properties"/> + + <property name="lib" location="lib"/> + <property name="lib.core" value="${lib}/core"/> + <property name="lib.build" value="${lib}/build"/> + <property name="lib.optional" value="${lib}/optional"/> + + <property name="src" location="src"/> + <property name="src.java" value="${src}/java"/> + + <property name="test" value="${src}/test"/> + <property name="src.test" value="${test}/java"/> + + <property name="build" location="build"/> + <property name="build.test" value="${build}/test"/> + <property name="build.java-test" value="${build}/java-test"/> + <property name="build.java" value="${build}/java"/> + <property name="build.clover" value="${build}/clover"/> + <property name="dist" location="dist"/> + + <property name="docs" location="docs"/> + <property name="docs.packages" value="com.opensymphony.*"/> + + <property name="jar.manifest" value="${common.dir}/EMPTY.MF"/> + <property name="jar.excludes" value=""/> + + <property name="testcase" value="*"/> + <patternset id="src.test.pattern"> + <exclude name="**/Abstract*.java"/> + <include name="**/${testcase}Test.java"/> + <include name="**/${testcase}TestCase.java"/> + </patternset> + + <path id="cp"> + <fileset dir="lib"> + <include name="**/*.jar"/> + <include name="**/*.zip"/> + <exclude name="**/jalopy/**"/> + </fileset> + </path> + + <path id="junit.cp"> + <pathelement location="${build.test}"/> + <pathelement location="${build.java-test}"/> + <path refid="cp"/> + </path> + + <available property="junit.available" classname="junit.framework.TestCase"/> + <available property="clover.available" classname="org.apache.tools.ant.taskdefs.CloverCompilerAdapter"/> + + <target name="init" depends="init-anthill, init-standalone"> + <tstamp/> + </target> + + <!-- in Anthill, the docs should be the Intranet copyDir --> + <target name="init-anthill" if="anthill.copyDir"> + <property name="dist.docs" value="${anthill.copyDir}"/> + </target> + + <!-- when building Standalone, the docs should be the normal place --> + <target name="init-standalone" unless="anthill.copyDir"> + <property name="dist.docs" value="${dist}/docs"/> + </target> + + <target name="junit-check" depends="init" unless="junit.available"> + <fail message="Cannot run test cases. Please copy lib/build/junit-3.8.1.jar to ${ant.home}/lib"/> + </target> + + <target name="clover-check" depends="init" unless="clover.available"> + <fail message="Cannot run coverage tests. Please copy lib/build/clover.jar and lib/build/clover.license (if it exists) to ${ant.home}/lib"/> + </target> + + <target name="clean" depends="init"> + <delete dir="${build}"/> + <delete dir="${dist}"/> + </target> + + <target name="precompile"/> + + <macrodef name="compile"> + <attribute name="srcdir"/> + <attribute name="destdir"/> + <attribute name="classpath" default=""/> + <attribute name="classpathref" default="cp"/> + <attribute name="excludes" default=""/> + <attribute name="source" default="${compile.version}"/> + <attribute name="target" default="${compile.version}"/> + <sequential> + <mkdir dir="@{destdir}"/> + <javac srcdir="@{srcdir}" destdir="@{destdir}" classpath="@{classpath}" classpathref="@{classpathref}" + debug="on" source="@{source}" target="@{target}"/> + <copy filtering="no" todir="@{destdir}"> + <fileset dir="@{srcdir}"> + <exclude name="**/*.java"/> + <exclude name="**/package.html"/> + </fileset> + </copy> + </sequential> + </macrodef> + + <target name="compile" depends="init,precompile" description="compile project"> + <compile srcdir="${src.java}" destdir="${build.java}"/> + </target> + + <target name="jar" depends="compile" description="build the project jar file"> + <mkdir dir="${build}"/> + + <jar basedir="${build.java}" excludes="${jar.excludes}" jarfile="${build}/${name}-${version}.jar" + manifest="${jar.manifest}"> + <manifest> + <attribute name="Implementation-Title" value="${fullname}"/> + <attribute name="Implementation-Version" value="${version}"/> + <attribute name="Implementation-Vendor" value="OpenSymphony"/> + </manifest> + </jar> + <!-- <jar basedir="${src.java}" jarfile="${build}/${name}-${version}-src.jar"> + <manifest> + <attribute name="Implementation-Title" value="${fullname}" /> + <attribute name="Implementation-Version" value="${version}" /> + <attribute name="Implementation-Vendor" value="OpenSymphony" /> + </manifest> + </jar> --> + </target> + + <target name="src-jar" depends="init" description="build a jar of the project source code"> + <mkdir dir="${build}"/> + <jar basedir="${src.java}" jarfile="${build}/${name}-${version}-src.jar"> + <manifest> + <attribute name="Implementation-Title" value="${fullname}"/> + <attribute name="Implementation-Version" value="${version}"/> + <attribute name="Implementation-Vendor" value="OpenSymphony"/> + </manifest> + </jar> + </target> + + <target name="test-compile" unless="skip.tests"> + <compile srcdir="${src.test}" destdir="${build.test}" classpath="${build.java}" + source="${test.compile.version}" target="${test.compile.version}"/> + + <taskdef resource="clovertasks"/> + <taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask"/> + + <mkdir dir="${build.clover}"/> + <clover-setup initString="${build.clover}/coverage.db"> + <files> + <exclude name="${src.test}/**/*.java"/> + </files> + </clover-setup> + + <compile srcdir="${src.java}" destdir="${build.java-test}"/> + </target> + + <target name="test" depends="junit-check, clover-check, compile, test-compile" description="run tests" + unless="skip.tests"> + <run-junit /> + </target> + + <macrodef name="run-junit"> + <attribute name="classpathref" default="junit.cp" /> + <sequential> + <mkdir dir="${dist.docs}/junit"/> + <junit haltonfailure="no" haltonerror="yes" fork="yes" forkmode="once" failureproperty="test.failure"> + <jvmarg value="-Djava.awt.headless=true"/> + <jvmarg value="-Dorg.xml.sax.driver=org.apache.crimson.parser.XMLReaderImpl"/> + <classpath> + <path refid="@{classpathref}"/> + </classpath> + + <formatter type="plain" useFile="false"/> + <formatter type="xml"/> + + <batchtest todir="${dist.docs}/junit"> + <fileset dir="${src.test}"> + <patternset refid="src.test.pattern"/> + </fileset> + </batchtest> + </junit> + </sequential> + </macrodef> + + <target name="javadocs" description="generate javadocs" depends="init"> + <mkdir dir="${dist.docs}/api"/> + <javadoc sourcepath="${src.java}" + destdir="${dist.docs}/api" + packagenames="${docs.packages}" + classpathref="cp" + author="true" + version="true" + overview="${src.java}/overview.html" + windowTitle="${fullname} API - ${version}" + doctitle="${fullname} API (${version})" + footer="<a href="http://www.opensymphony.com/${name}/" target="_top">${fullname} Project Page</a>" + use="true" + verbose="false"> + <link href="http://java.sun.com/j2se/${compile.version}/docs/api/"/> + <link href="http://java.sun.com/j2ee/${compile.version}/docs/api/"/> + </javadoc> + <!-- <copy overwrite="yes" file="${docs}/main.css" tofile="${docs}/api/stylesheet.css"/> --> + </target> + + <target name="docs.impl"> + <copy todir="${dist.docs}"> + <fileset dir="${docs}"/> + </copy> + </target> + + <target name="reports" depends="junit.report, clover.report, javadocs" + description="generate javadocs and junit and coverage reports"/> + + <target name="docs" depends="reports, docs.impl"/> + + <target name="clover.report" depends="test" description="generate coverage reports" unless="skip.tests"> + <clover-report> + <current outfile="${dist.docs}/clover"> + <format type="html"/> + </current> + </clover-report> + </target> + + <target name="clover.historical" depends="clover.report" description="generate coverage historical reports" + unless="skip.tests"> + <clover-historypoint historyDir="${build.clover}"/> + + <clover-report> + <historical outfile="${dist.docs}/clover" historyDir="${build.clover}"> + <format type="html"/> + </historical> + </clover-report> + </target> + + <target name="junit.report" depends="test" description="generate junit reports" unless="skip.tests"> + <junitreport todir="${dist.docs}/junit"> + <fileset dir="${dist.docs}/junit"> + <include name="TEST-*.xml"/> + </fileset> + <report format="frames" todir="${dist.docs}/junit"/> + </junitreport> + + <!-- we fail here (instead of in the test target) so that the reports get generated first) --> + <fail if="test.failure" message="Tests did not all pass, failing!"/> + </target> + + <target name="predist"/> + + <target name="predist.zip"/> + + <target name="dist" depends="jar, docs, predist" description="generate distribution zip file"> + <copy todir="${dist}"> + <fileset dir="${build}"> + <include name="*.jar"/> + </fileset> + </copy> + + <copy todir="${dist}/src"> + <fileset dir="${src}"/> + </copy> + + <mkdir dir="${dist}/lib"/> + <copy todir="${dist}/lib"> + <fileset dir="${lib}"> + <exclude name="**/no_dist/**"/> + </fileset> + </copy> + + <copy todir="${dist}"> + <fileset dir="${basedir}"> + <include name="*build.*"/> + <include name="readme.txt"/> + <include name="license.txt"/> + </fileset> + </copy> + + <!-- give a chance for project builds to do more before the zip is made. --> + <antcall target="predist.zip"/> + + <zip zipfile="${build}/${name}-${version}.zip" basedir="${dist}"> + <exclude name="docs/clover/**/*"/> + <exclude name="docs/junit/**/*"/> + </zip> + </target> + + <target name="website" depends="javadocs, docs.impl"/> + + <target name="ivyrep" depends="jar"> + <tstamp> + <format property="TIME" pattern="yyyyMMddHHmmss"/> + </tstamp> + + <!-- make sure we have the latest --> + <echo>svn update</echo> + <exec executable="svn"> + <arg value="update"/> + <arg line="${ivyrep.path}/opensymphony/${name}"/> + </exec> + + <!-- delete the old timestamped builds and commit --> + <fileset dir="${ivyrep.path}/opensymphony/${name}" id="filesref"> + <include name="${name}-${version}-*"/> + <include name="ivy-${version}-*"/> + </fileset> + <pathconvert property="files" refid="filesref" pathsep=" "/> + <echo>svn delete: ${files}</echo> + <exec executable="svn"> + <arg value="delete"/> + <arg line="${files}"/> + </exec> + + <!-- copy over the new build --> + <copy file="${build}/${name}-${version}.jar" + tofile="${ivyrep.path}/opensymphony/${name}/${name}-${version}-${TIME}.jar"/> + <echo>svn add (jar)</echo> + <exec executable="svn"> + <arg value="add"/> + <arg value="${ivyrep.path}/opensymphony/${name}/${name}-${version}-${TIME}.jar"/> + </exec> + + <antcall target="ivyrep.copy-ivy"/> + <exec executable="svn"> + <arg value="add"/> + <arg value="${ivyrep.path}/opensymphony/${name}/ivy-${version}-${TIME}.xml"/> + </exec> + + <!-- now commit everything --> + <echo>svn commit</echo> + <exec executable="svn"> + <arg value="commit"/> + <arg value="--username"/> + <arg value="${ivyrep.username}"/> + <arg value="--password"/> + <arg value="${ivyrep.password}"/> + <arg value="--non-interactive"/> + <arg value="-m"/> + <arg value="automatic commit"/> + <arg value="${ivyrep.path}/opensymphony/${name}"/> + </exec> + </target> + + <target name="ivyrep.copy-ivy"> + <!-- + Note: Default implementation does not use Ivy itself to generate these files. + However, Ivy is really the best way to generate these, so projects that + do use Ivy should override this target like so: + + <ivy-deliver deliverpattern="${ivyrep.path}/opensymphony/${name}/[artifact]-[revision].[ext]" + pubrevision="${version}-${TIME}" pubdate="${TIME}"/> + + Over time as more projects adopt Ivy, this may become built in to the + common build. + --> + <copy file="ivy.xml" tofile="${ivyrep.path}/opensymphony/${name}/ivy-${version}-${TIME}.xml"> + <filterset id="ivy.filter"> + <filter token="VERSION" value="${version}-${TIME}"/> + <filter token="STATUS" value="${status}"/> + <filter token="PUBLICATION" value="${TIME}"/> + </filterset> + </copy> + </target> +</project> |