blob: ecfa47b8cc6c97dbfcc28c4bd93566febc37e9a3 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<project name="build-jetty-server" default="precommit" xmlns:ivy="antlib:org.apache.ivy.ant">
<path id="bundles">
<pathelement location="../org.eclipse.virgo.jetty.sample.web"/>
<pathelement location="../org.eclipse.virgo.jetty.support"/>
<pathelement location="../org.eclipse.virgo.jetty.web"/>
</path>
<property file="${basedir}/../build.properties"/>
<property file="${basedir}/../build.versions"/>
<import file="${basedir}/../virgo-build/multi-bundle/default.xml"/>
<target name="precommit" depends="clean, clean-integration, package, smoke-test"
description="Performs a CI server-like build, should be run prior to performing a Git push"/>
<target name="fetch-kernel">
<mkdir dir="${target.dir}"/>
<condition property="dependancy.folder" value="milestone" else="${adjusted.release.type}">
<or>
<contains string="${org.eclipse.virgo.kernel}" substring=".M"/>
<contains string="${org.eclipse.virgo.kernel}" substring=".RC"/>
</or>
</condition>
<condition property="dependancy.folder" value="release" else="${adjusted.release.type}">
<contains string="${org.eclipse.virgo.kernel}" substring=".RELEASE"/>
</condition>
<get src="http://build.eclipse.org/rt/virgo/zips/${dependancy.folder}/VK/${org.eclipse.virgo.kernel}/virgo-kernel-${org.eclipse.virgo.kernel}.zip"
dest="${target.dir}/virgo-kernel-${org.eclipse.virgo.kernel}.zip"
usetimestamp="true" />
<echo message="Fetched the Kernel zip to ${target.dir}/virgo-kernel-${org.eclipse.virgo.kernel}.zip"/>
</target>
<target name="package" depends="fetch-kernel">
<delete dir="${package.output.dir}" quiet="true"/>
<mkdir dir="${package.output.dir}"/>
<property name="kernel.stage.file" value=""/>
<property name="repository.dir" value="${package.output.dir}/repository"/>
<property name="repository.ext" value="${repository.dir}/ext"/>
<property name="repository.usr" value="${repository.dir}/usr"/>
<unzip src="${target.dir}/virgo-kernel-${org.eclipse.virgo.kernel}.zip" dest="${package.output.dir}">
<globmapper from="virgo-kernel-${org.eclipse.virgo.kernel}/*" to="*"/>
</unzip>
<antcall target="package.bin"/>
<antcall target="package.config"/>
<antcall target="package.docs"/>
<antcall target="package.lib"/>
<antcall target="package.pickup"/>
<antcall target="package.repository"/>
<antcall target="package.resources"/>
<antcall target="package.jetty"/>
<mkdir dir="${package.output.dir}/work"/>
<mkdir dir="${repository.usr}"/>
<mkdir dir="${artifacts.dir}"/>
<zip destfile="${package.output.file}">
<zipfileset dir="${package.dir}" includes="${package.basename}/bin/*.sh" filemode="755"/>
<zipfileset dir="${package.dir}" includes="${package.basename}/config/org.eclipse.virgo.kernel.jmxremote.access.properties" filemode="600"/>
<zipfileset dir="${package.dir}">
<exclude name="${package.basename}/bin/*.sh"/>
<exclude name="${package.basename}/config/org.eclipse.virgo.kernel.jmxremote.access.properties"/>
</zipfileset>
</zip>
</target>
<target name="package.bin">
<chmod perm="755">
<fileset dir="${package.output.dir}/bin">
<include name="*.sh"/>
</fileset>
</chmod>
</target>
<target name="package.config">
<copy todir="${package.output.dir}/config" failonerror="false" overwrite="true">
<fileset dir="${basedir}/config"/>
</copy>
<chmod perm="600">
<fileset dir="${package.output.dir}/config">
<include name="org.eclipse.virgo.kernel.jmxremote.access.properties"/>
</fileset>
</chmod>
<replaceregexp match="# osgi\.console=2401"
replace="osgi.console=2401" flags="s"
file="${package.output.dir}/config/org.eclipse.virgo.kernel.userregion.properties"/>
<replaceregexp match="initialArtifacts =.*\.springdm"
replace="initialArtifacts=repository:plan/org.eclipse.virgo.kernel.userregion.springdm, repository:plan/org.eclipse.virgo.jetty.web" flags="s"
file="${package.output.dir}/config/org.eclipse.virgo.kernel.userregion.properties"/>
<replaceregexp match="virgo-kernel" replace="virgo-jetty-server" flags="g"
file="${package.output.dir}/config/serviceability.xml"/>
</target>
<target name="package.docs" depends="ivy.init">
<ivy:resolve resolveId="copy.path" file="${basedir}/docs-ivy.xml" transitive="false" conf="docs"/>
<ivy:retrieve resolveId="copy.path" pattern="${basedir}/target/docs/[artifact]-[revision].[ext]" conf="docs" type="zip, pdf"/>
<copy todir="${package.output.dir}/docs/user-guide/pdf" flatten="true">
<fileset dir="${basedir}/target/docs">
<include name="**/virgo-user-guide*.pdf"/>
</fileset>
</copy>
<copy todir="${package.output.dir}/docs/programmer-guide/pdf" flatten="true">
<fileset dir="${basedir}/target/docs">
<include name="**/virgo-programmer-guide*.pdf"/>
</fileset>
</copy>
<unzip dest="${package.output.dir}/docs/user-guide">
<fileset dir="${basedir}/target/docs">
<include name="**/virgo-user-guide*.zip"/>
</fileset>
</unzip>
<unzip dest="${package.output.dir}/docs/programmer-guide">
<fileset dir="${basedir}/target/docs">
<include name="**/virgo-programmer-guide*.zip"/>
</fileset>
</unzip>
</target>
<target name="package.lib">
<echo file="${package.output.dir}/lib/.version" append="true"
message="virgo.server.version=${bundle.version}&#xa;"/>
<replaceregexp match="virgo-kernel" replace="virgo-server" flags="g"
file="${package.output.dir}/lib/java6-server.profile"/>
</target>
<target name="package.pickup" depends="ivy.init">
<ivy:resolve resolveId="copy.path" file="${basedir}/pickup-ivy.xml" transitive="true"/>
<ivy:retrieve resolveId="copy.path" pattern="${package.output.dir}/pickup/[artifact]-[revision].[ext]" type="jar, war, wab" conf="pickup"/>
<ivy:retrieve resolveId="copy.path" pattern="${package.output.dir}/pickup/[artifact]-[revision].[ext]" type="plan" conf="pickup-plan"/>
<ivy:retrieve resolveId="copy.path" pattern="${repository.ext}/[artifact]-[revision].[ext]" type="jar, war, wab" conf="pickup-plan"/>
</target>
<target name="package.repository" depends="ivy.init">
<ivy:resolve resolveId="copy.path" file="${basedir}/repository-ivy.xml" transitive="false"/>
<ivy:retrieve resolveId="copy.path" pattern="${repository.ext}/[artifact]-[revision].[ext]" conf="ext" type="library,jar,plan"/>
<ivy:resolve resolveId="copy.path" file="${basedir}/repository-ivy.xml" transitive="true"/>
<ivy:retrieve resolveId="copy.path" pattern="${repository.ext}/[artifact]-[revision].[ext]" conf="transitive" type="library,jar,plan" />
<copy todir="${repository.ext}" failonerror="false">
<fileset dir="${basedir}/jettybundles"/>
</copy>
</target>
<target name="package.resources">
<move file="${package.output.dir}/About.html" tofile="${package.output.dir}/AboutKernel.html"/>
<copy todir="${package.output.dir}" failonerror="false">
<fileset dir="${basedir}/resources"/>
</copy>
</target>
<target name="package.jetty">
<mkdir dir="${package.output.dir}/jetty"/>
<copy todir="${package.output.dir}/jetty" failonerror="false">
<fileset dir="${basedir}/jetty"/>
</copy>
<!-- \ must be double escaped \\\\ and new lines must be given with the ascii code thus the strange chars-->
<replaceregexp match="# parse the standard arguments"
replace="# parse the standard arguments &#10; JETTY_HOME=$KERNEL_HOME/jetty" flags="m"
file="${package.output.dir}/bin/dmk.sh" />
<replaceregexp match="-Djava.io.tmpdir"
replace="-Djetty.homeexport \\\\&#10; -Djetty.home=$JETTY_HOME \\\\&#10; -Djava.io.tmpdir" flags="m"
file="${package.output.dir}/bin/dmk.sh" />
<replaceregexp match='set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Djava.io.tmpdir="%TMP_DIR%"'
replace='set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Djetty.homeexport&#10; set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Djetty.home="%KERNEL_HOME%\\\\jetty"&#10; set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Djava.io.tmpdir="%TMP_DIR%"' flags="m"
file="${package.output.dir}/bin/dmk.bat" />
<chmod file="${package.output.dir}/bin/dmk.sh" perm="755" />
</target>
<target name="smoke-test" description="Runs a smoke test on the packaged build">
<path id="smoke.test.bundles">
<pathelement location="${basedir}/../org.eclipse.virgo.jetty.smoketest" />
</path>
<antcall target="test.pre"/>
<all-bundles target="test-package" buildpathRef="smoke.test.bundles">
<property name="package.output.file" value="${package.output.file}"/>
<property name="package.basename" value="${package.basename}"/>
<property name="test-results.output.dir" value="${test-results.output.dir}"/>
</all-bundles>
<antcall target="test.post"/>
</target>
</project>