summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-java/oscore/files/osbuild.xml')
-rw-r--r--dev-java/oscore/files/osbuild.xml383
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="&lt;a href=&quot;http://www.opensymphony.com/${name}/&quot; target=&quot;_top&quot;&gt;${fullname} Project Page&lt;/a&gt;"
+ 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>