diff options
author | Petter Holmström <petter.holmstrom@itmill.com> | 2009-11-10 06:24:44 +0000 |
---|---|---|
committer | Petter Holmström <petter.holmstrom@itmill.com> | 2009-11-10 06:24:44 +0000 |
commit | 4023ac28e9047ec2495d0a96159383ef0e276dc0 (patch) | |
tree | 322ad3c1db5b829e06445b3385028134db184c13 | |
parent | f6fe5b170be75a7817080a6f8d05365dd8a24c6e (diff) | |
download | vaadin-framework-4023ac28e9047ec2495d0a96159383ef0e276dc0.tar.gz vaadin-framework-4023ac28e9047ec2495d0a96159383ef0e276dc0.zip |
Updated build script
svn changeset:9691/svn branch:portlet_2.0
-rw-r--r-- | build/build.xml | 1762 |
1 files changed, 1405 insertions, 357 deletions
diff --git a/build/build.xml b/build/build.xml index e19f6ef8a5..59f5379574 100644 --- a/build/build.xml +++ b/build/build.xml @@ -1,399 +1,1447 @@ <?xml version="1.0"?> -<project name="IT Mill Toolkit" basedir="../" default="package"> +<project xmlns:antcontrib="antlib:net.sf.antcontrib" + xmlns:artifact="antlib:org.apache.maven.artifact.ant" + name="Vaadin" + basedir="../" default="package-all"> - <!-- Package creation - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- Package creation - - - - - - - - - - - - - - - - - - - - - - - - - - <target name="package" depends="clean-all,libs,themes,demo,docs,license" - description="Build public release"> - <zip zipfile="build/result/${package-file-name}"> - <fileset dir="build/result"> - <patternset> - <include name="${product-file}-${version}/**" /> - </patternset> - </fileset> - </zip> - </target> + When creating release use only "package-*" targets: + package-all + * creates four release packages for three three platforms (below) + + package-windows + * vaadin-windows-<version>.zip + + package-linux + * vaadin-linux-<version>.tar.bz2 + + package-mac + * vaadin-mac-<version>.tar.gz + * vaadin-mac-<version>.dmg - <!-- As release, but no javadoc or docbook tasks --> - <target name="package-without-documentation" - depends="clean-all,libs,themes,demo,package-docs,license" - description="Build testing package without javadocs or manual"> - <zip zipfile="build/result/TESTING-${package-file-name}"> - <fileset dir="build/result"> - <patternset> - <include name="${product-file}-${version}/**" /> - </patternset> - </fileset> - </zip> - </target> + In addition, the OOPHM package has the following target for building: + package-oophm + * vaadin-oophm-<version>.zip - <!-- Initialization - - - - - - - - - - - - - - - - - - - - - - - - --> + NOTE: This build script requires directories named ${gwt-dir}/(linux|windows|mac) . + See build.properties to define path where your gwt installation is located. + You must unpack platform specific binaries under linux, windows and mac directories. + ${gwt-dir}/${platform} (linux|windows|mac) are used for + a) compile WebContent/VAADIN/widgetsets + b) creating platform specific release ZIP/TGZ packages. + + NOTE FOR USING OOPHM: + * To build with oophm define the property platform=oophm + * In Eclipse this is done in External Tools Configurations -> properties + * If you are using windows you must use JDK 1.6 and not 1.5 + * To enable building with JDK 1.6, define ignoreversion=1 + --> - <target name="init"> + <!-- + Call one of package-* targets unless you understand what you are doing + --> + <target name="package-all" depends="clean-all, package-init, init, build, docs, internal-package-mac, internal-package-windows, internal-package-linux, internal-package-war, internal-package-liferay" description="Build public packages for Windows, Linux and Mac platforms."> + </target> - <!-- Create result dir unless already exists --> - <mkdir dir="build/result" /> + <target name="package-mac" depends="clean-result, package-init, init, build, docs, internal-package-mac" description="Create public tar.gz package for Mac."> + </target> - <property file="build/VERSION" /> - <property name="product-file" value="itmill-toolkit" /> - <property name="product-name" value="IT Mill Toolkit" /> - <property name="toolkit-package" value="com/itmill/toolkit" /> + <target name="package-windows" depends="clean-result, package-init, init, build, docs, internal-package-windows" description="Create public ZIP package for Windows."> + </target> - <property file="build/html-style.properties" /> + <target name="package-linux" depends="clean-result, package-init, init, build, docs, internal-package-linux" description="Create public tar.bz2 package for Linux."> + </target> - <!-- Destination files --> - <property name="package-file-name" value="${product-file}-${version}.zip" /> - <property name="lib-bin-jar-name" value="${product-file}-${version}.jar" /> - <property name="demo-lib-jar-name" value="${product-file}-demo-${version}.jar" /> - <property name="lib-src-jar-name" value="${product-file}-src-${version}.jar" /> - <property name="themes-jar-name" value="${product-file}-themes-${version}.jar" /> - <property name="demo-war-name" value="${product-file}-demo-${version}.war" /> + <target name="package-oophm" depends="clean-result, package-init, init-oophm, build, docs, internal-package-oophm" description="Create public tar.gz package for OOPHM."> + </target> - <echo message="Prepared to build ${product-file} version ${version} packages" /> + <target name="package-jar" depends="clean-result, package-init, init, libs" description="Create vaadin-x.y.z.jar file."> + </target> - <!-- Output directory --> - <property name="output-dir" value="build/result/${product-file}-${version}" /> - <mkdir dir="${output-dir}" /> + <target name="package-war" depends="clean-result, package-init, init, build, docs, internal-package-linux, internal-package-war"> + </target> - <!-- Create Output Directory Hierarchy --> - <mkdir dir="${output-dir}/doc/manual" /> - <mkdir dir="${output-dir}/doc/api" /> - <mkdir dir="${output-dir}/lib" /> - <mkdir dir="${output-dir}/demo" /> + <target name="package-liferay-zip" depends="clean-result, package-init, init, build, docs, internal-package-linux, internal-package-liferay"> + </target> - </target> + <target name="package-test" depends="clean-result, nightly-init, package-init, init, build, docs, internal-package-linux, nightly-publish"> + </target> - <!-- License - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - <target name="license" depends="init"> - <copy todir="${output-dir}/lib"> - <fileset dir="WebContent/WEB-INF"> - <exclude name="**/.svn" /> - <include name="itmill-toolkit-license.xml" /> - </fileset> - </copy> - </target> + <!-- ant contrib required for flow control (for loop, if, property override) --> + <!-- Note that we have to use a namespace to avoid clash when running sub-ant. --> + <taskdef uri="antlib:net.sf.antcontrib" resource="net/sf/antcontrib/antlib.xml"> + <classpath> + <pathelement location="build/lib/ant-contrib-1.0b3.jar" /> + </classpath> + </taskdef> - <!-- Themes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - <target name="themes" depends="init"> - - <copy todir="${output-dir}/lib/themes"> - <fileset dir="WebContent/WEB-INF/lib/themes"> - <exclude name="**/.svn" /> - <include name="corporate/**/*" /> - <include name="demo/**/*" /> - <include name="base/**/*" /> - </fileset> - </copy> - - <!-- Brakes CSS, do not use - <echo>CSS syntax check and optimizing.</echo> - <for param="file"> - <path> - <fileset dir="${output-dir}/lib/themes"> - <include name="**/*.css" /> - </fileset> - </path> - <sequential> - <echo>@{file}</echo> - <exec dir="build" executable="cmd.exe" os="Windows 2000, Windows XP" failonerror="true"> - <arg line="/c bin\csstidy-win.exe @{file} @{file}" /> - </exec> - <exec dir="build" executable="bin/csstidy-osx.sh" os="Mac OS X" failonerror="true"> - <arg line="@{file}" /> - </exec> - <exec dir="build" executable="bin/csstidy-linux.sh" os="Linux" failonerror="true"> - <arg line="@{file}" /> - </exec> - </sequential> - </for> - --> + <!-- ant contrib for Maven integration --> + <path id="maven-ant-tasks.classpath" path="build/lib/maven-ant-tasks-2.0.10.jar" /> + <typedef resource="org/apache/maven/artifact/ant/antlib.xml" + uri="antlib:org.apache.maven.artifact.ant" + classpathref="maven-ant-tasks.classpath" /> + + <!-- internal tests for packaging --> + + <target name="test-build" depends="clean-result, init, build" description="used for testing build.xml"> + </target> + + <target name="test-package" depends="init" description="used for testing build.xml"> + <echo>Creating package for Mac platform.</echo> + <antcontrib:var name="package-platform" value="mac" /> + <antcontrib:var name="eclipse-launch-vmargs" value="-XstartOnFirstThread -Xms128M -Xmx512M" /> + <antcall target="add-platform-specific-files" inheritAll="true" inheritRefs="true" /> + <delete file="${result-path}/eclipse-test" followsymlinks="false" /> + <exec executable="ln" failonerror="false"> + <arg line="-s" /> + <arg line="${output-dir}" /> + <arg line="${result-path}/eclipse-test" /> + </exec> + <!-- + <exec executable="ln" failonerror="false"> + <arg line="-s" /> + <arg line="${gwt-dir}/${package-platform}" /> + <arg line="${output-dir}/gwt" /> + </exec> + --> + <!-- + <antcall target="create-mac-diskimage" inheritAll="true" inheritRefs="true" /> + --> + </target> + + <!-- Clean results - - - - - - - - - - - - - - - - - - - - - - - - - --> + <target name="clean-result" depends=""> + <property file="build/build.properties" /> + + <!-- Clean build result directory. --> + <delete dir="${result-path}" includes="**/*" followsymlinks="false" defaultexcludes="false" includeemptydirs="true" failonerror="false"/> + </target> + + <!-- Clean checkout directory. --> + <target name="clean-checkout" depends=""> + <property file="build/build.properties" /> + + <delete dir="${checkout-path}" includes="**/*" followsymlinks="false" defaultexcludes="false" includeemptydirs="true" failonerror="false"/> + </target> + + <target name="clean-all" depends="clean-result, clean-checkout"> + </target> + + <!-- ================================================================== --> + <!-- Check versions. --> + <!-- ================================================================== --> + + <!-- Java compiler version. --> + <target name="check-java-version"> + <condition property="java.version.matches"> + <or> + <equals arg1="${ant.java.version}" arg2="1.5"/> + <isset property="ignoreversion"/> + </or> + </condition> + <fail unless="java.version.matches" message="Java version is ${ant.java.version}, but Vaadin must be compiled with genuine Java 1.5 compiler. Use -Dignoreversion=1 for ant to ignore the version check."/> + <echo>Java version is ${ant.java.version} as required.</echo> + </target> + + <!-- Check Servlet API version. --> + <!-- We must use Servlet API 2.3 to catch incompatibilities.. --> + <target name="check-servlet-version"> + <available classpathref="compile.classpath" classname="javax.servlet.Servlet" property="servlet.available"/> + <fail unless="servlet.available" message="Java Servlet API library is not available."/> + <echo>Java Servlet API is available.</echo> + + <available classpathref="compile.classpath" classname="javax.servlet.ServletRequestListener" property="servlet.version.is-2.4"/> + <fail if="servlet.version.is-2.4" message="Java Servlet API 2.4 or later detected. Vaadin must be compiled exactly with Servlet API 2.3."/> + <echo>Java Servlet API specification 2.3 used.</echo> + </target> + + <!-- ================================================================== --> + <!-- Initialization - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- ================================================================== --> + + <!-- Find out which platform we are in --> + <target name="init-platform"> + <antcontrib:if> + <contains string="${os.name}" substring="Windows" /> + <then> + <property name="platform" value="windows" /> + </then> + </antcontrib:if> + <antcontrib:if> + <equals arg1="${os.name}" arg2="Linux" /> + <then> + <property name="platform" value="linux" /> + </then> + </antcontrib:if> + <antcontrib:if> + <equals arg1="${os.name}" arg2="Mac OS X" /> + <then> + <property name="platform" value="mac" /> + </then> + </antcontrib:if> + </target> + + <target name="init-oophm-platform"><property name="platform" value="oophm" /></target> + <target name="init-oophm" depends="init-oophm-platform,init"></target> + + <!-- Called only when building installation packages. --> + <target name="package-init"> + </target> + + <target name="init" depends="check-java-version, init-platform"> + <property file="build/build.properties" /> + <property file="build/VERSION.properties" /> + <property file="build/GWT-VERSION.properties" /> + <property file="build/html-style.properties" /> + + <!-- Current timestamp in different formats. --> + <tstamp> + <format property="build.date" pattern="yyyy-MM-dd"/> + </tstamp> + <tstamp> + <format property="build.date.compact" pattern="yyyyMMdd"/> + </tstamp> + + <!-- Default full version name. --> + <!-- Nightly and other TeamCity builds will define their own. --> + <property name="version.full" value="${version}.dev-${build.date.compact}"/> + <echo>Base Version: ${version}</echo> + <echo>Full Version: ${version.full}</echo> + + <echo>Vaadin package is: ${toolkit-package}</echo> + + <!-- Create result dir unless already exists --> + <mkdir dir="${result-path}" /> + + <!-- required when compiling WebContent/VAADIN/widgetsets (and also Java server-side classes) --> + <property name="lib-gwt-dev" value="gwt-dev-${platform}.jar" /> + + <echo>We are on ${platform} platform (${os.name} ${os.version}), using ${gwt-dir}/${platform}/${lib-gwt-dev} (${gwt-version}).</echo> + + <!-- Destination files --> + <property name="lib-jar-name" value="${product-file}-${version.full}.jar" /> + + <echo message="Prepared to build ${product-file} version ${version.full} packages" /> + + <!-- Output directory --> + <property name="output-dir" value="${result-path}/${product-file}-${version.full}" /> + <mkdir dir="${output-dir}" /> + + <!-- Where widgetsets are written to. --> + <!-- When not building a package, widgetsets should be written to --> + <!-- WebContent/VAADIN/widgetsets, which needs to be set in --> + <!-- init-nonpackage target before calling this main init target. --> + <property name="widgetsets-output-dir" value="${output-dir}/WebContent/VAADIN/widgetsets" /> + + <!-- Create Output Directory Hierarchy --> + <mkdir dir="${output-dir}/WebContent" /> + <mkdir dir="${output-dir}/WebContent/demo" /> + <mkdir dir="${output-dir}/WebContent/docs" /> + <mkdir dir="${output-dir}/WebContent/docs/api" /> + <mkdir dir="${output-dir}/WebContent/docs/example-source" /> + <mkdir dir="${output-dir}/WebContent/WEB-INF" /> + <mkdir dir="${output-dir}/WebContent/WEB-INF/lib" /> + <mkdir dir="${output-dir}/WebContent/WEB-INF/classes" /> + + <!-- Construct classpath used by java and javadoc compilation --> + <path id="compile.classpath"> + <pathelement path="build/lib/servlet.jar" /> + <pathelement path="build/external/fileupload/classes" /> + <fileset dir="lib/core"> + <include name="**/*.jar"/> + <exclude name="**/servlet-api*.jar"/> + </fileset> + <fileset dir="lib/demo"> + <include name="**/*.jar"/> + </fileset> + <fileset dir="lib/tests"> + <include name="**/*.jar"/> + </fileset> + </path> + <path id="compile.classpath.server-side"> + <path refid="compile.classpath"/> + <pathelement path="${result-path}/gwt" /> + </path> + <path id="compile.classpath.client-side"> + <path refid="compile.classpath"/> + <pathelement path="${gwt-dir}/${platform}/gwt-user.jar" /> + <pathelement path="${gwt-dir}/${platform}/${lib-gwt-dev}" /> + </path> + + </target> + + <target name="internal-package-windows"> + <antcontrib:var name="package-platform" value="windows" /> + <echo>Creating package for ${package-platform} platform.</echo> + <antcontrib:var name="eclipse-launch-vmargs" value="-Xms256M -Xmx512M" /> + <antcall target="add-platform-specific-files" inheritAll="true" inheritRefs="true" /> + <zip zipfile="${result-path}/${product-file}-${package-platform}-${version.full}.zip"> + <zipfileset prefix="${product-file}-${package-platform}-${version.full}" dir="${result-path}/${product-file}-${version.full}"> + <patternset> + <include name="**/*" /> + </patternset> + </zipfileset> + <zipfileset prefix="${product-file}-${package-platform}-${version.full}/gwt" dir="${gwt-dir}/${package-platform}"> + <patternset> + <include name="**/*" /> + <exclude name="gwt/doc"/> + <exclude name="gwt/samples"/> + </patternset> + </zipfileset> + </zip> + </target> + + <target name="internal-package-linux"> + <antcontrib:var name="package-platform" value="linux" /> + <echo>Creating package for ${package-platform} platform.</echo> + <antcontrib:var name="eclipse-launch-vmargs" value="-Xms256M -Xmx512M" /> + <antcall target="add-platform-specific-files" inheritAll="true" inheritRefs="true" /> + <tar destfile="${result-path}/${product-file}-${package-platform}-${version.full}.tar.gz" compression="gzip" longfile="gnu"> + <!-- TODO use very slow but effective bzip2 + <tar destfile="${result-path}/${product-file}-${package-platform}-${version.full}.tar.bz2" compression="bzip2" longfile="gnu"> + --> + <tarfileset prefix="${product-file}-${package-platform}-${version.full}" dir="${result-path}/${product-file}-${version.full}"> + <patternset> + <include name="**/*" /> + </patternset> + </tarfileset> + <tarfileset prefix="${product-file}-${package-platform}-${version.full}/gwt" dir="${gwt-dir}/${package-platform}"> + <patternset> + <include name="**/*" /> + </patternset> + </tarfileset> + </tar> + + <!-- Only the Linux package is currently required for calculating these. --> + <!-- Notice that the differences comparison is conditional. --> + <antcall target="differences"/> + </target> + + <target name="internal-package-oophm"> + <antcontrib:var name="package-platform" value="oophm" /> + <echo>Creating package for ${package-platform} platform.</echo> + <antcontrib:var name="eclipse-launch-vmargs" value="-Xms256M -Xmx512M" /> + <antcall target="add-platform-specific-files" inheritAll="true" inheritRefs="true" /> + <zip zipfile="${result-path}/${product-file}-${package-platform}-${version.full}.zip"> + <zipfileset prefix="${product-file}-${package-platform}-${version.full}" dir="${result-path}/${product-file}-${version.full}"> + <patternset> + <include name="**/*" /> + </patternset> + </zipfileset> + <zipfileset prefix="${product-file}-${package-platform}-${version.full}/gwt" dir="${gwt-dir}/${package-platform}"> + <patternset> + <include name="**/*" /> + </patternset> + </zipfileset> + </zip> + </target> + + <target name="internal-package-mac"> + <antcontrib:var name="package-platform" value="mac" /> + <echo>Creating package for ${package-platform} platform.</echo> + <antcontrib:var name="eclipse-launch-vmargs" value="-XstartOnFirstThread -Xms256M -Xmx512M" /> + <antcall target="add-platform-specific-files" inheritAll="true" inheritRefs="true" /> + <tar destfile="${result-path}/${product-file}-${package-platform}-${version.full}.tar.gz" compression="gzip" longfile="gnu"> + <tarfileset prefix="${product-file}-${package-platform}-${version.full}" dir="${result-path}/${product-file}-${version.full}"> + <patternset> + <include name="**/*" /> + </patternset> + </tarfileset> + <tarfileset prefix="${product-file}-${package-platform}-${version.full}/gwt" dir="${gwt-dir}/${package-platform}"> + <patternset> + <include name="**/*" /> + </patternset> + </tarfileset> + </tar> + <!-- TODO: remove me: DISABLE for speed --> + <!-- <antcall target="create-mac-diskimage" inheritAll="true" inheritRefs="true" /> --> + </target> + + <target name="internal-package-war"> + <echo>Building WAR</echo> + + <!-- Add the files. --> + <!-- Warning: This should not really be "platform spefic". --> + <antcontrib:var name="package-platform" value="linux" /> + <antcontrib:var name="eclipse-launch-vmargs" value="-Xms256M -Xmx512M" /> + <antcall target="add-platform-specific-files" inheritAll="true" inheritRefs="true" /> + + <!-- Copy source tree to class tree. --> + <!-- A workaround for not setting classpath properly in WAR. --> + <copy todir="${output-dir}/WebContent/WEB-INF/classes"> + <fileset dir="${output-dir}/WebContent/WEB-INF/src"> + <include name="**/*" /> + </fileset> + </copy> + + <war warfile="${result-path}/${product-file}-demo-${version.full}.war"> + <fileset dir="${output-dir}/WebContent"> + <include name="**/*" /> + </fileset> + </war> + </target> + + <target name="internal-package-liferay" depends="internal-package-war"> + <!-- We assume the needed files are put in place by internal-package-war --> + <echo>Building Liferay zip</echo> + + <zip zipfile="${result-path}/${product-file}-${version.full}-liferay.zip"> + <zipfileset prefix="VAADIN/widgetsets/com.vaadin.portal.gwt.PortalDefaultWidgetSet" dir="${output-dir}/WebContent/VAADIN/widgetsets/com.vaadin.portal.gwt.PortalDefaultWidgetSet"> + <patternset> + <include name="**/*" /> + </patternset> + </zipfileset> + <zipfileset prefix="VAADIN/themes" dir="${output-dir}/WebContent/VAADIN/themes"> + <patternset> + <include name="base/**/*" /> + <include name="liferay/**/*" /> + <include name="runo/**/*" /> + <include name="reindeer/**/*" /> + <include name="default/**/*" /> + </patternset> + </zipfileset> + + </zip> + + <echo>##teamcity[publishArtifacts '${result-path}/${product-file}-${version.full}-liferay.zip']</echo> + + </target> + + <target name="create-mac-diskimage"> + <!-- create Mac disk image (dmg) also --> + <property name="mount.dir" value="${result-path}/mac-mounted-image" /> + <mkdir dir="${mount.dir}" /> + <delete file="${result-path}/*.dmg" /> + <antcontrib:if> + <equals arg1="${platform}" arg2="mac" /> + <then> + <untar src="${result-path}/${product-file}-${package-platform}-${version.full}.tar.gz" dest="${result-path}/" compression="gzip" /> + <echo>Creating Mac disk image (dmg)</echo> + <!-- create image --> + <echo>hdiutil create -format UDRW -volname ${product-file}-${version.full} -srcfolder ${result-path}/${product-file}-${package-platform}-${version.full} ${result-path}/disk-image.dmg</echo> + <exec executable="hdiutil" failonerror="true"> + <arg line="create -format UDRW -volname ${product-file}-${version.full} -srcfolder ${result-path}/${product-file}-${package-platform}-${version.full} ${result-path}/disk-image.dmg" /> + </exec> + <!-- open image --> + <exec executable="hdiutil" failonerror="true"> + <arg line='attach' /> + <arg line='-readwrite' /> + <arg line='-noverify' /> + <arg line='-noautoopen' /> + <arg line='-mountpoint ${mount.dir}' /> + <arg line='${result-path}/disk-image.dmg' /> + </exec> + <!-- make sure root folder is opened when image is --> + <exec executable="bless" failonerror="true"> + <arg line='--folder ${mount.dir}' /> + <arg line='--openfolder ${mount.dir}' /> + </exec> + <!-- hack: wait for completion --> + <exec executable="sleep" failonerror="true"> + <arg line='2' /> + </exec> + <!-- here we could position items --> + <!-- + <exec executable="osascript" failonerror="true"> + <arg line='package/positionItems.scpt ${mount.dir}' /> + </exec> + --> + <!-- turn on volume icon --> + <exec executable="/Developer/Tools/SetFile" failonerror="true"> + <arg line='-a C' /> + <arg line='${mount.dir}' /> + </exec> + <!-- set executable bit --> + <chmod file="${mount.dir}/start.sh" perm="ugo+x" /> + <!-- close image --> + <exec executable="hdiutil" failonerror="true"> + <arg line='detach ${mount.dir}/' /> + </exec> + <!-- make read-only --> + <exec executable="hdiutil" failonerror="true"> + <arg line='convert ${result-path}/disk-image.dmg' /> + <arg line='-format UDZO' /> + <arg line='-imagekey zlib-level=9' /> + <arg line='-o ${result-path}/${product-file}-${package-platform}-${version.full}.dmg' /> + </exec> + <delete file="${result-path}/disk-image.dmg" /> + <!-- internet-enable --> + <exec executable="hdiutil" failonerror="true"> + <arg line='internet-enable ${result-path}/${product-file}-${package-platform}-${version.full}.dmg' /> + </exec> + </then> + </antcontrib:if> + </target> + + <target name="add-platform-specific-files"> + <echo>Adding platform specific files for ${package-platform}</echo> + <delete includeemptydirs="true" defaultexcludes="false"> + <fileset dir="${output-dir}"> + <include name=".*" /> + <include name="*.launch" /> + <include name="*.txt" /> + <include name="*.bat" /> + <include name="*.sh" /> + <include name="*.app" /> + <include name="build-widgetset.xml" /> + </fileset> + </delete> + <copy todir="${output-dir}"> + <filterchain> + <expandproperties /> + <replacetokens begintoken="@" endtoken="@"> + <token key="version" value="${version.full}" /> + </replacetokens> + <replacetokens begintoken="@" endtoken="@"> + <token key="platform" value="${package-platform}" /> + </replacetokens> + </filterchain> + <fileset dir="WebContent/license"> + <include name="COPYING" /> + </fileset> + </copy> + <copy todir="${output-dir}/WebContent"> + <filterchain> + <expandproperties /> + <replacetokens begintoken="@" endtoken="@"> + <token key="version" value="${version.full}" /> + <token key="/version" value="" /> + </replacetokens> + <replacetokens begintoken="@" endtoken="@"> + <token key="platform" value="${package-platform}" /> + <token key="/platform" value="" /> + </replacetokens> + <replacetokens begintoken="@" endtoken="@"> + <token key="builddate" value="${build.date}" /> + </replacetokens> + </filterchain> + <fileset dir="WebContent"> + <exclude name="**/.svn" /> + <exclude name="windoweddemos.html" /> + <include name="release-notes.html" /> + <include name="*.html" /> + <include name="license/*.html" /> + <include name="license/*.txt" /> + </fileset> + </copy> + <copy file="build/package/${package-platform}-readme.txt" tofile="${output-dir}/readme.txt"> + <filterchain> + <expandproperties /> + <replacetokens begintoken="<" endtoken=">"> + <token key="version" value="${version.full}" /> + <token key="/version" value="" /> + </replacetokens> + </filterchain> + </copy> + <copy todir="${output-dir}"> + <filterchain> + <expandproperties /> + <!-- .classpath, *.launch, build-widgetset.xml --> + <replacetokens begintoken="<" endtoken=">"> + <token key="version" value="${version.full}" /> + <token key="/version" value="" /> + </replacetokens> + <!-- .classpath --> + <replacetokens begintoken="<" endtoken=">"> + <token key="platform-specific-entries" value="<classpathentry kind="lib" path="gwt/gwt-dev-${package-platform}.jar" />" /> + <token key="/platform-specific-entries" value="" /> + </replacetokens> + <!-- .classpath, HostedMode.launch, build-widgetset.xml --> + <!-- We can't use XML notation for this, because it can be inside an attribute definition. --> + <replacetokens begintoken="@" endtoken="@"> + <token key="platform" value="${package-platform}" /> + </replacetokens> + <!-- .project, *.launch --> + <replacetokens begintoken="<" endtoken=">"> + <token key="eclipse-workspace-name" value="${eclipse-workspace-name}" /> + <token key="/eclipse-workspace-name" value="" /> + </replacetokens> + <!-- HostedMode.launch --> + <replacetokens begintoken="<" endtoken=">"> + <token key="eclipse-launch-vmargs" value="${eclipse-launch-vmargs}" /> + <token key="/eclipse-launch-vmargs" value="" /> + </replacetokens> + </filterchain> + <fileset dir="build/package"> + <include name="eclipse-classpath" /> + <include name="eclipse-project" /> + <include name="eclipse*launch" /> + <include name="build-widgetset.xml" /> + <include name="eclipse-org.eclipse.core.resources.prefs" /> + <include name="eclipse-org.eclipse.jdt.core.prefs" /> + </fileset> + </copy> + <move file="${output-dir}/build-widgetset.xml" tofile="${output-dir}/WebContent/docs/example-source/build-widgetset.xml" /> + <move file="${output-dir}/eclipse-classpath" tofile="${output-dir}/.classpath" /> + <move file="${output-dir}/eclipse-project" tofile="${output-dir}/.project" /> + <move file="${output-dir}/eclipse-Vaadin Hosted Mode Browser-launch" tofile="${output-dir}/Vaadin Hosted Mode Browser.launch" /> + <move file="${output-dir}/eclipse-Vaadin Development Server-launch" tofile="${output-dir}/Vaadin Development Server.launch" /> + <mkdir dir="${output-dir}/.settings" /> + <move file="${output-dir}/eclipse-org.eclipse.core.resources.prefs" tofile="${output-dir}/.settings/org.eclipse.core.resources.prefs" /> + <move file="${output-dir}/eclipse-org.eclipse.jdt.core.prefs" tofile="${output-dir}/.settings/org.eclipse.jdt.core.prefs" /> + <antcontrib:if> + <equals arg1="${package-platform}" arg2="windows" /> + <then> + <copy todir="${output-dir}"> + <fileset dir="build/package"> + <include name="start.bat" /> + </fileset> + </copy> + </then> + </antcontrib:if> + <antcontrib:if> + <equals arg1="${package-platform}" arg2="linux" /> + <then> + <copy todir="${output-dir}"> + <fileset dir="build/package"> + <include name="start.sh" /> + </fileset> + </copy> + <chmod file="${output-dir}/start.sh" perm="ugo+x" /> + <exec executable="chmod" failonerror="false"> + <arg line="ugo+x" /> + <arg line="${output-dir}/start.sh" /> + </exec> + </then> + </antcontrib:if> + <antcontrib:if> + <equals arg1="${package-platform}" arg2="oophm" /> + <then> + <copy todir="${output-dir}"> + <fileset dir="build/package"> + <include name="start.sh" /> + </fileset> + </copy> + <chmod file="${output-dir}/start.sh" perm="ugo+x" /> + <exec executable="chmod" failonerror="false"> + <arg line="ugo+x" /> + <arg line="${output-dir}/start.sh" /> + </exec> + </then> + </antcontrib:if> + <antcontrib:if> + <equals arg1="${package-platform}" arg2="mac" /> + <then> + <copy todir="${output-dir}"> + <fileset dir="build/package"> + <include name="start.sh" /> + </fileset> + </copy> + <!-- must be done manually --> + <!-- <exec executable="cp" failonerror="true"> + <arg line="-r" /> + <arg line="build/package/Start.app" /> + <arg line="${output-dir}" /> + </exec> --> + <!-- but again, ant just fails with any * or other special characters --> + <!-- package icon or folder background image / icon placements not in use --> + <!-- + <exec executable="cp" failonerror="true"> + <arg line="build/package/Icon*" /> + <arg line="${output-dir}" /> + </exec> + <exec executable="cp" failonerror="true"> + <arg line="build/package/mac-DS_Store" /> + <arg line="${output-dir}/.DS_Store" /> + </exec> + <copy file="build/package/mac-VolumeIcon.icns" tofile="${output-dir}/.VolumeIcon.icns" /> + --> + <chmod file="${output-dir}/start.sh" perm="ugo+x" /> + <exec executable="chmod" failonerror="false"> + <arg line="ugo+x" /> + <arg line="${output-dir}/start.sh" /> + </exec> + </then> + </antcontrib:if> + </target> + + <!-- Build server-side, client-side, libraries, and demos. --> + <!-- The client-side needs to be built before libs, because the libs --> + <!-- require the default widgetset and doing otherwise would build it twice. --> + <!-- However, since compiling the server-side is required by the client-side --> + <!-- compilation, the server-side will actually be built before it. --> + <target name="build" + depends="compile-server-side, compile-client-side, libs, demo" + description="Build package required files, without packing them."> + </target> + + <target name="compile-server-side" depends="compile-java, webcontent"/> + + <!-- Copy and preprocess sources for packaging + NOTE: Replaces <version></version> tags with build version tag for some "textual" files + --> + <target name="preprocess-src"> + <!-- + Source directories in the project are + * src (Vaadin core) + * demo/src (Demos and examples) + * tests/src (Test cases) + + These are copied to + * {$result-path}/src/core + * {$result-path}/src/demo + * {$result-path}/src/tests + + Java/HTML/CSS/XML files are filtered so the license is added and the version is set. + Other files are just copied. - <echo>JavaScript syntax check, optimizing and obfuscation.</echo> - <for param="file"> - <path> - <fileset dir="${output-dir}/lib/themes"> - <include name="**/*.js" /> - </fileset> - </path> - <sequential> - <echo>@{file}</echo> - <!-- TODO: ERROR: for some reason this does not work on Windows platform, please fix! --> - <java dir="${output-dir}/lib/themes" jar="build/lib/custom_rhino.jar" fork="true" failonerror="true" maxmemory="64m" output="@{file}"> - <arg value="-c" /> - <arg value="@{file}" /> - </java> - </sequential> - </for> - <fixcrlf srcdir="${output-dir}/lib/themes" includes="**/*.js **/*.css" eol="lf" eof="remove" /> - - <jar jarfile="${output-dir}/lib/${themes-jar-name}" compress="false"> - <fileset dir="${output-dir}/lib/themes"> - <patternset> - <include name="corporate/**/*" /> - <include name="base/**/*" /> - </patternset> - </fileset> - </jar> - </target> + If build.include.tests is not set, then "{$result-path}/src/tests" is created but no files are copied to it. + --> + + <loadfile property="ITMillApache2LicenseForJavaFiles" srcFile="build/ITMillApache2LicenseForJavaFiles.txt" /> + <mkdir dir="${result-path}/src" /> + + <mkdir dir="${result-path}/src/core" /> + <mkdir dir="${result-path}/src/demo" /> + <mkdir dir="${result-path}/src/tests" /> - <!-- Libs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - <!-- Copy and preprocess sources for packaging --> - <target name="preprocess-src" depends="init"> - <mkdir dir="build/result/src" /> - - <copy todir="build/result/src"> - <filterset> - <filter token="VERSION" value="${version}" /> - </filterset> - <fileset dir="src"> - <patternset> - <include name="**/*.java" /> - <include name="**/*.html" /> - </patternset> - </fileset> - </copy> - <!-- Convert to CRLF's and tabs --> - <fixcrlf srcdir="build/result/src" eol="crlf" tablength="4" tab="remove" includes="**/*.java" /> - - <!-- Un-Filtered files --> - <copy todir="build/result/src"> - <fileset dir="src"> - <patternset> - <include name="**/*.gif" /> - <include name="**/*.jpg" /> - <include name="**/*.swf" /> - <include name="**/*.png" /> - </patternset> - </fileset> - </copy> - </target> + <patternset id="preprocessable-files"> + <include name="**/*.java" /> + <include name="**/*.html" /> + <include name="**/*.css" /> + <include name="**/*.xml" /> + </patternset> + <patternset id="non-preprocessable-files"> + <exclude name="**/.svn" /> + <exclude name="**/*.java" /> + <exclude name="**/*.html" /> + <exclude name="**/*.css" /> + <exclude name="**/*.xml" /> + </patternset> + <filterset id="version-and-license"> + <filter token="ITMillApache2LicenseForJavaFiles" value="${ITMillApache2LicenseForJavaFiles}" /> + <filter token="VERSION" value="${version.full}" /> + </filterset> - <target name="compile-java" depends="preprocess-src"> - <!-- Compile --> - <mkdir dir="build/result/classes" /> - <javac source="1.4" target="1.4" srcdir="build/result/src" destdir="build/result/classes" classpath="build/lib/servlet-api.jar" includes="${toolkit-package}/**" /> - </target> + <echo>Copying src directory and processing copied files.</echo> + <echo>Replacing <version> tag with build version for java/html/css/xml files.</echo> + <copy todir="${result-path}/src/core"> + <filterset refid="version-and-license"/> + <fileset dir="src"> + <patternset refid="preprocessable-files" /> + </fileset> + </copy> - <target name="libs" depends="compile-java"> - <!-- Create binary JAR --> - <jar jarfile="${output-dir}/lib/${lib-bin-jar-name}" compress="true" includes="${toolkit-package}/**" basedir="build/result/classes" excludes="${toolkit-package}/demo/**" /> - <!-- Create source JAR --> - <jar jarfile="${output-dir}/lib/${lib-src-jar-name}" compress="true"> - <fileset dir="build/result/src"> - <patternset> - <include name="${toolkit-package}/**/*.java" /> - <exclude name="${toolkit-package}/demo/**/*.java" /> - </patternset> - </fileset> - </jar> - </target> + <copy todir="${result-path}/src/demo"> + <filterset refid="version-and-license"/> + <fileset dir="demo/src"> + <patternset refid="preprocessable-files" /> + </fileset> + </copy> - <!-- Demo - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - <target name="demo" depends="libs,compile-java,themes"> - <echo>Building demo</echo> - <java2html srcdir="build/result/src/${toolkit-package}/demo" destdir="build/result/src/${toolkit-package}/demo" includes="**/*.java" style="eclipse" showLineNumbers="true" showFileName="true" showTableBorder="false" /> - <!-- have to use "temp" dir for some reason here. Overwrite does not work, at least on Linux --> - <copy todir="build/result/srcTemp" overwrite="true"> - <filterchain> - <expandproperties /> - <replacetokens begintoken="<" endtoken=">"> - <token key="body" value="${html.body.tag}${html.body.start1}${product-name}${html.body.start2}" /> - <token key="/body" value="${html.body.end}${html.body.endtag}" /> - <token key="head" value="${html.head.tag}${html.head.style}" /> - </replacetokens> - </filterchain> - <fileset dir="build/result/src"> - <exclude name="**/.svn" /> - <include name="**/*.html" /> - </fileset> - </copy> - <!-- Create demo binary JAR, including pictures --> - <mkdir dir="build/result/lib"/> - <jar jarfile="build/result/lib/${demo-lib-jar-name}" includes="${toolkit-package}/demo/**" basedir="build/result/classes" compress="true"> - <fileset dir="build/result/src"> - <patternset> - <include name="${toolkit-package}/demo/**/*.swf" /> - <include name="${toolkit-package}/demo/**/*.jpg" /> - <include name="${toolkit-package}/demo/**/*.png" /> - <include name="${toolkit-package}/demo/**/*.gif" /> - </patternset> - </fileset> - </jar> - <war warfile="${output-dir}/demo/${product-file}.war" webxml="WebContent/WEB-INF/web.xml"> - <!-- WebContent: htmls, styles, license--> - <fileset dir="WebContent"> - <exclude name="**/.svn" /> - <exclude name="WEB-INF/web.xml" /> - <exclude name="WEB-INF/lib/themes/**/*" /> - <exclude name="WEB-INF/classes" /> - <exclude name="WEB-INF/classes/**/*" /> - <include name="**/*" /> + + <antcontrib:if> + <isset property="build.include.tests"/> + <then> + <copy todir="${result-path}/src/tests"> + <filterset refid="version-and-license"/> + <fileset dir="tests/src"> + <patternset refid="preprocessable-files" /> + </fileset> + </copy> + </then> + </antcontrib:if> + + <!-- Unify mix usage of mac/Linux/Win characters --> + <echo>Unifying mix usage of Mac/Linux/Win linefeeds for java/html/css/xml files.</echo> + <fixcrlf srcdir="${result-path}/src" eol="crlf" tablength="4" tab="asis" includes="**/*.java **/*.html **/*.css **/*.xml" /> + + <!-- Add other files such as images, these are not filtered or processed by fixcrlf task --> + <echo>Copying non java/html/css/xml files such as images.</echo> + <copy todir="${result-path}/src/core"> + <fileset dir="src"> + <patternset refid="non-preprocessable-files" /> </fileset> - <!-- Toolkit package and themes --> - <lib dir="${output-dir}/lib"> - <include name="${lib-bin-jar-name}" /> - <include name="${themes-jar-name}" /> - </lib> - <!-- Demo package and themes --> - <lib dir="build/result/lib"> - <include name="${demo-lib-jar-name}" /> - </lib> - <lib dir="${output-dir}/lib"> - <include name="themes/demo/**/*" /> - </lib> - <!-- Calc and HelloWorld source and html source --> - <fileset dir="build/result"> - <include name="src/${toolkit-package}/demo/Calc.*" /> - <include name="src/${toolkit-package}/demo/HelloWorld.*" /> + </copy> + <copy todir="${result-path}/src/demo"> + <fileset dir="demo/src"> + <patternset refid="non-preprocessable-files" /> </fileset> - </war> + </copy> + <antcontrib:if> + <isset property="build.include.tests"/> + <then> + <copy todir="${result-path}/src/tests"> + <fileset dir="tests/src"> + <patternset refid="non-preprocessable-files" /> + </fileset> + </copy> + </then> + </antcontrib:if> - <!-- Jetty --> - <copy todir="${output-dir}/demo"> - <fileset dir="build/demo"> - <exclude name="**/.svn" /> - </fileset> - </copy> + </target> - <!-- Sources --> - <copy todir="${output-dir}/demo/src"> - <fileset dir="build/result/src"> - <include name="src/${toolkit-package}/demo/Calc.*" /> - <include name="src/${toolkit-package}/demo/HelloWorld.*" /> - </fileset> - </copy> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + WebContent + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <target name="webcontent" depends="preprocess-src,defaulttheme"> - </target> + <!-- copy 3rd part libraries used by demo --> + <copy todir="${output-dir}/WebContent/demo/lib"> + <fileset dir="lib/demo"> + <include name="gwt-maps/**/*" /> + </fileset> + </copy> + <copy todir="${output-dir}/WebContent/demo/lib"> + <fileset dir="lib/core"> + <include name="jetty/**/*" /> + </fileset> + </copy> + <copy todir="${output-dir}/WebContent/demo/lib"> + <fileset dir="lib/core"> + <include name="portlet/**/*" /> + </fileset> + </copy> - <!-- Documentation- - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- Add demo sources --> + <echo>Adding demo sources to WebContent/WEB-INF/src</echo> + <copy todir="${output-dir}/WebContent/WEB-INF/src"> + <fileset dir="${result-path}/src/demo"> + <include name="**/*" /> + </fileset> + </copy> - <target name="docs" depends="javadoc,manual-pdf,manual-html,package-docs"> - </target> + <echo>Creating demo source html files</echo> + <java2html srcdir="${output-dir}/WebContent/WEB-INF/src/${toolkit-package}/demo" destdir="${output-dir}/WebContent/docs/example-source/${toolkit-package}/demo" includes="**/*.java" style="eclipse" showLineNumbers="false" showFileName="true" showTableBorder="false" /> - <target name="package-docs" depends="init"> - <copy todir="${output-dir}"> - <filterchain> - <expandproperties /> - <replacetokens begintoken="<" endtoken=">"> - <token key="body" value="${html.body.tag}${html.body.start1}${product-name}${html.body.start2}" /> - <token key="/body" value="${html.body.end}${html.body.endtag}" /> - </replacetokens> - </filterchain> - <fileset dir=""> - <exclude name="**/.svn" /> - <include name="*.html" /> - <include name="*.txt" /> - </fileset> - </copy> - <copy todir="${output-dir}"> - <fileset dir=""> - <filename name="*.pdf" /> - </fileset> - </copy> - <copy todir="${output-dir}/doc/manual/html-style"> - <fileset dir="doc/manual/html-style"> - <exclude name="**/.svn" /> - <exclude name="**/test.html" /> - </fileset> - </copy> - <copy todir="${output-dir}/doc"> - <fileset dir="doc"> - <exclude name="**/.svn" /> - <include name="dtd/**/*.dtd" /> - </fileset> - </copy> - </target> + <!-- Add WebContent --> + <echo>Adding VAADIN/themes, demo and hsqldb.jar files.</echo> + <copy todir="${output-dir}/WebContent"> + <fileset dir="WebContent"> + <exclude name="**/.svn" /> + <!-- TODO check what is neccessary --> + <!-- These are needed for running tests, but are copied during testing. --> + <exclude name="VAADIN/themes/tests*"/> + <exclude name="VAADIN/themes/tests-magi/**/*" /> + <exclude name="VAADIN/themes/tests-featurebrowser/**/*" /> + <exclude name="VAADIN/themes/tests*/**/*"/> - <target name="javadoc" depends="preprocess-src"> - <javadoc destdir="${output-dir}/doc/api" author="true" version="true" use="true" windowtitle="${product-name}" classpath="build/lib/servlet-api.jar"> - <packageset dir="build/result/src"> - <include name="${toolkit-package}/**" /> - <exclude name="${toolkit-package}/demo/**" /> - </packageset> - <doctitle>${javadoc.doctitle}</doctitle> - <!-- <header><![CDATA[<script type="text/javascript" src=".html-style/style.js"></script>]]></header> --> - <bottom>${javadoc.bottom}</bottom> - <link offline="true" href="http://java.sun.com/j2se/1.5.0/docs/api/" packagelistLoc="build/javadoc/j2se-1.5.0" /> - <link offline="true" href="http://java.sun.com/j2ee/1.4/docs/api/" packagelistLoc="build/javadoc/j2ee-1.4" /> - </javadoc> - </target> + <include name="demo/**/*" /> + <include name="WEB-INF/lib/hsqldb.jar" /> + <include name="VAADIN/themes/**/*" /> + <include name="META-INF/**/*" /> + </fileset> + </copy> - <target name="book-part2" depends="dbdoclet"> - <!-- TODO Add XSLT to transform dbdoclet results to book part 2 --> - </target> + <!-- Add package specific WebContent files from build/package/WebContent --> + <copy todir="${output-dir}/WebContent"> + <fileset dir="build/package/WebContent"> + <exclude name="**/.*" /> + <include name="**/*" /> + </fileset> + </copy> + <java classname="com.vaadin.buildhelpers.PortletConfigurationGenerator" failonerror="yes" fork="yes" maxmemory="512m"> + <arg value="${output-dir}/WebContent/WEB-INF" /> + <arg value="com.vaadin.demo.sampler.gwt.SamplerWidgetSet" /> + <classpath> + <pathelement location="build/buildhelpers/" /> + </classpath> + </java> + </target> - <target name="dbdoclet" depends="preprocess-src"> - <javadoc access="public" charset="UTF-8" docencoding="UTF-8" encoding="ISO-8859-15" failonerror="yes" classpath="build/lib/servlet-api.jar" maxmemory="512m" source="1.5"> - <packageset dir="build/result/src"> - <include name="${toolkit-package}/**" /> - <exclude name="${toolkit-package}/demo/**" /> - </packageset> - <doclet name="org.dbdoclet.doclet.docbook.DocBookDoclet" path="build/lib/jdk${java.specification.version}/dbdoclet.jar"> - <param name="-d" value="result/docbook" /> - </doclet> - </javadoc> - </target> + <target name="compile-fileupload"> + <echo>Compiling custom fileupload classes.</echo> + <ant dir="build/external/fileupload" antfile="build.xml" target="compile" /> + </target> - <target name="manual-pdf" depends="init"> - <!-- TODO Include XEP-based FO building in future --> - </target> + <target name="unpack-gwt" depends="init"> + <!-- Unpack GWT from JARs. This is needed for excluding Servlet API 2.4. --> + <delete dir="${result-path}/gwt"/> + <unjar src="${gwt-dir}/${platform}/gwt-user.jar" dest="${result-path}/gwt/"/> + <unjar src="${gwt-dir}/${platform}/${lib-gwt-dev}" dest="${result-path}/gwt/"/> + <delete dir="${result-path}/gwt/javax/servlet"/> + </target> + + <target name="compile-java" depends="init, unpack-gwt, check-servlet-version, compile-fileupload, webcontent"> + <echo>Compiling src (server-side)</echo> + + <!-- Compile all sources at the same time as they depend on each other --> + <mkdir dir="${result-path}/classes" /> + <javac source="1.5" target="1.5" classpathref="compile.classpath.server-side" destdir="${result-path}/classes" debug="true" encoding="UTF-8"> + <src path="${result-path}/src/core"/> + <src path="${result-path}/src/demo"/> + <src path="${result-path}/src/tests"/> + + <exclude name="${toolkit-package}/tests/**" unless="build.include.tests"/> + </javac> + </target> + + <target name="defaulttheme"> + <echo>Combining default themes css files</echo> + <!-- ensure buildhelpers are compiled --> + <javac source="1.5" target="1.5" srcdir="build/buildhelpers" classpath="build/smartsprites/lib/smartsprites-0.2.3-itmill.jar"/> + <java classname="com.vaadin.buildhelpers.CompileDefaultTheme" failonerror="yes" fork="yes"> + <classpath> + <pathelement location="build/buildhelpers" /> + <fileset dir="build/smartsprites/lib"> + <include name="*.jar"/> + </fileset> + </classpath> + <jvmarg value="-Djava.awt.headless=true"/> + </java> + </target> + + <target name="testtarget"> + <echo>TEST TARGET CALLED</echo> + </target> + + <!-- ================================================================== --> + <!-- Widget Set Compilation --> + <!-- ================================================================== --> + <!-- Widget set compilation process: --> + <!-- 1. Preprocess sources --> + <!-- 2. Compile server-side java --> + <!-- 3. Generate widget set definitions and classes --> + <!-- 4. Compile widget sets --> + <!-- --> + <!-- Widget sets can be built for two purposes: --> + <!-- * for building installation packages --> + <!-- * for building single widget sets during development --> + <!-- Targets: widgetset-<name> --> + + <target name="remove-widgetset-gwt-tmp"> + <echo>Removing widgetset temp files</echo> + <delete dir="${output-dir}/WebContent/VAADIN/widgetsets/.gwt-tmp" includeemptydirs="true"/> + </target> + + <!-- Note: Probably not needed any longer as all sources need to be compiled. --> + <target name="compile-widgetset-generator-only" depends="init, preprocess-src, compile-java"> + <mkdir dir="${result-path}/classes"/> + <javac source="1.5" target="1.5" destdir="${result-path}/classes" debug="true" encoding="UTF-8"> + <src path="${result-path}/src/core"/> + <include name="com/vaadin/terminal/gwt/widgetsetutils/WidgetMapGenerator.java" /> + <!-- <exclude name="**"/> --> + <classpath> + <pathelement location="${gwt-dir}/${platform}/gwt-user.jar" /> + <pathelement location="${gwt-dir}/${platform}/${lib-gwt-dev}" /> + <pathelement location="${result-path}/classes" /> + <pathelement location="${result-path}/src/core" /> + </classpath> + </javac> + </target> + + <!-- The widgetset generator is currently compiled along with rest of server-side Java. --> + <target name="compile-widgetset-generator" depends="init, preprocess-src, compile-java"/> - <target name="manual-html" depends="init"> - <delete file="build/docbook/conf/temp.xsl" /> - <copy file="build/docbook/conf/custom-html-docbook.xsl" tofile="build/docbook/conf/temp.xsl"> - <filterchain> - <replacetokens> - <token key="BODYHEADER" value="${html.body.start1}${docbook.head.title}${html.body.start2}" /> - <token key="BODYFOOTER" value="${html.body.end}" /> - </replacetokens> - </filterchain> - </copy> - <path id="docbook-xsl.classpath"> - <pathelement path="build/lib/fserializer.jar" /> - <pathelement path="build/lib/xalan.jar" /> - <pathelement path="build/lib/xercesImpl.jar" /> - <pathelement path="build/lib/xml-apis.jar" /> - </path> - <java classname="org.apache.xalan.xslt.Process" failonerror="yes" fork="yes" maxmemory="1300m"> - <arg value="-in" /> - <arg value="doc/manual/book.xml" /> - <arg value="-xsl" /> - <arg value="build/docbook/conf/temp.xsl" /> - <arg value="-out" /> - <arg value="${output-dir}/doc/manual/index.html" /> - <arg value="-param" /> - <arg value="use.extensions" /> - <arg value="1" /> - <classpath refid="docbook-xsl.classpath" /> - </java> - <delete file="build/docbook/conf/temp.xsl" /> - <copy todir="${output-dir}/doc/manual/img"> - <fileset dir="doc/manual/img"> - <exclude name="**/.svn" /> - </fileset> - </copy> - </target> - <!-- Clean results - - - - - - - - - - - - - - - - - - - - - - - - - --> - <target name="clean-all" depends=""> - <delete includeemptydirs="true" defaultexcludes="false"> - <fileset dir="build/result" includes="**/*" /> - </delete> - <delete file="build/docbook/conf/temp.xsl" /> + <path id="widgetset-compile-classpath"> + <pathelement location="${gwt-dir}/${platform}/gwt-user.jar" /> + <pathelement location="${gwt-dir}/${platform}/${lib-gwt-dev}" /> + <pathelement location="${result-path}/classes" /> + <pathelement location="${result-path}/src/core" /> + <pathelement location="${result-path}/src/demo" /> + </path> + + <target name="compile-widgetset" description="Compiles the widgetset given as the first parameter"> + <fail unless="widgetset" message="No widgetset parameter set"/> + <echo>Compiling widgetset ${widgetset}. Output directory: ${widgetsets-output-dir}</echo> + <java classname="com.google.gwt.dev.Compiler" failonerror="yes" fork="yes" maxmemory="512m"> + <classpath refid="widgetset-compile-classpath"/> + + <arg value="-war" /> + <arg value="${widgetsets-output-dir}" /> + <arg value="-style" /> + <arg value="PRETTY" /> + <arg value="${widgetset}" /> + + <jvmarg value="-Xss8M"/> + <jvmarg value="-Djava.awt.headless=true"/> + </java> + <antcall target="remove-widgetset-gwt-tmp"/> + + <echo>Compiled ${widgetset}</echo> </target> + + <target name="compile-widgetset-default"> + <antcall target="compile-widgetset"> + <param name="widgetset" value="com.vaadin.terminal.gwt.DefaultWidgetSet"/> + </antcall> + </target> + + <target name="compile-widgetset-portal-default"> + <antcall target="compile-widgetset"> + <param name="widgetset" value="com.vaadin.portal.gwt.PortalDefaultWidgetSet"/> + </antcall> + </target> + + <target name="compile-widgetset-reserver"> + <condition property="googlemaps-jar" value="${output-dir}/WebContent/demo/lib/gwt-maps/gwt-maps.jar"> + <available file="${output-dir}/WebContent/demo/lib/gwt-maps/gwt-maps.jar" /> + </condition> + <condition property="googlemaps-jar" value="lib/gwt-maps/gwt-maps.jar"> + <available file="lib/reservr/gwt-maps.jar" /> + </condition> + <java classname="com.google.gwt.dev.Compiler" failonerror="yes" fork="yes" maxmemory="512m"> + <arg value="-war" /> + <arg value="${widgetsets-output-dir}" /> + <arg value="com.vaadin.demo.reservation.gwt.ReservationWidgetSet" /> + <arg value="-style" /> + <arg value="PRETTY" /> + <jvmarg value="-Xss8M"/> + <jvmarg value="-Djava.awt.headless=true"/> + <classpath> + <pathelement location="${gwt-dir}/${platform}/gwt-user.jar" /> + <pathelement location="${gwt-dir}/${platform}/${lib-gwt-dev}" /> + <pathelement location="${result-path}/src/core" /> + <pathelement location="${result-path}/src/demo" /> + <!-- demo jars --> + <pathelement location="${googlemaps-jar}" /> + <!-- demo widgetset sources --> + <pathelement path="${output-dir}/WebContent/WEB-INF/src" /> + <pathelement location="${result-path}/classes" /> + </classpath> + </java> + <antcall target="remove-widgetset-gwt-tmp"/> + <echo>Compiled ReservationWidgetSet</echo> + </target> + + <target name="compile-widgetset-sampler"> + <antcall target="compile-widgetset"> + <param name="widgetset" value="com.vaadin.demo.sampler.gwt.SamplerWidgetSet"/> + </antcall> + </target> + <target name="compile-widgetset-coverflow"> + <antcall target="compile-widgetset"> + <param name="widgetset" value="com.vaadin.demo.coverflow.gwt.CoverflowWidgetSet"/> + </antcall> + </target> + <target name="compile-widgetset-colorpicker"> + <antcall target="compile-widgetset"> + <param name="widgetset" value="com.vaadin.demo.colorpicker.gwt.ColorPickerWidgetSet"/> + </antcall> + </target> + + <!-- Builds the client-side engine, i.e., the widgetsets sequentially. --> + <!-- Notice that antcall does not fulfill dependencies. --> + <target name="compile-client-side-sequential" unless="build.parallel"> + <echo>Compiling widget sets sequentially.</echo> + <!-- We can't call these with 'depends' because of the 'unless' specifier. --> + <antcall target="compile-widgetset-default"/> + <antcall target="compile-widgetset-portal-default"/> + <antcall target="compile-widgetset-reserver"/> + <antcall target="compile-widgetset-sampler"/> + <antcall target="compile-widgetset-colorpicker"/> + <antcall target="compile-widgetset-coverflow"/> + </target> + + <!-- Builds the client-side engine, i.e., the widgetsets in parallel. --> + <!-- Notice that antcall does not fulfill dependencies. --> + <target name="compile-client-side-parallel" if="build.parallel"> + <echo>Compiling widget sets in parallel.</echo> + <parallel threadsperprocessor="1"> + <antcall target="compile-widgetset-default"/> + <antcall target="compile-widgetset-portal-default"/> + <antcall target="compile-widgetset-reserver"/> + <antcall target="compile-widgetset-sampler"/> + <antcall target="compile-widgetset-colorpicker"/> + <antcall target="compile-widgetset-coverflow"/> + </parallel> + </target> + + <!-- Compiles all widgetsets. --> + <!-- This is called when building packages and when compiling all --> + <!-- widgetsets, but not when compiling individual widgetsets. --> + <!-- Builds widgetsets either sequentially or in parallel, depending --> + <!-- on the 'build.parallel' property. --> + <target name="compile-client-side" depends="compile-server-side, compile-client-side-sequential, compile-client-side-parallel"/> + + <!-- Definitions for building local components, i.e., not for an installation package. --> + <target name="init-nonpackage" depends="init-platform"> + <property file="build/VERSION.properties" /> + <property file="build/GWT-VERSION.properties" /> + + <!-- Definitions for building the client-side. --> + <property name="widgetsets-output-dir" value="WebContent/VAADIN/widgetsets" /> + + <!-- Path to GWT directory. TODO: This should be read from build.properties file. --> + <property name="gwt-dir" value="build/gwt" /> + + <!-- required when compiling WebContent/VAADIN/widgetsets (and also Java server-side classes) --> + <property name="lib-gwt-dev" value="gwt-dev-${platform}.jar" /> + + <echo>We are on ${platform} platform, using ${gwt-dir}/${platform}/${lib-gwt-dev}.</echo> + <echo>GWT dir: ${gwt-dir}</echo> + <echo>Widget sets output dir: ${widgetsets-output-dir}</echo> + </target> + + <!-- Builds all widgetsets locally, i.e., not for an installation package. --> + <target name="widgetsets" depends="init-nonpackage, init, compile-widgetset-generator, compile-client-side"/> + + <!-- Build each widgetset locally, i.e., not for an installation package. --> + <target name="widgetset-default" depends="init-nonpackage, init, compile-widgetset-generator, compile-widgetset-default"/> + <target name="widgetset-portal-default" depends="init-nonpackage, init, compile-widgetset-generator, compile-widgetset-portal-default"/> + <target name="widgetset-sampler" depends="init-nonpackage, init, compile-widgetset-generator, compile-widgetset-sampler"/> + <target name="widgetset-coverflow" depends="init-nonpackage, init, compile-widgetset-generator, compile-widgetset-coverflow"/> + <target name="widgetset-reserver" depends="init-nonpackage, init, compile-widgetset-generator, compile-widgetset-reserver"/> + <target name="widgetset-colorpicker" depends="init-nonpackage, init, compile-widgetset-generator, compile-widgetset-colorpicker"/> + + <!-- ================================================================== --> + <!-- Libraries and Demos --> + <!-- ================================================================== --> + + <!-- Compile the Vaadin library JAR. --> + <!-- Need only the default widgetset for this, but can't depend --> + <!-- specifically on it, because dependence does not see compiled --> + <!-- individual widgetsets, because antcall does not fulfill --> + <!-- dependencies. --> + <target name="libs" depends="compile-server-side, compile-client-side"> + <echo>Creating libs (server-side) ${lib-jar-name}</echo> + <!-- Create Toolkit JAR --> + <mkdir dir="${output-dir}/META-INF"/> + <echo file="${output-dir}/META-INF/VERSION">${version.full}</echo> + <echo file="${output-dir}/META-INF/GWT-VERSION">${gwt-version}</echo> + <jar jarfile="${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name}" + compress="true" manifest="build/package/META-INF/MANIFEST.MF"> + <metainf dir="${output-dir}/META-INF"/> + <manifest> + <attribute name="Vaadin-Widgetsets" value="com.vaadin.terminal.gwt.DefaultWidgetSet" /> + <attribute name="Bundle-Version" value="${version.full}" /> + </manifest> + <fileset dir="${result-path}/classes"> + <patternset> + <exclude name="${toolkit-package}/demo/**" /> + <exclude name="${toolkit-package}/tests/**"/> + <exclude name="${toolkit-package}/launcher/**" /> + <exclude name="${toolkit-package}/automatedtests/**" /> + </patternset> + </fileset> + <!-- fileupload, see build/external/fileupload/build.xml --> + <fileset dir="build/external/fileupload/classes"> + <include name="**/*" /> + </fileset> + <!-- add sources --> + <fileset dir="${result-path}/src/core"> + <patternset> + <exclude name="${toolkit-package}/launcher/**" /> + </patternset> + </fileset> + <fileset dir="${output-dir}/WebContent"> + <patternset> + <include name="VAADIN/widgetsets/com.vaadin.terminal.gwt.DefaultWidgetSet/**/*" /> + <include name="VAADIN/themes/base/**/*" /> + <include name="VAADIN/themes/default/**/*" /> + <include name="VAADIN/themes/runo/**/*" /> + <include name="VAADIN/themes/reindeer/**/*" /> + </patternset> + </fileset> + </jar> + <copy file="${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name}" tofile="${output-dir}/WebContent/${lib-jar-name}" /> + </target> + + <!-- Demos - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <target name="demo" depends="libs, docs"> + <echo>Building demos</echo> + <echo>Adding demo class files.</echo> + <copy todir="${output-dir}/WebContent/WEB-INF/classes"> + <fileset dir="${result-path}/classes"> + <include name="${toolkit-package}/demo/**/*" /> + <!-- user might want to tweak launcher classes --> + <include name="${toolkit-package}/launcher/**" /> + </fileset> + </copy> + + <echo>Adding source for demos</echo> + <copy todir="${output-dir}/WebContent/WEB-INF/src"> + <fileset dir="${result-path}/src/demo"> + <include name="${toolkit-package}/demo/**/*" /> + </fileset> + <fileset dir="${result-path}/src/core"> + <!-- user might want to tweak launcher classes --> + <include name="${toolkit-package}/launcher/**" /> + </fileset> + </copy> + </target> + + <!-- ================================================================== --> + <!-- Documentation --> + <!-- ================================================================== --> + <target name="docs" depends="init, javadoc, manual"> + </target> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- Manual: Build from external repository. --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <target name="manual-init" depends="init"> + <!-- Can run XEP only if license is available. --> + <available file="build/lib/XEP/license.xml" property="xep.license.available" /> + + <!-- Path to installed XEP license. --> + <property name="xep.license.path.installed" value="/opt/RenderX/XEP/license.xml"/> + <echo>XEP license expected to be installed as ${xep.license.path.installed}</echo> + + <!-- Can copy XEP license only if it is available. --> + <available file="${xep.license.path.installed}" property="xep.license.installed"/> + </target> + + <!-- Checkout doc repository. --> + <target name="manual-checkout" depends="manual-init" unless="docdir"> + <property name="manual.repository" value="http://dev.vaadin.com/svn/doc/trunk"/> + + <echo>Checking out manual from repository ${manual.repository}</echo> + + <mkdir dir="${checkout-path}"/> + + <exec executable="svn" dir="${checkout-path}"> + <arg value="checkout"/> + <arg value="-q"/> + <arg value="${manual.repository}"/> + <arg value="docs"/> + </exec> + + <!-- Documentation source directory. --> + <property name="docdir" value="${checkout-path}/docs"/> + + <echo>Manual checked out from repository successfully</echo> + </target> - <!-- ant contrib required for flow control (for loop) --> - <taskdef resource="net/sf/antcontrib/antlib.xml"> - <classpath> - <pathelement location="build/lib/ant-contrib-1.0b3.jar" /> - </classpath> - </taskdef> + <!-- If the XEP is installed, copy it to proper place. --> + <target name="xep-license-copy" if="xep.license.installed"> + <copy file="${xep.license.path.installed}" todir="${docdir}/build/lib/XEP"/> + </target> - <!-- java2html converter --> - <taskdef name="java2html" classname="de.java2html.anttasks.Java2HtmlTask" classpath="build/lib/java2html.jar" /> + <!-- Build manual. --> + <target name="manual-build" depends="manual-init, xep-license-copy"> + <ant dir="${docdir}" antfile="build/build.xml" inheritAll="false"> + <property name="version" value="${version.full}"/> + </ant> + </target> + <!-- Copy the manual from sub Ant results to our output directory. --> + <target name="manual-copy" depends="manual-init"> + <copy todir="${output-dir}/WebContent/docs"> + <fileset dir="${docdir}/build/result/package/WebContent/docs"> + <exclude name="**/.svn" /> + <include name="book-of-vaadin.pdf" /> + </fileset> + </copy> + </target> + <target name="manual-package" depends="manual-init, manual-copy"> + <tar destfile="${result-path}/${product-file}-docs-${version.full}.tar.gz" compression="gzip" longfile="gnu"> + <tarfileset prefix="docs" dir="${result-path}/${product-file}-${version.full}/WebContent/docs"> + <patternset> + <include name="api/**" /> + <include name="book-of-vaadin.pdf" /> + <include name="example-source" /> + </patternset> + </tarfileset> + <tarfileset prefix="docs" dir="${docdir}/build/result/package/WebContent/docs"> + <patternset> + <include name="book/**" /> + <include name="tutorial/**" /> + <include name="vaadin-tutorial.pdf" /> + </patternset> + </tarfileset> + </tar> + </target> + + <target name="manual" depends="init, manual-init, manual-checkout, manual-build, manual-copy, manual-package"> + </target> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- Documentation: Add Javadoc to doc --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <target name="javadoc" depends="init, preprocess-src"> + <javadoc destdir="${output-dir}/WebContent/docs/api" author="true" version="true" use="true" windowtitle="${product-name}" classpathref="compile.classpath.client-side"> + <packageset dir="${result-path}/src/core"> + <include name="${toolkit-package}/**" /> + </packageset> + <doctitle>${javadoc.doctitle}</doctitle> + <!-- <header><![CDATA[<script type="text/javascript" src=".html-style/style.js"></script>]]></header> --> + <bottom>${javadoc.bottom}</bottom> + <link offline="true" href="http://java.sun.com/j2se/1.5.0/docs/api/" packagelistLoc="build/javadoc/j2se-1.5.0" /> + <link offline="true" href="http://java.sun.com/j2ee/1.4/docs/api/" packagelistLoc="build/javadoc/j2ee-1.4" /> + </javadoc> + </target> + + <!-- java2html converter --> + <taskdef name="java2html" classname="de.java2html.anttasks.Java2HtmlTask" classpath="build/lib/java2html.jar" /> + + <!-- ================================================================== --> + <!-- Difference to previous release package. --> + <!-- ================================================================== --> + + <!-- This should be called after the Linux package is ready. --> + <target name="differences" if="build.differences"> + <exec executable="python" searchpath="true" failonerror="true" output="${result-path}/differences-linux.txt"> + <arg value="build/bin/package-diff.py"/> + <arg value="${version.full}"/> + </exec> + + <echo>##teamcity[publishArtifacts '${result-path}/differences-linux.txt']</echo> + </target> + + <!-- ================================================================== --> + <!-- Nightly build. --> + <!-- ================================================================== --> + + <!-- Main target for the nightly build. --> + <target name="nightly" depends="clean-result, nightly-init, package-init, init, build, internal-package-linux"> + </target> + + <!-- Create symlink to GWT installation directory. --> + <target name="gwt-symlink"> + + <!-- Optional property. --> + <property name="gwt.link.target" value="../../gwt-1.7"/> + + <!-- Remove the old link, as the link target may have changed. --> + <exec executable="rm" dir="build" searchpath="true" failonerror="false"> + <arg value="gwt"/> + </exec> + + <echo>Creating symlink to GWT installation directory.</echo> + <exec executable="ln" dir="build" searchpath="true" failonerror="true"> + <arg value="-s"/> <!-- Symlink. --> + <arg value="-f"/> <!-- Overwrite. --> + <arg value="${gwt.link.target}"/> + <arg value="gwt"/> + </exec> + </target> + + <!-- Initialize a nightly build. --> + <target name="nightly-init" depends="gwt-symlink"> + + <!-- Mandatory parameters. --> + <fail unless="build.number" message="The build.number property must be defined."/> + <fail unless="nightly.publish" message="The nightly.publish property must be defined."/> + + <!-- Optional parameters. --> + <property name="build.tag" value="dev"/> + + <property file="build/VERSION.properties" /> + + <echo>Base version: ${version}</echo> + <echo>Build number: ${build.number}</echo> + <echo>Build tag: ${build.tag}</echo> + <echo>Publish target: ${nightly.publish}</echo> + + <!-- Set build number. --> + <tstamp> + <format property="nightly.date" pattern="yyyyMMdd"/> + </tstamp> + <property name="version.full" value="${version}.${build.tag}-${nightly.date}-c${build.number}"/> + + <echo>Version will be: ${version.full}</echo> + + <!-- Tell TeamCity the build name. Have to do it this way, because --> + <!-- this script needs to get the plain build number as a parameter. --> + <echo>##teamcity[buildNumber '${version}-c${build.number}']</echo> + </target> + + <target name="nightly-teamcity-publish"> + <!-- Publish as a TeamCity artifact. --> + <echo>##teamcity[publishArtifacts '${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name}']</echo> + </target> + + <!-- Copies the nightly build artifacts to the download server. --> + <target name="nightly-download-publish" if="nightly.publish"> + <!-- Publish to the download server. --> + <echo>Installing ${output-dir}/WebContent/${lib-jar-name} to ${nightly.publish}</echo> + <echo>Hopefully you have permissions for the copy operation with SSH.</echo> + + <!-- Only Linux tests allowed. TODO: Generalize this. --> + <property name="package.linux.filename" value="${result-path}/${product-file}-${package-platform}-${version.full}.tar.gz"/> + + <!-- Copy the linux installation package and the JAR. --> + <exec executable="scp" searchpath="true" resultproperty="nightly.install.scp.result"> + <arg value="-B"/> + <arg value="${output-dir}/WebContent/${lib-jar-name}"/> + <arg value="${package.linux.filename}"/> + <arg value="${nightly.publish}"/> + </exec> + + <echo>Result: ${nightly.install.scp.result}</echo> + </target> + + <target name="nightly-publish" depends="nightly-teamcity-publish, nightly-download-publish"> + </target> + + + <target name="nightly-maven-publish" depends=""> + <property file="${gpg.passphrase.file}" /> + <echo>Publishing ${output-dir}/WebContent/${lib-jar-name} to Maven repository</echo> + <artifact:mvn> + <arg value="gpg:sign-and-deploy-file"/> + <!-- .. is a workaround as maven runs in the build directory --> + <sysproperty key="file" value="../${output-dir}/WebContent/${lib-jar-name}" /> + <sysproperty key="pomFile" value="maven/pom.xml" /> + <sysproperty key="repositoryId" value="vaadin-snapshots" /> + <sysproperty key="url" value="http://oss.sonatype.org/content/repositories/vaadin-snapshots" /> + <sysproperty key="gpg.passphrase" value="${maven.gpg.passphrase}" /> + </artifact:mvn> + </target> + + <!-- ================================================================== --> + <!-- Automated tests. --> + <!-- ================================================================== --> + + <target name="tests" depends="ant-tests, testbench-tests"> + </target> + + <target name="testbench-tests" depends="init"> + <fail unless="product-file" message="The 'product-file' property must be defined."/> + <fail unless="package-platform" message="The 'package-platform' property must be defined."/> + <fail unless="version" message="The 'version' property must be defined."/> + + <echo>Version: ${version.full}</echo> + + <!-- Parameters for the test.xml script. --> + <fail unless="com.vaadin.testbench.tester.host" message="The 'com.vaadin.testbench.tester.host' property must be defined."/> + <fail unless="com.vaadin.testbench.deployment.url" message="The 'com.vaadin.testbench.deployment.url' property must be defined."/> + <fail unless="com.vaadin.testbench.lib.dir" message="The 'com.vaadin.testbench.lib.dir' property must be defined."/> + + <property name="package.platform.name" value="${product-file}-${package-platform}-${version.full}"/> + + <!-- Only Linux tests allowed. TODO: Generalize this. --> + <property name="package.linux.filename" value="${result-path}/${package.platform.name}.tar.gz"/> + <property name="package.linux.dir" value="${result-path}/${package.platform.name}.tar.gz"/> + + <!-- Run the separate test script. --> + <ant antfile="tests/test.xml" target="test-package" inheritall="false" inheritrefs="true"> + <!-- This is provided so that the test script can copy the --> + <!-- "tests" classes after unpacking the package. --> + <property name="output-dir" value="${output-dir}"/> + + <property name="package.filename" value="${package.linux.filename}"/> + <property name="testing.testarea" value="/tmp/testarea"/> + <property name="package.name" value="${package.platform.name}"/> + <property name="com.vaadin.testbench.tester.host" value="${com.vaadin.testbench.tester.host}"/> + <property name="com.vaadin.testbench.deployment.url" value="${com.vaadin.testbench.deployment.url}"/> + <property name="com.vaadin.testbench.lib.dir" value="${com.vaadin.testbench.lib.dir}"/> + </ant> + </target> + + <target name="ant-tests"> + <echo>##teamcity[testSuiteStarted name='com.vaadin.tests.test-framework']</echo> + + <!-- A smoke test for testing the testing framework. --> + <echo>##teamcity[testStarted name='testingSmoketest']</echo> + <echo>##teamcity[testStdOut name='testingSmoketest' out='Here be some text related to the test.]</echo> + <echo>##teamcity[testFinished name='testingSmoketest']</echo> + + <echo>##teamcity[testSuiteFinished name='com.vaadin.tests.test-framework']</echo> + </target> </project> + +<!-- These are for emacs. --> +<!-- Keep this comment at the end of the file +Local variables: +mode: xml +sgml-omittag:nil +sgml-shorttag:nil +sgml-namecase-general:nil +sgml-general-insert-case:lower +sgml-minimize-attributes:nil +sgml-always-quote-attributes:t +sgml-indent-step:4 +sgml-indent-data:t +sgml-parent-document:nil +sgml-exposed-tags:nil +sgml-local-catalogs:("/etc/sgml/catalog" "/usr/share/xemacs21/xemacs-packages/etc/psgml-dtds/CATALOG") +sgml-local-ecat-files:("ECAT" "~/sgml/ECAT" "/usr/share/sgml/ECAT" "/usr/local/share/sgml/ECAT" "/usr/local/lib/sgml/ECAT") +End: +--> |