Author: nickboldt
Date: 2010-05-17 15:17:01 -0400 (Mon, 17 May 2010)
New Revision: 22130
Added:
trunk/pom-all-components.xml
trunk/pom.xml
Modified:
trunk/build/build.xml
trunk/genpom.xml
trunk/parent-pom.xml
Log:
merge from branch into trunk
Modified: trunk/build/build.xml
===================================================================
--- trunk/build/build.xml 2010-05-17 18:26:10 UTC (rev 22129)
+++ trunk/build/build.xml 2010-05-17 19:17:01 UTC (rev 22130)
@@ -1,62 +1,129 @@
-<project default="run" basedir="." name="jbosstools
build.xml">
- <!-- Build a given list of ${COMPONENTS} -->
-
+<project default="run" basedir="." name="build.xml to wrap
maven">
<!-- ****************************** Configuration ******************************
-->
- <!-- set name of component(s) to build+test, IN ORDER -->
+ <!-- default maven version -->
+ <property name="maven.version" value="3.0-beta-1" />
+
+ <!-- set name of component(s) to build+test, IN ORDER; if no subcomponents, use
"." -->
<property name="COMPONENTS"
value="tests,common;
flow,jbpm;
jmx,archives,as;
- drools,bpel,smooks,freemarker,profiler,portlet;
+ drools,bpel,smooks,freemarker,profiler,portlet,modeshape;
xulrunner,jst,vpe,jsf;
esb,tptp,ws;
cdi,struts,hibernatetools,seam;
examples,birt;
maven"
/>
- <!-- TODO: add modeshape, which reqs JDK6 -->
<!-- svn root, including trunk or branch path -->
- <property name="svn.root"
value="http://anonsvn.jboss.org/repos/jbosstools/branches/modular_bu... />
+ <property name="svn.root"
value="http://anonsvn.jboss.org/repos/jbosstools" />
- <!-- default maven version -->
- <property name="maven.version" value="3.0-beta-1" />
+ <!-- if true, use -Dmaven.repo.local=${COMMON_TOOLS}/m2-repository; if false, use
default ~/.m2/repository; or set another path if preferred -->
+ <property name="maven.repo.local" value="true" />
+ <!-- name/version we're building -->
+ <property name="product.name" value="JBoss Tools" />
+ <property name="product.id" value="JBossTools" />
+ <property name="product.version" value="3.2.0-beta-1" />
+ <!--
+ <property name="product.name" value="JBoss Developer
Studio"/>
+ <property name="product.id" value="JBDS"/>
+ <property name="product.version" value="3.1.0-beta-1"/>
+ -->
+
+ <!-- TODO: connect build type (snapshot, milestone, release) to update site
description (nightly, milestone, stable) -->
+ <!-- update site description :: not used if site.xml already present -->
+ <property name="update.site.description" value="Nightly Build"
/>
+
<!-- ****************************** Usage Instructions ******************************
-->
<target name="help" description="Usage Instructions"
depends="init">
<echo>
To run this script in Eclipse:
- Run As > Ant Build
+ Run As > Ant Build
-To run this script via commandline (build default modules + run tests):
- cd /home/nboldt/workspace36/jbosstools-modular_build; ant
+To run this script via commandline (build default modules + run tests, then collect test
results and build per-component + overall update site zips):
+ cd /path/to/checked/out/source/tree; ant
or, to build everything but not *run* the tests:
- cd /home/nboldt/workspace36/jbosstools-modular_build; ant -DMAVEN_FLAGS="clean
install -Dmaven.test.skip"
+ ant -DMAVEN_FLAGS="clean install -Dmaven.test.skip"
+ or
+ ant -Dnotests=true
-or, to build specific module(s):
- cd /home/nboldt/workspace36/jbosstools-modular_build; ant
-DCOMPONENTS=tests,common,flow,jbpm
+or, to purge the local repo (or purge then build):
+ ant purge -q
+ or
+ ant clean-run
or, to rebuild even if sources have not changed:
- cd /home/nboldt/workspace36/jbosstools-modular_build; ant -DCOMPONENTS=tests,common
-Dbuild.if.sources.unchanged=true
+ ant -Dbuild.if.sources.unchanged=true
+or, to fetch fresh sources, then build anew:
+ ant -Dclean.sources=true
+
or, to (re-)run tests w/o (re-)building first:
- cd /home/nboldt/workspace36/jbosstools-modular_build; ant -DCOMPONENTS=tests,common,jmx
-DMAVEN_FLAGS="osgi-test:test -B -fn"
+ ant -DMAVEN_FLAGS="osgi-test:test -B -fn"
+
+or, to build, test, and install 1 or more specific module(s):
+ ant -DCOMPONENTS=tests,common,flow,jbpm
+or, to re-build a single component's update site w/o building, testing, and
installing it into the m2 repo:
+ ant -DCOMPONENT=jmx create.update.site
+
+or, to re-build the overall update site w/o building first (no applicable when
COMPONENTS=.):
+ ant create.overall.update.site -Dbuild.if.sources.unchanged=true
+
+To have hudson manage sources (rather than having this script checkout/update them) use:
+ -Dhudson.managed.sources=true
+
+Note: if tests stall on Linux, install Xvfb and this script will use that to run Maven,
unless use:
+ -DnoXvfb=true
+
Here is the order in which components must be built:
</echo>
- <for param="COMPONENT" list="${COMPONENTS}"
delimiter=";" >
+ <for param="COMPONENT" list="${COMPONENTS}"
delimiter=";">
<sequential>
- <echo message=" @{COMPONENT}" />
+ <echo message=" @{COMPONENT}," />
</sequential>
</for>
</target>
+ <!-- ******************* MAIN ENTRY TARGETS ******************* -->
+ <target name="clean-run" description="purge m2 repo, then run
build" depends="purge, run" />
+
+ <target name="purge" depends="init">
+ <antcall target="genPomXml">
+ <param name="COMPONENT" value="purge" />
+ <param name="packaging" value="pom" />
+ </antcall>
+ <antcall target="mvn">
+ <param name="COMPONENT" value="purge" />
+ <param name="MAVEN_DIR" value="${WORKINGDIR}/purge/site" />
+ <param name="MAVEN_FLAGS" value="dependency:purge-local-repository
-e -U -q -B -fae" />
+ <param name="noXvfb" value="true" />
+ </antcall>
+ <delete dir="${WORKINGDIR}/purge" includeemptydirs="true"
quiet="true" />
+ <delete dir="${COMMON_TOOLS}/m2-repository/org/jboss/tools"
includeemptydirs="true" quiet="true" />
+ </target>
+
<target name="run"
- depends="init, get.bootstrap.scripts, get.sources, get.components.to.build,
run.build, collect.all.test.results"
+ description="run a build, collect test results, generate overall update
site"
+ depends="build, collect.all.test.results, create.overall.update.site,
collect.update.site.results"
/>
+ <target name="build"
+ description="run a build"
+ depends="init, get.bootstrap.scripts, get.sources, get.components.to.build,
run.build"
+ />
+
+ <target name="test"
+ description="run tests w/o first getting sources + list of components to
build; assumes an upstream build job was already run"
+ depends="init, get.bootstrap.scripts, get.all.components, run.build,
collect.all.test.results"
+ />
+
+ <!-- ******************* MAIN ENTRY TARGETS ******************* -->
+
<!-- override for local build -->
<condition property="isInHudson" value="true">
<or>
@@ -90,18 +157,67 @@
</target>
<target name="get.svnant" unless="svnant.jar.exists">
+ <echo level="debug">${os.name}, ${os.arch}, ${os.version},
${osgi.os}</echo>
<property name="SVNANT_MIRROR"
value="http://www.tigris.org/files/documents/906/46267" />
- <!-- ant <get> does not work due to redirection; on Windows just download this
file manually -->
- <exec executable="wget" dir="${COMMON_TOOLS}">
- <arg line="${SVNANT_MIRROR}/svnant-1.3.0.zip --no-clobber" />
- </exec>
- <touch file="${COMMON_TOOLS}/svnant-1.3.0.zip" />
- <mkdir dir="${java.io.tmpdir}/svnant-1.3.0.zip_" />
- <unzip src="${COMMON_TOOLS}/svnant-1.3.0.zip"
dest="${java.io.tmpdir}/svnant-1.3.0.zip_" overwrite="true" />
- <copy todir="${COMMON_TOOLS}" failonerror="true">
- <fileset dir="${java.io.tmpdir}/svnant-1.3.0.zip_/svnant-1.3.0/lib/"
includes="*.jar" />
- </copy>
- <delete dir="${java.io.tmpdir}/svnant-1.3.0.zip_"
includeemptydirs="true" quiet="true" />
+ <if>
+ <istrue value="${isWindows}" />
+ <then>
+ <var name="svnant.enabled" unset="true" />
+ <var name="svnant.enabled" value="false" />
+ </then>
+ <else>
+ <exec executable="wget" dir="${COMMON_TOOLS}">
+ <arg line="${SVNANT_MIRROR}/svnant-1.3.0.zip --no-clobber" />
+ </exec>
+ </else>
+ </if>
+
+ <if>
+ <istrue value="${svnant.enabled}" />
+ <then>
+ <if>
+ <available file="${COMMON_TOOLS}/svnant-1.3.0.zip"
type="file" />
+ <then>
+ <touch file="${COMMON_TOOLS}/svnant-1.3.0.zip" />
+ <mkdir dir="${java.io.tmpdir}/svnant-1.3.0.zip_" />
+ <unzip src="${COMMON_TOOLS}/svnant-1.3.0.zip"
+ dest="${java.io.tmpdir}/svnant-1.3.0.zip_"
+ overwrite="true"
+ />
+ <copy todir="${COMMON_TOOLS}" failonerror="true">
+ <fileset dir="${java.io.tmpdir}/svnant-1.3.0.zip_/svnant-1.3.0/lib/"
includes="*.jar" />
+ </copy>
+ <delete dir="${java.io.tmpdir}/svnant-1.3.0.zip_"
includeemptydirs="true" quiet="true" />
+ </then>
+ <elseif>
+ <or>
+ <not>
+ <available file="${COMMON_TOOLS}/svnant.jar" type="file"
/>
+ </not>
+ <not>
+ <available file="${COMMON_TOOLS}/svnkit.jar" type="file"
/>
+ </not>
+ <not>
+ <available file="${COMMON_TOOLS}/svnClientAdapter.jar"
type="file" />
+ </not>
+ </or>
+ <then>
+ <fail>Error!
+Build cannot proceed!
+ Must install svnant.jar, svnkit.jar + svnClientAdapter.jar from
+ ${SVNANT_MIRROR}/svnant-1.3.0.zip
+ into ${COMMON_TOOLS}/.
+</fail>
+ </then>
+ </elseif>
+ </if>
+ </then>
+ <else>
+ <echo level="warning">Warning!
+Svnant unavailable. Will use Maven to fetch sources.
+</echo>
+ </else>
+ </if>
</target>
<target name="get.maven" unless="maven.exists">
@@ -120,15 +236,24 @@
<target name="init" depends="local">
<macrodef name="now">
+ <attribute name="level" default="warning" />
+ <text name="info" optional="true" />
<sequential>
<var name="now" unset="true" />
<tstamp>
<format property="now" pattern="hh:mm:ss" />
</tstamp>
- <echo>${now}</echo>
+ <echo level="@{level}">${now} @{info}</echo>
</sequential>
</macrodef>
+ <condition property="isWindows" value="true"
else="false">
+ <or>
+ <os family="windows" />
+ <contains string="${os.name}" substring="windows"
casesensitive="false" />
+ </or>
+ </condition>
+
<!--
https://jira.jboss.org/jira/browse/JBQA-3313 Use static, shared space outside
workspace, instead of working directly in the workspace -->
<condition property="WORKINGDIR"
value="/home/hudson/static_build_env/jbds/tools/sources"
else="${basedir}">
<available file="/home/hudson/static_build_env/jbds" type="dir"
/>
@@ -153,6 +278,7 @@
</classpath>
</taskdef>
+ <property name="svnant.enabled" value="true" />
<available file="${COMMON_TOOLS}/svnant.jar" type="file"
property="svnant.jar.exists" />
<antcall target="get.svnant" />
<taskdef resource="org/tigris/subversion/svnant/svnantlib.xml">
@@ -167,7 +293,7 @@
<antcall target="get.maven" />
</target>
- <target name="get.sources" description="if sources not already on
disk, fetch them">
+ <target name="get.sources" description="if sources not already on
disk, fetch them" unless="hudson.managed.sources">
<property name="clean.sources" value="false" />
<property name="svn.recurse" value="true" />
@@ -180,42 +306,115 @@
<attribute name="op" />
<sequential>
<!-- check out or update -->
- <now />
<if>
<equals arg1="@{op}" arg2="up" />
<then>
- <svn javahl="false" svnkit="true"
failonerror="false">
- <update recurse="${svn.recurse}" dir="@{component}" />
- </svn>
+ <now level="info">Update '@{COMPONENT}'</now>
+ <if>
+ <istrue value="${svnant.enabled}" />
+ <then>
+ <!-- remove generated site/ folder -->
+ <if>
+ <not>
+ <equals arg1="@{component}" arg2="." />
+ </not>
+ <then>
+ <delete dir="${WORKINGDIR}/@{component}/site"
+ includeemptydirs="true"
+ quiet="true"
+ />
+ </then>
+ </if>
+ <!--
+ <svn javahl="false" svnkit="true"
failonerror="false">
+ <revert recurse="${svn.recurse}" dir="@{component}"
/>
+ </svn>
+ -->
+ <svn javahl="false" svnkit="true"
failonerror="false">
+ <update recurse="${svn.recurse}" dir="@{component}"
/>
+ </svn>
+ </then>
+ <else>
+ <antcall target="mvn">
+ <param name="MAVEN_DIR" value="${WORKINGDIR}" />
+ <param name="MAVEN_FLAGS"
+ value="scm:update -f ${WORKINGDIR}/parent-pom.xml -e -q -B -fae
-Dmaven.test.skip -DworkingDirectory=${WORKINGDIR}/@{component}
-DconnectionUrl=scm:svn:${svn.root}/@{component}
-DdeveloperConnectionUrl=scm:svn:${svn.root}/@{component}"
+ />
+ <param name="noXvfb" value="true" />
+ </antcall>
+ </else>
+ </if>
</then>
<else>
- <echo level="info">Fetch sources from ${svn.root}/@{component} into
${WORKINGDIR}/@{component}</echo>
- <svn javahl="false" svnkit="true"
failonerror="true">
- <checkout recurse="${svn.recurse}"
- url="${svn.root}/@{component}"
- destpath="${WORKINGDIR}/@{component}"
- />
- </svn>
+ <now level="info">Fetch sources from ${svn.root}/@{component} into
${WORKINGDIR}/@{component}</now>
+ <if>
+ <istrue value="${svnant.enabled}" />
+ <then>
+ <svn javahl="false" svnkit="true"
failonerror="true">
+ <checkout recurse="${svn.recurse}"
+ url="${svn.root}/@{component}"
+ destpath="${WORKINGDIR}/@{component}"
+ />
+ </svn>
+ </then>
+ <else>
+ <antcall target="mvn">
+ <param name="MAVEN_DIR" value="${WORKINGDIR}" />
+ <param name="MAVEN_FLAGS"
+ value="scm:checkout -f ${WORKINGDIR}/parent-pom.xml -e -q -B -fae
-Dmaven.test.skip -DskipCheckoutIfExists=true
-DcheckoutDirectory=${WORKINGDIR}/@{component}
-DworkingDirectory=${WORKINGDIR}/@{component}
-DconnectionUrl=scm:svn:${svn.root}/@{component}
-DdeveloperConnectionUrl=scm:svn:${svn.root}/@{component}"
+ />
+ <param name="noXvfb" value="true" />
+ </antcall>
+ </else>
+ </if>
</else>
</if>
<!-- Store svn info so we can compare it later and thus not need to update or
checkout every time -->
- <svn javahl="false" svnkit="true"
failonerror="false">
- <info target="${WORKINGDIR}/@{component}"
propprefix="svn.info.@{component}" verbose="false" />
- </svn>
<if>
+ <istrue value="${svnant.enabled}" />
+ <then>
+ <svn javahl="false" svnkit="true"
failonerror="false">
+ <info target="${WORKINGDIR}/@{component}"
+ propprefix="svn.info.@{component}"
+ verbose="false"
+ />
+ </svn>
+ </then>
+ </if>
+ <if>
<isset property="svn.info.(a){component}.rev" />
<then>
<echo
file="${WORKINGDIR}/svn.info-@{component}.txt">svn.info.(a){component}.rev =
${svn.info.(a){component}.rev}
</echo>
</then>
</if>
- <echo file="build.cfg" message="@{component},"
append="true" />
+ <echo file="${WORKINGDIR}/build.cfg" message="@{component},"
append="true" />
</sequential>
</macrodef>
+ <!-- only reset the file if we don't already have a value for
COMPONENTS.to.build; thus when called later for "site" component build, append
instead of overwriting -->
+ <if>
+ <not>
+ <isset property="COMPONENTS.to.build" />
+ </not>
+ <then>
+ <echo file="${WORKINGDIR}/build.cfg" message="COMPONENTS.to.build =
" />
+ </then>
+ </if>
<!-- check for each component dir in ${WORKINGDIR}; if not found, fetch -->
- <echo file="build.cfg" message="COMPONENTS.to.build = " />
+ <if>
+ <and>
+ <isset property="COMPONENT" />
+ <not>
+ <equals arg1="${COMPONENT}" arg2="" />
+ </not>
+ </and>
+ <then>
+ <var name="COMPONENTS" unset="true" />
+ <var name="COMPONENTS" value="${COMPONENT}" />
+ </then>
+ </if>
<for param="COMPONENT" list="${COMPONENTS}" delimiter=",;
">
<sequential>
@@ -238,13 +437,18 @@
<then>
<property file="${WORKINGDIR}/svn.info-(a){COMPONENT}.txt" />
<!-- check svn info; if new version found, svn up -->
- <svn javahl="false" svnkit="true"
failonerror="false">
- <info target="${WORKINGDIR}/@{COMPONENT}"
- propprefix="svn.info.(a){COMPONENT}.check"
- verbose="false"
- />
- </svn>
<if>
+ <istrue value="${svnant.enabled}" />
+ <then>
+ <svn javahl="false" svnkit="true"
failonerror="false">
+ <info target="${WORKINGDIR}/@{COMPONENT}"
+ propprefix="svn.info.(a){COMPONENT}.check"
+ verbose="false"
+ />
+ </svn>
+ </then>
+ </if>
+ <if>
<or>
<not>
<isset property="svn.info.(a){COMPONENT}.rev" />
@@ -268,7 +472,7 @@
<istrue value="${build.if.sources.unchanged}" />
</and>
<then>
- <echo file="build.cfg" message="@{COMPONENT},"
append="true" />
+ <svn.fetch component="@{COMPONENT}" op="up" />
</then>
</if>
</else>
@@ -291,60 +495,242 @@
<get src="${svn.root}/genpom.xml"
dest="${WORKINGDIR}/genpom.xml" usetimestamp="true" />
</target>
+ <target name="get.all.components">
+ <var name="COMPONENTS.to.build" unset="true" />
+ <var name="COMPONENTS.to.build" value="" />
+ <for param="COMPONENT" list="${COMPONENTS}" delimiter=";
">
+ <sequential>
+ <var name="COMPONENTS.to.build"
value="${COMPONENTS.to.build}@{COMPONENT}," />
+ </sequential>
+ </for>
+ </target>
+
<target name="get.components.to.build">
- <property file="build.cfg" />
<if>
- <equals arg1="${COMPONENTS.to.build}" arg2="" />
+ <available file="${WORKINGDIR}/build.cfg" type="file" />
<then>
- <echo level="info">All components up to date: nothing to do!
+ <property file="${WORKINGDIR}/build.cfg" />
+ <if>
+ <equals arg1="${COMPONENTS.to.build}" arg2="" />
+ <then>
+ <echo level="warning">All components up to date: nothing to do!
To force a build of unchanged components, use
-Dbuild.if.sources.unchanged=true</echo>
- <!-- create fake test result file to avoid Hudson failure -->
- <delete dir="${basedir}/surefire-reports/NoTestsRun"
includeemptydirs="true" />
- <mkdir dir="${basedir}/surefire-reports/NoTestsRun" />
- <echo
file="${basedir}/surefire-reports/NoTestsRun/TEST-org.jboss.tools.NoTestsRun.xml"><?xml
version="1.0" encoding="UTF-8" ?>
+ <!-- create fake test result file to avoid Hudson failure -->
+ <delete dir="${basedir}/surefire-reports/NoTestsRun"
includeemptydirs="true" />
+ <mkdir dir="${basedir}/surefire-reports/NoTestsRun" />
+ <echo
file="${basedir}/surefire-reports/NoTestsRun/TEST-org.jboss.tools.NoTestsRun.xml"><?xml
version="1.0" encoding="UTF-8" ?>
<testsuite failures="0" time="0.001" errors="0"
skipped="0" tests="1"
name="org.jboss.tools.NoTestsRun">
<testcase time="0.001"
classname="org.jboss.tools.NoTestsRun" name="NoTestsRun"/>
</testsuite>
</echo>
+ <property name="no.tests.run" value="true" />
+ <property name="no.overall" value="true" />
+ </then>
+ <elseif>
+ <not>
+ <equals arg1="${COMPONENTS.to.build}" arg2=".," />
+ </not>
+ <then>
+ <echo level="warning">The following components' sources have
changed and will be built:
+ COMPONENTS.to.build = ${COMPONENTS.to.build}
+</echo>
+ </then>
+ </elseif>
+ <elseif>
+ <equals arg1="${COMPONENTS.to.build}" arg2=".," />
+ <then>
+ <property name="no.overall" value="true" />
+ </then>
+ </elseif>
+ </if>
</then>
+ <else>
+ <antcallback target="get.all.components"
return="COMPONENTS.to.build" />
+ </else>
</if>
</target>
<target name="run.build">
<!-- could set -Dmaven.test.skip to skip tests, or use osgi-test:test to just
(re-)run tests w/o first building -->
- <property name="MAVEN_FLAGS" value="clean install -B -fn -q"
/>
+ <property name="MAVEN_FLAGS" value="clean install -B -fn -q -U -e
-Dsurefire.useFile=false" />
+
+ <!-- commandline overrides to suppress doing tests -->
+ <if>
+ <or>
+ <isset property="notest" />
+ <isset property="notests" />
+ <isset property="skiptest" />
+ <isset property="skiptests" />
+ </or>
+ <then>
+ <property name="noXvfb" value="true" />
+ <if>
+ <not>
+ <contains string="${MAVEN_FLAGS}"
substring="-Dmaven.test.skip" />
+ </not>
+ <then>
+ <var name="MAVEN_FLAGS" value="${MAVEN_FLAGS}
-Dmaven.test.skip" />
+ </then>
+ </if>
+ </then>
+ </if>
+
<for param="COMPONENT" list="${COMPONENTS.to.build}"
delimiter=",
">
<sequential>
- <now />
- <!-- If poms already exist, DO NOT OVERWRITE unless
overwrite.existing.pom.xml=true -->
+ <if>
+ <equals arg1="@{COMPONENT}" arg2="site" />
+ <then>
+ <now level="warning">Build overall update @{COMPONENT}</now>
+ </then>
+ <else>
+ <now level="warning">Build '@{COMPONENT}'
component</now>
+ </else>
+ </if>
+ <!-- TODO if needed: optional extra instructions to do before a maven build
-->
+ <loadfile property="(a){COMPONENT}.pom.xml"
srcfile="${WORKINGDIR}/(a){COMPONENT}/pom.xml" />
+ <if>
+ <and>
+ <!-- if pom.xml does not call custom build.xml directly -->
+ <not>
+ <contains string="${(a){COMPONENT}.pom.xml}"
+ substring="<ant antfile="build.xml"
/>"
+ />
+ </not>
+ <available file="${WORKINGDIR}/(a){COMPONENT}/build.xml"
type="file" />
+ <not>
+ <equals arg1="@{COMPONENT}" arg2="." />
+ </not>
+ </and>
+ <then>
+ <echo>Run custom '(a){COMPONENT}/build.xml'</echo>
+ <ant antfile="${WORKINGDIR}/(a){COMPONENT}/build.xml">
+ <property name="COMPONENT" value="@{COMPONENT}" />
+ <property name="basedir" value="${WORKINGDIR}/@{COMPONENT}"
/>
+ </ant>
+ </then>
+ </if>
+
+ <!-- If poms already exist, DO NOT OVERWRITE unless
-Doverwrite.existing.pom.xml=true -->
<ant antfile="genpom.xml" target="run"
dir="${WORKINGDIR}">
<property name="COMPONENT" value="@{COMPONENT}" />
</ant>
- <echo level="verbose">Exe:
${COMMON_TOOLS}/apache-maven-${maven.version}/bin/mvn</echo>
- <echo level="verbose">Pom:
${WORKINGDIR}/(a){COMPONENT}/pom.xml</echo>
- <!-- 3 hr timeout = 10800000ms -->
- <exec
executable="${COMMON_TOOLS}/apache-maven-${maven.version}/bin/mvn"
- dir="${WORKINGDIR}/@{COMPONENT}"
- failifexecutionfails="true"
- failonerror="true"
- timeout="10800000"
- >
- <env key="M2_HOME"
value="${COMMON_TOOLS}/apache-maven-${maven.version}" />
- <env key="MAVEN_OPTS" value="-Xms512m -Xmx1024m -XX:PermSize=128m
-XX:MaxPermSize=256m" />
- <!-- more debug output with <env key="MAVEN_OPTS"
value="-Xdebug -Xnoagent -Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"/> -->
- <!-- <arg line="-o -Dmaven.test.skip" /> -->
- <arg line="${MAVEN_FLAGS}
-Dmaven.repo.local=${COMMON_TOOLS}/m2-repository" />
- </exec>
- <antcall target="collect.test.results">
+
+ <antcall target="mvn">
<param name="COMPONENT" value="@{COMPONENT}" />
</antcall>
+
+ <!-- don't collect test results if there are no test results to collect!
-->
+ <if>
+ <not>
+ <contains string="${MAVEN_FLAGS}"
substring="-Dmaven.test.skip" />
+ </not>
+ <then>
+ <antcall target="collect.test.results">
+ <param name="COMPONENT" value="@{COMPONENT}" />
+ </antcall>
+ </then>
+ <else>
+ <property name="no.tests.run" value="true" />
+ </else>
+ </if>
+
+ <!-- prevent recursion: overall site component is built with
create.overall.update.site, not simpler create.update.site; also, don't rebuild the
site if it's already been done by "." component -->
+ <if>
+ <and>
+ <not>
+ <equals arg1="@{COMPONENT}" arg2="site" />
+ </not>
+ <not>
+ <equals arg1="@{COMPONENT}" arg2="." />
+ </not>
+ </and>
+ <then>
+ <antcall target="create.update.site">
+ <param name="COMPONENT" value="@{COMPONENT}" />
+ </antcall>
+ </then>
+ </if>
</sequential>
</for>
- <now />
+ <now level="info">Builds done</now>
</target>
+ <target name="mvn">
+ <var name="mvnExe" value="mvn" />
+ <antcallback target="getMvnExe" return="mvnExe" />
+ <echo level="verbose">Exe:
${COMMON_TOOLS}/apache-maven-${maven.version}/bin/${mvnExe}</echo>
+ <echo level="verbose">Pom:
${WORKINGDIR}/${COMPONENT}/pom.xml</echo>
+ <property name="MAVEN_DIR" value="${WORKINGDIR}/${COMPONENT}"
/>
+ <!-- support using true/false/other path values of maven.repo.local -->
+ <if>
+ <isset property="maven.repo.local" />
+ <then>
+ <if>
+ <isfalse value="${maven.repo.local}" />
+ <then>
+ <var name="maven.repo.local" value="" />
+ </then>
+ <elseif>
+ <istrue value="${maven.repo.local}" />
+ <then>
+ <var name="maven.repo.local" value="
-Dmaven.repo.local=${COMMON_TOOLS}/m2-repository" />
+ </then>
+ </elseif>
+ <else>
+ <var name="maven.repo.local" value="
-Dmaven.repo.local=${maven.repo.local}" />
+ </else>
+ </if>
+ </then>
+ <else>
+ <var name="maven.repo.local" value="
-Dmaven.repo.local=${COMMON_TOOLS}/m2-repository" />
+ </else>
+ </if>
+ <!-- 3 hr timeout = 10800000ms -->
+ <echo level="info">${mvnExe} ${MAVEN_FLAGS}
${maven.repo.local}</echo>
+ <exec
executable="${COMMON_TOOLS}/apache-maven-${maven.version}/bin/${mvnExe}"
+ dir="${MAVEN_DIR}"
+ failifexecutionfails="true"
+ failonerror="true"
+ timeout="10800000"
+ >
+ <env key="M2_HOME"
value="${COMMON_TOOLS}/apache-maven-${maven.version}" />
+ <env key="MAVEN_OPTS" value="-Xms512m -Xmx1024m -XX:PermSize=128m
-XX:MaxPermSize=256m" />
+ <!-- more debug output with <env key="MAVEN_OPTS" value="-Xdebug
-Xnoagent -Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"/> -->
+ <!-- <arg line="-o -Dmaven.test.skip" /> -->
+ <arg line="${MAVEN_FLAGS} ${maven.repo.local}" />
+ </exec>
+ </target>
+
+ <!-- Use Xvfb wrapper for maven when invoking UI tests -->
+ <target name="getMvnExe" unless="noXvfb">
+ <if>
+ <available file="/usr/bin/Xvfb" type="file" />
+ <then>
+ <if>
+ <not>
+ <available
file="${COMMON_TOOLS}/apache-maven-${maven.version}/bin/mvnWithXvfb"
type="file" />
+ </not>
+ <then>
+ <echo
file="${COMMON_TOOLS}/apache-maven-${maven.version}/bin/mvnWithXvfb">#!/bin/bash
+if [[ -f /tmp/.X3-lock ]]; then
+kill -9 `cat /tmp/.X3-lock`
+rm -fr /tmp/.X3-lock
+fi
+/usr/bin/Xvfb :3 -ac 2>&1 1>/dev/null &
+DISPLAY=:3 /opt/maven3/bin/mvn $*
+kill -9 `cat /tmp/.X3-lock`
+rm -fr /tmp/.X3-lock
+</echo>
+ <chmod perm="755"
file="${COMMON_TOOLS}/apache-maven-${maven.version}/bin/mvnWithXvfb" />
+ </then>
+ </if>
+ <var name="mvnExe" value="mvnWithXvfb" />
+ </then>
+ </if>
+ </target>
+
<target name="collect.test.results">
<delete dir="${basedir}/surefire-reports/NoTestsRun"
includeemptydirs="true" />
<property name="COMPONENT" value="" />
@@ -360,12 +746,18 @@
</copy>
</target>
- <target name="collect.all.test.results">
+ <target name="collect.all.test.results"
unless="no.tests.run">
+ <var name="test.results.all" value="" />
+ <var name="test.results.errors.failures.skipped" value="" />
+
<!-- Parse this: <testsuite errors="0" skipped="0"
tests="10" time="0.042" failures="0"
name="org.jboss.tools.jmx.ui.JMXUIAllTests"> -->
<for param="testresultfile" delimiter=",
">
<path>
- <fileset dir="${basedir}/surefire-reports/"
includes="**/*.xml" />
+ <fileset dir="${basedir}/surefire-reports/"
+ includes="**/TEST-*.xml"
+ excludes="**/*pom.xml, **/build.xml"
+ />
</path>
<sequential>
<var name="testsuite.name" unset="true" />
@@ -401,8 +793,32 @@
</sequential>
</for>
- <echo level="info">${testsuite.name} ran ${testsuite.tests} tests in
${testsuite.time}s${testsuite.skipped}${testsuite.errors}${testsuite.failures}
-</echo>
+ <if>
+ <or>
+ <not>
+ <equals arg1="${testsuite.skipped}" arg2="" />
+ </not>
+ <not>
+ <equals arg1="${testsuite.errors}" arg2="" />
+ </not>
+ <not>
+ <equals arg1="${testsuite.failures}" arg2="" />
+ </not>
+ </or>
+ <then>
+ <var name="test.results.errors.failures.skipped"
+ value="${test.results.errors.failures.skipped}${testsuite.name} ran
${testsuite.tests} tests in
${testsuite.time}s${testsuite.skipped}${testsuite.errors}${testsuite.failures}${line.separator}"
+ />
+ </then>
+ </if>
+ <if>
+ <isset property="testsuite.name" />
+ <then>
+ <var name="test.results.all"
+ value="${test.results.all}${testsuite.name} ran ${testsuite.tests} tests
in
${testsuite.time}s${testsuite.skipped}${testsuite.errors}${testsuite.failures}${line.separator}"
+ />
+ </then>
+ </if>
<var name="testsuite.name" unset="true" />
<var name="testsuite.tests" unset="true" />
<var name="testsuite.time" unset="true" />
@@ -411,110 +827,583 @@
<var name="testsuite.failures" unset="true" />
</sequential>
</for>
+ <echo
level="verbose">-------------------------------------------------------
+ A L L T E S T R E S U L T S
+-------------------------------------------------------
+${test.results.all}
+-------------------------------------------------------
+
+</echo>
+ <if>
+ <and>
+ <isset property="test.results.errors.failures.skipped" />
+ <not>
+ <equals arg1="${test.results.errors.failures.skipped}"
arg2="" />
+ </not>
+ </and>
+ <then>
+ <echo
level="error">-------------------------------------------------------
+ T E S T R E S U L T S
+-------------------------------------------------------
+${test.results.errors.failures.skipped}
+-------------------------------------------------------
+
+</echo>
+ </then>
+ </if>
</target>
+ <!-- collect names, dates, and contained features in all generated update site zips,
including the overall one -->
+ <target name="collect.update.site.results" depends="init">
+ <var name="COMPONENTS.to.check" unset="" />
+ <if>
+ <isset property="COMPONENTS.to.build" />
+ <then>
+ <var name="COMPONENTS.to.check" value="${COMPONENTS.to.build}"
/>
+ </then>
+ <else>
+ <var name="COMPONENTS.to.check" value="${COMPONENTS}" />
+ </else>
+ </if>
+ <if>
+ <and>
+ <not>
+ <equals arg1="${COMPONENTS.to.check}" arg2="." />
+ </not>
+ <not>
+ <contains string="${COMPONENTS.to.check}" substring=",site"
/>
+ </not>
+ </and>
+ <then>
+ <var name="COMPONENTS.to.check"
value="${COMPONENTS.to.check},site" />
+ </then>
+ </if>
+ <for param="COMPONENT" list="${COMPONENTS.to.check}"
delimiter=",;
+ ">
+ <sequential>
+ <!-- rename any leftover site.zip files -->
+ <for param="updateZip">
+ <path>
+ <fileset dir="${WORKINGDIR}/@{COMPONENT}"
includes="**/site.zip" />
+ </path>
+ <sequential>
+ <if>
+ <equals arg1="@{COMPONENT}" arg2="site" />
+ <then>
+ <var name="destinationZip"
+
value="${WORKINGDIR}/(a){COMPONENT}/site/target/JBossTools-ALL-Update-SNAPSHOT.zip"
+ />
+ </then>
+ <else>
+ <var name="COMPONENT.name" value="" />
+ <if>
+ <equals arg1="@{COMPONENT}" arg2="." />
+ <then>
+ <var name="COMPONENT.name" value="${product.id}" />
+ </then>
+ <else>
+ <var name="COMPONENT.name" value="@{COMPONENTS}" />
+ </else>
+ </if>
+ <var name="destinationZip"
+
value="${WORKINGDIR}/(a){COMPONENT}/site/target/JBossTools-${COMPONENT.name}-Update-SNAPSHOT.zip"
+ />
+ </else>
+ </if>
+ <!-- rename resulting update site zip -->
+ <move file="${WORKINGDIR}/(a){COMPONENT}/site/target/site.zip"
+ tofile="${destinationZip}"
+ overwrite="true"
+ preservelastmodified="false"
+ />
+ </sequential>
+ </for>
+
+ <for param="updateZip">
+ <path>
+ <fileset dir="${WORKINGDIR}/@{COMPONENT}"
includes="**/JBossTools*Update*.zip" />
+ </path>
+ <sequential>
+ <propertyregex property="updateZip"
+ defaultvalue="@{updateZip}"
+ input="@{updateZip}"
+ regexp=".+/site/target/([^/]+.+\.zip)"
+ replace="\1"
+ override="true"
+ />
+ <exec executable="unzip" outputproperty="zip.contents">
+ <arg line="-l @{updateZip}" />
+ </exec>
+ <if>
+ <and>
+ <isset property="zip.contents" />
+ <contains string="${zip.contents}" substring="plugins/"
/>
+ <contains string="${zip.contents}" substring=".jar" />
+ </and>
+ <then>
+ <echo level="info">@{COMPONENT} :: ${updateZip}</echo>
+ <for param="featureJar" list="${zip.contents}"
delimiter="
+">
+ <sequential>
+ <if>
+ <and>
+ <contains string="@{featureJar}" substring="features/"
/>
+ <contains string="@{featureJar}" substring=".jar"
/>
+ </and>
+ <then>
+ <echo level="info"> :: @{featureJar}</echo>
+ </then>
+ </if>
+ </sequential>
+ </for>
+ </then>
+ <else>
+ <echo level="warn">@{COMPONENT} :: ${updateZip}</echo>
+ </else>
+ </if>
+ </sequential>
+ </for>
+ <if>
+ <not>
+ <isset property="zip.contents" />
+ </not>
+ <then>
+ <echo level="warn">No update site found for
@{COMPONENT}.</echo>
+ </then>
+ </if>
+ <var name="zip.contents" unset="true" />
+ <var name="zip.features" unset="true" />
+ <echo level="info">
+ </echo>
+ </sequential>
+ </for>
+ </target>
- <!-- TODO: generate site.xml files for components: gensite.xml script called by
build.xml -->
- <!-- TODO: zip up update site zips for each component; publish to
download.jboss.org
as part of deploy task -->
- <target name="zip.sites">
+ <!-- Used to build the overall update site for all components; requires a custom
site.xml (generated from category.*.xml) and previously checked in pom.xml -->
+ <target name="create.overall.update.site" depends="init"
unless="no.overall">
+ <if>
+ <isset property="no.overall" />
+ <then>
+ <echo>All components up to date: nothing to do!
+To force a build of unchanged components, use
-Dbuild.if.sources.unchanged=true</echo>
+ </then>
+ <else>
+ <property name="update.site.path" value="site" />
+ <!-- Fetch fresh sources (checkout or update) -->
+ <antcall target="get.sources">
+ <param name="COMPONENT" value="site" />
+ </antcall>
+
+ <!-- Get correct version of site.xml + resolve variables -->
+ <loadfile property="site.xml.transformed"
+
srcfile="${WORKINGDIR}/${update.site.path}/category.${product.id}.xml"
+ >
+ <filterchain>
+ <expandproperties />
+ </filterchain>
+ </loadfile>
+ <echo file="${WORKINGDIR}/${update.site.path}/site.xml"
message="${site.xml.transformed}" />
+ <var name="site.xml.transformed" unset="true" />
+
+ <!-- Build update site -->
+ <antcall target="build.update.site">
+ <param name="COMPONENTS.to.build" value="site" />
+ <param name="update.site.path" value="${update.site.path}"
/>
+ </antcall>
+
+ <!-- Copy overall site into workspace so it can be archived by Hudson -->
+ <if>
+ <not>
+ <equals arg1="${basedir}" arg2="${WORKINGDIR}" />
+ </not>
+ <then>
+ <mkdir dir="${basedir}/${update.site.path}/target" />
+ <copy todir="${basedir}/${update.site.path}/target"
overwrite="true">
+ <fileset dir="${WORKINGDIR}/${update.site.path}/target/site" />
+ </copy>
+ </then>
+ </if>
+ </else>
+ </if>
</target>
- <target name="deploy">
- <!-- TODO enable publishing to
download.jboss.org or
porkchop.jboss.com -->
- <property name="DESTINATION.jbosstools"
value="filemgmt.jboss.org/downloads_htdocs/tools/repository/" />
- <property name="DESTINATION.jbds"
value="/qa/services/http/binaries/RHDS/repository/" />
+ <target name="build.update.site">
+ <property name="update.site.path" value="site" />
+ <!-- without deleting previous target dir, update sites may end up missing all
plugins and features! -->
+ <delete dir="${WORKINGDIR}/${update.site.path}/target"
includeemptydirs="true" quiet="true" />
- <echo level="debug">Promote build in ${sourceZipsDirActual}
...</echo>
- <for param="aDir" list="${sourceZipsDirActual}"
delimiter=",
-">
- <sequential>
- <!-- rsync or copy build dir @{aDir} into ${targetZipsDir}/ -->
+ <if>
+ <equals arg1="${update.site.path}" arg2="site" />
+ <then>
+ <var name="destinationZip"
+
value="${WORKINGDIR}/${update.site.path}/target/JBossTools-ALL-Update-SNAPSHOT.zip"
+ />
+ </then>
+ <else>
+ <var name="COMPONENT.name" value="" />
<if>
- <available file="/usr/bin/rsync" type="file" />
+ <equals arg1="${COMPONENT}" arg2="." />
<then>
- <var name="rsyncCmd"
- value="/usr/bin/rsync -a${synchMethodParam} --exclude=eclipse/ @{aDir}
${targetZipsDir}/"
- />
- <echo message="${rsyncCmd}" />
- <exec executable="bash">
- <arg line=" -c "${rsyncCmd}"" />
- </exec>
- <var name="rsyncCmd" unset="true" />
+ <var name="COMPONENT.name" value="${product.id}" />
</then>
<else>
- <propertyregex override="true"
- property="aBuildDir"
- defaultvalue="@{aDir}"
- input="@{aDir}"
- regexp=".+/([^/]+)"
- replace="\1"
- />
- <echo>Copy ${aBuildDir} into ${targetZipsDir}/</echo>
- <mkdir dir="${targetZipsDir}/${aBuildDir}" />
- <copy todir="${targetZipsDir}/${aBuildDir}"
- includeemptydirs="true"
+ <var name="COMPONENT.name" value="${COMPONENTS.to.build}"
/>
+ </else>
+ </if>
+ <var name="destinationZip"
+
value="${WORKINGDIR}/${update.site.path}/target/JBossTools-${COMPONENT.name}-Update-SNAPSHOT.zip"
+ />
+ </else>
+ </if>
+ <delete file="${destinationZip}" quiet="true" />
+
+ <if>
+ <equals arg1="${COMPONENTS.to.build}" arg2="site" />
+ <then>
+ <!-- Call maven to generate pom.xml, then build site from site.xml -->
+ <antcall target="run.build">
+ <param name="COMPONENTS.to.build"
value="${COMPONENTS.to.build}" />
+ <param name="MAVEN_FLAGS" value="verify -e -q -B -fae
-Dmaven.test.skip" />
+ <param name="noXvfb" value="true" />
+ </antcall>
+ </then>
+ <else>
+ <!-- Or just call maven to build site -->
+ <antcall target="mvn">
+ <param name="MAVEN_DIR"
value="${WORKINGDIR}/${update.site.path}" />
+ <param name="MAVEN_FLAGS" value="verify -e -q -B -fae
-Dmaven.test.skip" />
+ <param name="noXvfb" value="true" />
+ </antcall>
+ </else>
+ </if>
+
+ <if>
+ <and>
+ <available file="${WORKINGDIR}/${update.site.path}/target/site/plugins"
type="dir" />
+ <available file="${WORKINGDIR}/${update.site.path}/target/site/features"
type="dir" />
+ </and>
+ <then>
+ <!-- rename resulting update site zip -->
+ <move file="${WORKINGDIR}/${update.site.path}/target/site.zip"
+ tofile="${destinationZip}"
+ overwrite="true"
+ preservelastmodified="false"
+ />
+
+ <!-- Create real update site zip, including web UI -->
+ <copy todir="${WORKINGDIR}/${update.site.path}/target/site">
+ <fileset dir="${WORKINGDIR}/${update.site.path}" includes="web/*,
index.html" />
+ </copy>
+ <zip destfile="${destinationZip}"
+ basedir="${WORKINGDIR}/${update.site.path}/target/site"
+ update="true"
+ includes="web/*, index.html"
+ />
+
+ <!-- Copy zip into workspace so it can be archived by Hudson -->
+ <if>
+ <not>
+ <equals arg1="${basedir}" arg2="${WORKINGDIR}" />
+ </not>
+ <then>
+ <mkdir dir="${basedir}/${update.site.path}/target" />
+ <copy todir="${basedir}/${update.site.path}/target"
+ flatten="true"
preservelastmodified="true"
- failonerror="true"
+ overwrite="true"
- <fileset dir="@{aDir}"
excludes="eclipse/" />
+ <fileset dir="${WORKINGDIR}/${update.site.path}/target"
includes="*Update*.zip" />
</copy>
+ </then>
+ </if>
+ </then>
+ <else>
+ <delete file="${WORKINGDIR}/${update.site.path}/target/site.zip"
quiet="true" />
+ <if>
+ <equals arg1="${update.site.path}" arg2="site" />
+ <then>
+ <fail>Overall update site zip contains no features!</fail>
+ </then>
+ <else>
+ <echo level="info">Update site zip for ${COMPONENTS.to.build}
contains no features!</echo>
</else>
</if>
+ </else>
+ </if>
+ </target>
- <!-- unpack update zip(s) -->
+ <!-- Used to build the update site of a component; requires a site.xml and pom.xml be
generated first, if not already checked in -->
+ <target name="create.update.site" depends="init">
+ <var name="site.pom.exists" unset="true" />
+ <condition property="site.pom.exists">
+ <available file="${WORKINGDIR}/${COMPONENT}/site/pom.xml"
type="file" />
+ </condition>
+ <antcall target="genPomXml" />
+
+ <var name="site.sitexml.exists" unset="true" />
+ <condition property="site.sitexml.exists">
+ <available file="${WORKINGDIR}/${COMPONENT}/site/site.xml"
type="file" />
+ </condition>
+ <antcall target="genSiteXml" />
+
+ <antcall target="build.update.site">
+ <param name="COMPONENTS.to.build" value="${COMPONENT}" />
+ <param name="update.site.path" value="${COMPONENT}/site" />
+ </antcall>
+ </target>
+
+ <target name="genPomXml" description="Generate a pom.xml"
unless="site.pom.exists">
+ <property name="pomDir" value="${WORKINGDIR}/${COMPONENT}/site"
/>
+ <property name="COMPONENT" value="${COMPONENT}" />
+ <property name="packaging" value="eclipse-update-site" />
+ <mkdir dir="${pomDir}" />
+ <echo file="${pomDir}/pom.xml"><project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <relativePath>../../parent-pom.xml</relativePath>
+ <groupId>org.jboss.tools</groupId>
+ <artifactId>org.jboss.tools.parent.pom</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+ <groupId>org.jboss.tools</groupId>
+ <artifactId>${COMPONENT}.site</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>${packaging}</packaging>
+</project>
+</echo>
+
+ </target>
+
+ <target name="genSiteXml"
+ description="Generate a site.xml to contain the features in a
category"
+ unless="site.sitexml.exists"
+ >
+ <property name="updateSiteJarDir"
value="${WORKINGDIR}/${COMPONENT}/site" />
+ <property name="COMPONENT" value="${COMPONENT}" />
+ <property name="category.name" value="${product.name} ${COMPONENT}
${update.site.description} Update Site" />
+
+ <mkdir dir="${updateSiteJarDir}" />
+ <echo file="${updateSiteJarDir}/site.xml"><?xml
version="1.0" encoding="UTF-8"?>
+<site>
+ <description>To install these features, point Eclipse at this
site.</description>
+ <!-- ${category.name} -->
+ <category-def label="${category.name}"
name="${category.name}">
+ <description>${category.name}: contains all features in this
build.</description>
+ </category-def>
+</echo>
+
+ <mkdir dir="${updateSiteJarDir}/../features" />
+ <for param="featureJar">
+ <path>
+ <fileset dir="${updateSiteJarDir}/../features"
includes="**/target/*.jar" excludes="**/*test*" />
+ </path>
+ <sequential>
+ <var name="feature.jarfile" unset="true" />
+ <var name="feature.id" unset="true" />
+ <antcallback target="get.feature.id" return="feature.id">
+ <property name="featureJar" value="@{featureJar}" />
+ </antcallback>
+ <echo append="true"
file="${updateSiteJarDir}/site.xml"> <feature
url="features/${feature.id}_0.0.0.jar" id="${feature.id}"
version="0.0.0">
+ <category name="${category.name}"/>
+ </feature>
+</echo>
+ <var name="feature.jarfile" unset="true" />
+ <var name="feature.id" unset="true" />
+ </sequential>
+ </for>
+ <echo append="true" file="${updateSiteJarDir}/site.xml">
+</site>
+</echo>
+ </target>
+
+ <target name="get.feature.id">
+ <antcallback target="get.artifact.id" return="artifact.id">
+ <param name="regexp.path"
value=".+/features/[^/]+/target/([^/]+feature.+\.jar)" />
+ <param name="artifactJar" value="${featureJar}" />
+ </antcallback>
+ <var name="feature.id" value="${artifact.id}" />
+ </target>
+
+ <target name="get.plugin.id">
+ <antcallback target="get.artifact.id" return="artifact.id">
+ <param name="regexp.path" value=".+/plugins/([^/]+.+\.jar)"
/>
+ <param name="artifactJar" value="${pluginJar}" />
+ </antcallback>
+ <var name="plugin.id" value="${artifact.id}" />
+ </target>
+
+ <target name="get.artifact.id">
+ <!-- for a feature:
regexp=".+/features/[^/]+/target/([^/]+feature.+\.jar)"
+ for a plugin: regexp=".+/plugins/([^/]+.+\.jar)" -->
+ <property name="regexp.path" value=".+/plugins/([^/]+.+\.jar)"
/>
+
+ <propertyregex property="artifact.jarfile"
+ defaultvalue="${artifactJar}"
+ input="${artifactJar}"
+ regexp="${regexp.path}"
+ replace="\1"
+ override="true"
+ />
+ <propertyregex property="artifact.id"
+ defaultvalue="${artifact.jarfile}"
+ input="${artifact.jarfile}"
+ regexp="([^_]+)_(\d+\.\d+\.\d+.+)\.jar"
+ replace="\1"
+ override="true"
+ />
+ <propertyregex property="artifact.id"
+ defaultvalue="${artifact.id}"
+ input="${artifact.id}"
+ regexp="([^_]+)-(\d+\.\d+\.\d+.+)\.jar"
+ replace="\1"
+ override="true"
+ />
+ <propertyregex property="artifact.id"
+ defaultvalue="${artifact.id}"
+ input="${artifact.id}"
+ regexp="([^_]+)-(\d+\.\d+\.\d+.SNAPSHOT)\.jar"
+ replace="\1"
+ override="true"
+ />
+ <var name="artifactJar" unset="true" />
+ </target>
+
+ <!-- unpack previously built & jarred plugin jars -->
+ <target name="unjarPlugins">
+ <for param="artifactJar">
+ <path>
+ <fileset dir="${WORKINGDIR}/${COMPONENT}/plugins/"
includes="*.jar" />
+ </path>
+ <sequential>
+ <antcallback target="get.artifact.id"
return="artifact.id">
+ <property name="artifactJar" value="@{artifactJar}" />
+ <property name="regexp.path"
value=".+/plugins/([^/]+.+\.jar)" />
+ </antcallback>
+ <unzip src="@{artifactJar}"
dest="${WORKINGDIR}/${COMPONENT}/plugins/${artifact.id}"
overwrite="true" />
+ <var name="artifact.id" unset="true" />
+ </sequential>
+ </for>
+ </target>
+
+ <!-- rename previously built & unpacked feature dirs -->
+ <target name="renameFeatures">
+ <echo level="debug">${WORKINGDIR}/${COMPONENT}/features</echo>
+ <for param="artifactJar">
+ <path>
+ <dirset dir="${WORKINGDIR}/${COMPONENT}/features"
includes="*feature_*" />
+ </path>
+ <sequential>
+ <antcallback target="get.artifact.id"
return="artifact.id">
+ <property name="artifactJar" value="@{artifactJar}" />
+ <property name="regexp.path"
value=".+/features/([^/]+feature)_\d+.+" />
+ </antcallback>
+ <move file="@{artifactJar}"
+ tofile="${WORKINGDIR}/${COMPONENT}/features/${artifact.id}"
+ overwrite="true"
+ />
+ <var name="artifact.id" unset="true" />
+ </sequential>
+ </for>
+ </target>
+
+ <!-- for a given ${COMPONENT} dir, switch all plugin/feature manifests from .SNAPSHOT
to .qualifier -->
+ <target name="snapshot2qualifier">
+ <property name="COMPONENT" value="" />
+ <for param="artifactManifest">
+ <path>
+ <fileset dir="${WORKINGDIR}/${COMPONENT}"
+ excludes="**/target/**"
+ includes="**/plugins/**/**/MANIFEST.MF,
**/features/**/feature.xml"
+ />
+ </path>
+ <sequential>
+ <loadfile property="artifact.file"
srcfile="@{artifactManifest}">
+ <filterchain>
+ <replaceregex pattern="([0-9]+).SNAPSHOT"
replace="\1.qualifier" />
+ </filterchain>
+ </loadfile>
+ <echo file="@{artifactManifest}" message="${artifact.file}"
/>
+ <var name="artifact.file" unset="true" />
+ </sequential>
+ </for>
+ </target>
+
+ <!-- include a build.properties file if one not provided -->
+ <target name="genBuildProperties">
+ <for param="artifactDir">
+ <path>
+ <dirset dir="${WORKINGDIR}/${COMPONENT}/features/"
excludes="." includes="*" />
+ <dirset dir="${WORKINGDIR}/${COMPONENT}/plugins/" excludes="."
includes="*" />
+ </path>
+ <sequential>
<if>
- <and>
- <isset property="targetUpdateDir" />
- <not>
- <equals arg1="${targetUpdateDir}" arg2="" />
- </not>
- </and>
+ <not>
+ <available file="(a){artifactDir}/build.properties"
type="file" />
+ </not>
<then>
- <for param="anUpdateZip">
- <path>
- <fileset dir="@{aDir}" includes="*-Update-*.zip" />
- </path>
- <sequential>
- <unzip dest="${targetUpdateDir}/"
- src="@{anUpdateZip}"
- overwrite="${unzipMethodParam}"
- />
- <for param="subdir">
- <path>
- <dirset dir="${targetUpdateDir}/" />
- </path>
- <sequential>
- <copy file="staticDropFiles/index.php" todir="@{subdir}"
/>
- </sequential>
- </for>
- </sequential>
- </for>
+ <echo file="(a){artifactDir}/build.properties">bin.includes =
feature.*, ., plugin.*, about.*, META-INF/, .options/, lib/, help/, icons/, org/, src/
+</echo>
</then>
</if>
</sequential>
</for>
- <!--
- <get usetimestamp="true"
- dest="${COMMON_TOOLS}/maven-ant-tasks-2.1.0.jar"
- src="${MAVEN_MIRROR}/maven-ant-tasks-2.1.0.jar"
- />
- <taskdef resource="org/apache/maven/artifact/ant/antlib.xml">
- <classpath>
- <pathelement location="${COMMON_TOOLS}/maven-ant-tasks-2.1.0.jar" />
- </classpath>
- </taskdef>
- <install-provider artifactId="wagon-ssh"
version="1.0-beta-2"/>
- <deploy>
-
- <remoteRepository url="scp://${DESTINATION}">
- <authentication username="tools"
privateKey="${user.home}/.ssh/id_rsa" />
- </remoteRepository>
- <pom refid="mypom" />
- </deploy>
- -->
</target>
+ <!-- TODO: figure out why this fails with error:
+ insecure -e option not allowed.
+ This account is restricted by rssh.
+ Allowed commands: scp sftp rsync
+ -->
+ <target name="deploy" if="isInHudson" depends="init,
get.bootstrap.scripts">
+ <!-- default destinations -->
+ <property name="DESTINATION.jbosstools"
value="tools@filemgmt.jboss.org:/downloads_htdocs/tools/repository" />
+ <property name="DESTINATION.jbds"
value="/qa/services/http/binaries/RHDS/repository" />
+
+ <!-- values for this deployment -->
+ <property name="deployDir"
value="${DESTINATION.jbosstools}/SNAPSHOT" />
+ <property name="sourceDir" value="${WORKINGDIR}" />
+ <property name="synchMethodParam" value=" --delete" />
+
+ <echo level="debug">Promote build in ${sourceDir} ...</echo>
+ <!-- rsync or scp build dir ${sourceDir} into ${deployDir}/ -->
+ <if>
+ <available file="/usr/bin/rsync" type="file" />
+ <then>
+ <var name="deployCmd"
+ value="/usr/bin/rsync -arz --delete --include=*/*/*/target/ --include=*.xml
--include=svn.info*.txt --include=${WORKINGDIR}/build.cfg --exclude=eclipse/ ${sourceDir}
${deployDir}/"
+ />
+ </then>
+ <elseif>
+ <available file="/usr/bin/scp" type="file" />
+ <then>
+ <var name="deployCmd" value="/usr/bin/scp -r ${sourceDir}
${deployDir}/" />
+ </then>
+ </elseif>
+ <else>
+ <fail>ERROR!
+Cannot deploy - please install scp or rsync on this server and try again.
+</fail>
+ </else>
+ </if>
+ <if>
+ <available file="${sourceDir}" type="dir" />
+ <then>
+ <echo message="${deployCmd}" />
+ <exec executable="bash" failonerror="true">
+ <arg line=" -c "${deployCmd}"" />
+ </exec>
+ </then>
+ <else>
+ <fail>ERROR!
+Cannot deploy - sourceDir not found in
+ ${sourceDir}
+</fail>
+ </else>
+ </if>
+
+ </target>
+
<!-- ************************************ TESTS ************************************
-->
<target name="test.expected.values">
@@ -522,7 +1411,7 @@
<!-- expected values for get.sources.* tests -->
<property name="get.sources.expected.dirs"
value="tests,common,xulrunner," />
- <property name="get.sources.expected.files" value="build.cfg"
/>
+ <property name="get.sources.expected.files"
value="${WORKINGDIR}/build.cfg" />
<!-- expected values for test.get.sources.build.updated.only tests -->
<property name="get.components.to.build.expected.2"
value="tests,common,xulrunner," />
@@ -534,14 +1423,317 @@
<property name="get.components.to.build.expected.4.all"
value="tests,common,xulrunner," />
<property name="get.components.to.build.expected.6.all"
value="tests,common,xulrunner," />
+ <!-- expected values for test.get.all.components -->
+ <property name="get.all.components.expected"
+
value="tests,common,flow,jbpm,jmx,archives,as,drools,bpel,smooks,freemarker,profiler,portlet,xulrunner,jst,vpe,jsf,esb,tptp,ws,cdi,struts,hibernatetools,seam,examples,birt,maven,"
+ />
+
+ <!-- expected values for test.get.feature.id -->
+ <property
name="get.artifact.id.expected.tests/features/org.jboss.tools.test.feature/target/org.jboss.tools.test.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.test.feature"
+ />
+ <property
name="get.artifact.id.expected.common/features/org.jboss.tools.common.all.feature/target/org.jboss.tools.common.all.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.common.all.feature"
+ />
+ <property
name="get.artifact.id.expected.common/features/org.jboss.tools.common.all.tests.feature/target/org.jboss.tools.common.all.tests.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.common.all.tests.feature"
+ />
+ <property
name="get.artifact.id.expected.common/features/org.jboss.tools.common.core.feature/target/org.jboss.tools.common.core.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.common.core.feature"
+ />
+ <property
name="get.artifact.id.expected.common/features/org.jboss.tools.common.feature/target/org.jboss.tools.common.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.common.feature"
+ />
+ <property
name="get.artifact.id.expected.common/features/org.jboss.tools.common.text.ext.feature/target/org.jboss.tools.common.text.ext.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.common.text.ext.feature"
+ />
+ <property
name="get.artifact.id.expected.common/features/org.jboss.tools.common.ui.feature/target/org.jboss.tools.common.ui.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.common.ui.feature"
+ />
+ <property
name="get.artifact.id.expected.common/features/org.jboss.tools.common.verification.feature/target/org.jboss.tools.common.verification.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.common.verification.feature"
+ />
+ <property
name="get.artifact.id.expected.flow/features/org.jboss.tools.flow.common.feature/target/org.jboss.tools.flow.common.feature-4.0.0-SNAPSHOT.jar"
+ value="org.jboss.tools.flow.common.feature"
+ />
+ <property
name="get.artifact.id.expected.jbpm/features/org.jboss.tools.flow.jpdl4.feature/target/org.jboss.tools.flow.jpdl4.feature-4.0.0-SNAPSHOT.jar"
+ value="org.jboss.tools.flow.jpdl4.feature"
+ />
+ <property
name="get.artifact.id.expected.jbpm/features/org.jboss.tools.jbpm.common.feature/target/org.jboss.tools.jbpm.common.feature-4.3.0-SNAPSHOT.jar"
+ value="org.jboss.tools.jbpm.common.feature"
+ />
+ <property
name="get.artifact.id.expected.jbpm/features/org.jboss.tools.jbpm.convert.feature/target/org.jboss.tools.jbpm.convert.feature-1.0.0-SNAPSHOT.jar"
+ value="org.jboss.tools.jbpm.convert.feature"
+ />
+ <property
name="get.artifact.id.expected.jbpm/features/org.jboss.tools.jbpm3.feature/target/org.jboss.tools.jbpm3.feature-3.2.0-SNAPSHOT.jar"
+ value="org.jboss.tools.jbpm3.feature"
+ />
+ <property
name="get.artifact.id.expected.jbpm/features/org.jboss.tools.jbpm3.tests.feature/target/org.jboss.tools.jbpm3.tests.feature-3.2.0-SNAPSHOT.jar"
+ value="org.jboss.tools.jbpm3.tests.feature"
+ />
+ <property
name="get.artifact.id.expected.jbpm/features/org.jboss.tools.jbpm4.feature/target/org.jboss.tools.jbpm4.feature-4.0.0-SNAPSHOT.jar"
+ value="org.jboss.tools.jbpm4.feature"
+ />
+ <property
name="get.artifact.id.expected.jbpm/features/org.jboss.tools.jbpm4.tests.feature/target/org.jboss.tools.jbpm4.tests.feature-4.3.0-SNAPSHOT.jar"
+ value="org.jboss.tools.jbpm4.tests.feature"
+ />
+ <property
name="get.artifact.id.expected.jbpm/features/org.jbpm.gd.jpdl.feature/target/org.jbpm.gd.jpdl.feature-3.2.0-SNAPSHOT.jar"
+ value="org.jbpm.gd.jpdl.feature"
+ />
+ <property
name="get.artifact.id.expected.jmx/features/org.jboss.tools.jmx.feature/target/org.jboss.tools.jmx.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.jmx.feature"
+ />
+ <property
name="get.artifact.id.expected.jmx/features/org.jboss.tools.jmx.tests.feature/target/org.jboss.tools.jmx.tests.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.jmx.tests.feature"
+ />
+ <property
name="get.artifact.id.expected.archives/features/org.jboss.ide.eclipse.archives.feature/target/org.jboss.ide.eclipse.archives.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.ide.eclipse.archives.feature"
+ />
+ <property
name="get.artifact.id.expected.archives/features/org.jboss.ide.eclipse.archives.test.feature/target/org.jboss.ide.eclipse.archives.test.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.ide.eclipse.archives.test.feature"
+ />
+ <property
name="get.artifact.id.expected.as/features/org.jboss.ide.eclipse.as.test.feature/target/org.jboss.ide.eclipse.as.test.feature-2.1.0-SNAPSHOT.jar"
+ value="org.jboss.ide.eclipse.as.test.feature"
+ />
+ <property
name="get.artifact.id.expected.bpel/features/org.jboss.tools.bpel.feature/target/org.jboss.tools.bpel.feature-1.0.0-SNAPSHOT.jar"
+ value="org.jboss.tools.bpel.feature"
+ />
+ <property
name="get.artifact.id.expected.bpel/features/org.jboss.tools.bpel.tests.feature/target/org.jboss.tools.bpel.tests.feature-1.0.0-SNAPSHOT.jar"
+ value="org.jboss.tools.bpel.tests.feature"
+ />
+ <property
name="get.artifact.id.expected.smooks/features/org.jboss.tools.smooks.feature/target/org.jboss.tools.smooks.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.smooks.feature"
+ />
+ <property
name="get.artifact.id.expected.smooks/features/org.jboss.tools.smooks.test.feature/target/org.jboss.tools.smooks.test.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.smooks.test.feature"
+ />
+ <property
name="get.artifact.id.expected.freemarker/features/org.jboss.ide.eclipse.freemarker.feature/target/org.jboss.ide.eclipse.freemarker.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.ide.eclipse.freemarker.feature"
+ />
+ <property
name="get.artifact.id.expected.freemarker/features/org.jboss.ide.eclipse.freemarker.test.feature/target/org.jboss.ide.eclipse.freemarker.test.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.ide.eclipse.freemarker.test.feature"
+ />
+ <property
name="get.artifact.id.expected.profiler/features/org.jboss.tools.profiler.feature/target/org.jboss.tools.profiler.feature-1.0.0-SNAPSHOT.jar"
+ value="org.jboss.tools.profiler.feature"
+ />
+ <property
name="get.artifact.id.expected.portlet/features/org.jboss.tools.portlet.feature/target/org.jboss.tools.portlet.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.portlet.feature"
+ />
+ <property
name="get.artifact.id.expected.portlet/features/org.jboss.tools.portlet.test.feature/target/org.jboss.tools.portlet.test.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.portlet.test.feature"
+ />
+ <property
name="get.artifact.id.expected.jst/features/org.jboss.tools.jst.feature/target/org.jboss.tools.jst.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.jst.feature"
+ />
+ <property
name="get.artifact.id.expected.jst/features/org.jboss.tools.jst.web.tiles.feature/target/org.jboss.tools.jst.web.tiles.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.jst.web.tiles.feature"
+ />
+ <property
name="get.artifact.id.expected.vpe/features/org.jboss.tools.vpe.feature/target/org.jboss.tools.vpe.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.vpe.feature"
+ />
+ <property
name="get.artifact.id.expected.vpe/features/org.jboss.tools.xulrunner.feature/target/org.jboss.tools.xulrunner.feature-1.9.1.2.jar"
+ value="org.jboss.tools.xulrunner.feature"
+ />
+ <property
name="get.artifact.id.expected.jsf/features/org.jboss.tools.jsf.feature/target/org.jboss.tools.jsf.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.jsf.feature"
+ />
+ <property
name="get.artifact.id.expected.jsf/features/org.jboss.tools.richfaces.feature/target/org.jboss.tools.richfaces.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.richfaces.feature"
+ />
+ <property
name="get.artifact.id.expected.esb/features/org.jboss.tools.esb.feature/target/org.jboss.tools.esb.feature-1.3.0-SNAPSHOT.jar"
+ value="org.jboss.tools.esb.feature"
+ />
+ <property
name="get.artifact.id.expected.esb/features/org.jboss.tools.esb.test.feature/target/org.jboss.tools.esb.test.feature-1.3.0-SNAPSHOT.jar"
+ value="org.jboss.tools.esb.test.feature"
+ />
+ <property
name="get.artifact.id.expected.tptp/features/org.jboss.tools.tptp.feature/target/org.jboss.tools.tptp.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.tptp.feature"
+ />
+ <property
name="get.artifact.id.expected.ws/features/org.jboss.tools.ws.feature/target/org.jboss.tools.ws.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.ws.feature"
+ />
+ <property
name="get.artifact.id.expected.cdi/features/org.jboss.tools.cdi.feature/target/org.jboss.tools.cdi.feature-1.0.0-SNAPSHOT.jar"
+ value="org.jboss.tools.cdi.feature"
+ />
+ <property
name="get.artifact.id.expected.struts/features/org.jboss.tools.struts.feature/target/org.jboss.tools.struts.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.struts.feature"
+ />
+ <property
name="get.artifact.id.expected.hibernatetools/features/org.hibernate.eclipse.feature/target/org.hibernate.eclipse.feature-3.3.0-SNAPSHOT.jar"
+ value="org.hibernate.eclipse.feature"
+ />
+ <property
name="get.artifact.id.expected.hibernatetools/features/org.hibernate.eclipse.test.feature/target/org.hibernate.eclipse.test.feature-3.3.0-SNAPSHOT.jar"
+ value="org.hibernate.eclipse.test.feature"
+ />
+ <property
name="get.artifact.id.expected.seam/features/org.jboss.tools.seam.feature/target/org.jboss.tools.seam.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.seam.feature"
+ />
+ <property
name="get.artifact.id.expected.seam/features/org.jboss.tools.seam.test.feature/target/org.jboss.tools.seam.test.feature-3.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.seam.test.feature"
+ />
+ <property
name="get.artifact.id.expected.examples/features/org.jboss.tools.community.project.examples.feature/target/org.jboss.tools.community.project.examples.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.community.project.examples.feature"
+ />
+ <property
name="get.artifact.id.expected.examples/features/org.jboss.tools.project.examples.feature/target/org.jboss.tools.project.examples.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.project.examples.feature"
+ />
+ <property
name="get.artifact.id.expected.examples/features/org.jboss.tools.project.examples.test.feature/target/org.jboss.tools.project.examples.test.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.project.examples.test.feature"
+ />
+ <property
name="get.artifact.id.expected.birt/features/org.jboss.tools.birt.feature/target/org.jboss.tools.birt.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.birt.feature"
+ />
+ <property
name="get.artifact.id.expected.birt/features/org.jboss.tools.birt.test.feature/target/org.jboss.tools.birt.test.feature-1.1.0-SNAPSHOT.jar"
+ value="org.jboss.tools.birt.test.feature"
+ />
+ <property
name="get.artifact.id.expected.maven/features/org.jboss.tools.maven.feature/target/org.jboss.tools.maven.feature-1.0.0-SNAPSHOT.jar"
+ value="org.jboss.tools.maven.feature"
+ />
+ <property
name="get.artifact.id.expected.maven/features/org.jboss.tools.maven.seam.feature/target/org.jboss.tools.maven.seam.feature-1.0.0-SNAPSHOT.jar"
+ value="org.jboss.tools.maven.seam.feature"
+ />
+
+ <property
name="get.artifact.id.expected.as/features/org.jboss.ide.eclipse.as.feature/target/org.jboss.ide.eclipse.as.feature-2.1.0-SNAPSHOT.jar"
+ value="org.jboss.ide.eclipse.as.feature"
+ />
+ <property
name="get.artifact.id.expected.xulrunner/features/org.mozilla.xpcom.feature/target/org.mozilla.xpcom.feature-1.9.1.2a.jar"
+ value="org.mozilla.xpcom.feature"
+ />
+ <property
name="get.artifact.id.expected.xulrunner/features/org.mozilla.xulrunner.feature/target/org.mozilla.xulrunner.feature-1.9.1.2.jar"
+ value="org.mozilla.xulrunner.feature"
+ />
+
+ <!-- expected values for test.get.plugin.id -->
+ <property
name="get.artifact.id.expected.drools/plugins/org.eclipse.webdav_3.0.101.jar"
+ value="org.eclipse.webdav"
+ />
+ <property
name="get.artifact.id.expected.drools/plugins/org.guvnor.tools_5.1.0.SNAPSHOT.jar"
+ value="org.guvnor.tools"
+ />
+ <property
name="get.artifact.id.expected.drools/plugins/org.drools.eclipse_5.1.0.SNAPSHOT.jar"
+ value="org.drools.eclipse"
+ />
+ <property
name="get.artifact.id.expected.drools/plugins/org.drools.eclipse.task_5.1.0.SNAPSHOT.jar"
+ value="org.drools.eclipse.task"
+ />
+
</target>
<target name="test.all">
<antcall target="test.get.sources.build.all" />
<antcall target="test.get.sources" />
- <antcall target="test.deploy" />
+ <antcall target="test.get.feature.id" />
+ <antcall target="test.get.plugin.id.drools" />
</target>
+ <!-- simpler tests, run faster -->
+ <target name="test.get.feature.id.vpe">
+ <antcall target="test.get.feature.id">
+ <param name="COMPONENTS" value="vpe" />
+ </antcall>
+ </target>
+ <target name="test.get.plugin.id.drools">
+ <antcall target="test.get.plugin.id">
+ <param name="COMPONENTS" value="drools" />
+ </antcall>
+ </target>
+
+ <!-- test all feature.id fetches -->
+ <target name="test.get.feature.id" depends="init,
test.expected.values">
+ <for param="COMPONENT" list="${COMPONENTS}" delimiter=";,
+ ">
+ <sequential>
+ <echo level="info">Test feature.ids for @{COMPONENT}</echo>
+ <for param="artifactJar" delimiter=", ">
+ <path>
+ <fileset dir="${basedir}/@{COMPONENT}"
includes="**/features/**/target/*.jar" />
+ </path>
+ <sequential>
+ <echo level="verbose">Test @{artifactJar}</echo>
+ <antcallback target="get.artifact.id"
return="artifact.id">
+ <property name="artifactJar" value="@{artifactJar}" />
+ <param name="regexp.path"
value=".+/features/[^/]+/target/([^/]+feature.+\.jar)" />
+ </antcallback>
+ <propertyregex override="true"
+ property="artifact.id.expected.name"
+ defaultvalue="@{artifactJar}"
+ input="@{artifactJar}"
+ regexp="${basedir}\/(.+)"
+ replace="get.artifact.id.expected.\1"
+ />
+ <!-- <echo><property
name="get.artifact.id.expected.@{artifactJar}"
value="${artifact.id}"/> </echo> -->
+ <propertycopy name="artifact.id.expected"
from="${artifact.id.expected.name}" />
+ <assert failonerror="true" message="Expected:
${artifact.id.expected}; got: ${artifact.id}">
+ <bool>
+ <equals arg1="${artifact.id.expected}"
arg2="${artifact.id}" />
+ </bool>
+ </assert>
+ <var name="artifact.id.expected" unset="true" />
+ </sequential>
+ </for>
+ </sequential>
+ </for>
+ </target>
+
+ <!-- test all plugin.id fetches -->
+ <target name="test.get.plugin.id" depends="init,
test.expected.values">
+ <for param="COMPONENT" list="${COMPONENTS}" delimiter=";,
+ ">
+ <sequential>
+ <echo level="info">Test plugin.ids for @{COMPONENT}</echo>
+ <for param="artifactJar" delimiter=", ">
+ <path>
+ <fileset dir="${basedir}/@{COMPONENT}"
includes="**/plugins/*.jar" excludes="**/target/**" />
+ </path>
+ <sequential>
+ <echo level="verbose">[1] Test @{artifactJar}</echo>
+ <antcallback target="get.artifact.id"
return="artifact.id">
+ <property name="artifactJar" value="@{artifactJar}" />
+ <property name="regexp.path"
value=".+/plugins/([^/]+.+\.jar)" />
+ </antcallback>
+ <propertyregex override="true"
+ property="artifact.id.expected.name"
+ defaultvalue="@{artifactJar}"
+ input="@{artifactJar}"
+ regexp="${basedir}\/(.+)"
+ replace="get.artifact.id.expected.\1"
+ />
+ <!-- <echo><property
name="get.artifact.id.expected.@{artifactJar}"
value="${artifact.id}"/> </echo> -->
+ <propertycopy name="artifact.id.expected"
from="${artifact.id.expected.name}" />
+ <assert failonerror="true" message="Expected:
${artifact.id.expected}; got: ${artifact.id}">
+ <bool>
+ <equals arg1="${artifact.id.expected}"
arg2="${artifact.id}" />
+ </bool>
+ </assert>
+ <var name="artifact.id.expected" unset="true" />
+ <var name="artifact.id" unset="true" />
+
+ <echo level="verbose">[2] Test @{artifactJar}</echo>
+ <antcallback target="get.plugin.id" return="plugin.id">
+ <property name="artifactJar" value="@{artifactJar}" />
+ <property name="regexp.path"
value=".+/plugins/([^/]+.+\.jar)" />
+ </antcallback>
+ <propertyregex override="true"
+ property="artifact.id.expected.name"
+ defaultvalue="@{artifactJar}"
+ input="@{artifactJar}"
+ regexp="${basedir}\/(.+)"
+ replace="get.artifact.id.expected.\1"
+ />
+ <!-- <echo><property
name="get.artifact.id.expected.@{artifactJar}"
value="${artifact.id}"/> </echo> -->
+ <propertycopy name="artifact.id.expected"
from="${artifact.id.expected.name}" />
+ <assert failonerror="true" message="Expected:
${artifact.id.expected}; got: ${plugin.id}">
+ <bool>
+ <equals arg1="${artifact.id.expected}" arg2="${plugin.id}"
/>
+ </bool>
+ </assert>
+ <var name="artifact.id.expected" unset="true" />
+ <var name="artifact.id" unset="true" />
+ </sequential>
+ </for>
+ </sequential>
+ </for>
+ </target>
+
<target name="test.get.sources.build.all"
depends="init, test.expected.values"
description="verify get.sources works to fetch, then update; verify all
components will be built"
@@ -571,7 +1763,7 @@
<for param="expected.dir" list="${get.sources.expected.dirs}"
delimiter=",
">
<sequential>
- <delete dir="(a){expected.dir}" includeemptydirs="true" />
+ <delete dir="${WORKINGDIR}/(a){expected.dir}"
includeemptydirs="true" />
<delete file="${WORKINGDIR}/svn.info-(a){expected.dir}.txt" />
</sequential>
</for>
@@ -589,9 +1781,9 @@
<for param="expected.dir" list="${get.sources.expected.dirs}"
delimiter=",
">
<sequential>
- <assert failonerror="true" message="Dir @{expected.dir} not
found!">
+ <assert failonerror="true" message="Dir
${WORKINGDIR}/(a){expected.dir} not found!">
<bool>
- <available file="(a){expected.dir}" type="dir" />
+ <available file="${WORKINGDIR}/(a){expected.dir}" type="dir"
/>
</bool>
</assert>
</sequential>
@@ -599,9 +1791,9 @@
<for param="expected.file" list="${get.sources.expected.files}"
delimiter=",
">
<sequential>
- <assert failonerror="true" message="Dir @{expected.file} not
found!">
+ <assert failonerror="true" message="Dir
${WORKINGDIR}/(a){expected.file} not found!">
<bool>
- <available file="(a){expected.file}" type="file" />
+ <available file="${WORKINGDIR}/(a){expected.file}" type="file"
/>
</bool>
</assert>
</sequential>
@@ -626,13 +1818,14 @@
<delete file="${WORKINGDIR}/svn.info-tests.txt" />
<delete file="${WORKINGDIR}/svn.info-xulrunner.txt" />
<touch file="${WORKINGDIR}/common/pom.xml" />
+ <var name="COMPONENTS.to.build" unset="true" />
<antcall target="get.sources" />
<for param="expected.dir" list="${get.sources.expected.dirs}"
delimiter=",
">
<sequential>
- <assert failonerror="true" message="Dir @{expected.dir} not
found!">
+ <assert failonerror="true" message="Dir
${WORKINGDIR}/(a){expected.dir} not found!">
<bool>
- <available file="(a){expected.dir}" type="dir" />
+ <available file="${WORKINGDIR}/(a){expected.dir}" type="dir"
/>
</bool>
</assert>
</sequential>
@@ -640,9 +1833,9 @@
<for param="expected.file" list="${get.sources.expected.files}"
delimiter=",
">
<sequential>
- <assert failonerror="true" message="Dir @{expected.file} not
found!">
+ <assert failonerror="true" message="Dir
${WORKINGDIR}/(a){expected.file} not found!">
<bool>
- <available file="(a){expected.file}" type="file" />
+ <available file="${WORKINGDIR}/(a){expected.file}" type="file"
/>
</bool>
</assert>
</sequential>
@@ -664,13 +1857,14 @@
<echo level="info">
5/6: Test info w/o update</echo>
+ <var name="COMPONENTS.to.build" unset="true" />
<antcall target="get.sources" />
<for param="expected.dir" list="${get.sources.expected.dirs}"
delimiter=",
">
<sequential>
- <assert failonerror="true" message="Dir @{expected.dir} not
found!">
+ <assert failonerror="true" message="Dir
${WORKINGDIR}/(a){expected.dir} not found!">
<bool>
- <available file="(a){expected.dir}" type="dir" />
+ <available file="${WORKINGDIR}/(a){expected.dir}" type="dir"
/>
</bool>
</assert>
</sequential>
@@ -678,9 +1872,9 @@
<for param="expected.file" list="${get.sources.expected.files}"
delimiter=",
">
<sequential>
- <assert failonerror="true" message="Dir @{expected.file} not
found!">
+ <assert failonerror="true" message="Dir
${WORKINGDIR}/(a){expected.file} not found!">
<bool>
- <available file="(a){expected.file}" type="file" />
+ <available file="${WORKINGDIR}/(a){expected.file}" type="file"
/>
</bool>
</assert>
</sequential>
@@ -701,11 +1895,42 @@
<echo level="info">----------------------------------</echo>
</target>
- <!-- TODO: fixme -->
- <target name="test.deploy" depends="init,
test.expected.values">
+ <!-- TODO: fixme: manual test; lacks something we can assert... maybe that deployDir
exists? -->
+ <target name="test.deploy" depends="init">
<antcall target="deploy">
- <param name="targetZipsDir"
value="tools@filemgmt.jboss.org:/downloads_htdocs/tools/repository/" />
+ <param name="deployDir"
value="tools@filemgmt.jboss.org:/downloads_htdocs/tools/repository/SNAPSHOT"
/>
+ <param name="sourceDir" value="${WORKINGDIR}/surefire-reports"
/>
</antcall>
</target>
+ <target name="test.now" depends="init">
+ <now>foobar!</now>
+ <now />
+ <now level="error">error!</now>
+ <now level="info">info!</now>
+ </target>
+
+ <target name="test.get.all.components" depends="init,
test.expected.values">
+ <var name="COMPONENTS" unset="true" />
+ <var name="COMPONENTS"
+ value="tests,common;
+ flow,jbpm;
+ jmx,archives,as;
+ drools,bpel,smooks,freemarker,profiler,portlet;
+ xulrunner,jst,vpe,jsf;
+ esb,tptp,ws;
+ cdi,struts,hibernatetools,seam;
+ examples,birt;
+ maven"
+ />
+ <antcallback target="get.all.components"
return="COMPONENTS.to.build" />
+ <assert failonerror="true"
+ message="expected: [${get.all.components.expected}] but got:
[${COMPONENTS.to.build}]"
+ >
+ <bool>
+ <equals arg1="${get.all.components.expected}"
arg2="${COMPONENTS.to.build}" />
+ </bool>
+ </assert>
+ </target>
+
</project>
Modified: trunk/genpom.xml
===================================================================
--- trunk/genpom.xml 2010-05-17 18:26:10 UTC (rev 22129)
+++ trunk/genpom.xml 2010-05-17 19:17:01 UTC (rev 22130)
@@ -2,27 +2,34 @@
<!-- Configuration Start -->
<property name="projectName" value="org.jboss.tools" />
<property name="pathToParentPom" value="" />
- <property name="COMPONENT" value="trunk" />
<property name="pomVersion" value="0.0.1-SNAPSHOT" />
<property name="dirsToExclude"
- value="**/*.sdk.*, **/doc*, **/releng/**, **/build/**,
**/download.jboss.org, **/sampleprojects/**, **/util/**, **/test, **/builders/**,
**/contrib, **/releng/**, ."
+ value="**/*.sdk.*, **/doc*/**, **/releng/**, **/build/**,
**/download.jboss.org, **/sampleprojects/**, **/util/**, **/test, **/builders/**,
**/contrib, **/releng/**, ."
/>
+ <property name="testClassFilesToInclude"
+ value="**/AllTests.java, **/*AllTests*.java, **/*AllBotTests*.java,
**/*TestSuite*.java"
+ />
+
<property name="overwrite.existing.pom.xml" value="false" />
<!-- Configuration Ends -->
- <!-- To run this script in Eclipse:
- Run As > Ant Build
- -->
- <!-- To run this script via commandline:
- cd /home/nboldt/workspace36/jbosstools-modular_build; ant -f genpom.xml -q
- or, to build a specific module IFF no poms already exist:
- cd /home/nboldt/workspace36/jbosstools-modular_build; \
- ant -f genpom.xml -q -DCOMPONENT=xulrunner
- or, to build a specific module and overwrite existing pom.xml files:
- cd /home/nboldt/workspace36/jbosstools-modular_build; \
- ant -f genpom.xml -q -DCOMPONENT=common -Doverwrite.existing.pom.xml=true
- -->
+ <!-- ****************************** Usage Instructions ******************************
-->
+ <target name="help" description="Usage Instructions">
+ <echo>
+To run this script in Eclipse:
+ Run As > Ant Build
+To run this script via commandline:
+ ant -f genpom.xml -q
+
+or, to build a specific module IFF no poms already exist:
+ ant -f genpom.xml -q -DCOMPONENT=xulrunner
+
+or, to build a specific module and overwrite existing pom.xml files:
+ ant -f genpom.xml -q -DCOMPONENT=common -Doverwrite.existing.pom.xml=true
+</echo>
+ </target>
+
<target name="get.ant-contrib"
unless="ant-contrib.jar.exists">
<property name="ANTCONTRIB_MIRROR"
value="http://downloads.sourceforge.net/ant-contrib/" />
<get usetimestamp="true"
@@ -43,13 +50,35 @@
</target>
<!-- override for local build -->
- <available file="/qa/tools/opt" type="dir"
property="isJBossQA" />
- <target name="local" unless="isJBossQA">
+ <condition property="isInHudson" value="true">
+ <or>
+ <contains string="${user.dir}" substring="hudson" />
+ <contains string="${user.name}" substring="hudson" />
+ <contains string="${user.home}" substring="hudson" />
+ </or>
+ </condition>
+ <target name="local" unless="isInHudson">
<property name="WORKINGDIR" value="${basedir}" />
<property name="COMMON_TOOLS" value="${java.io.tmpdir}" />
</target>
<target name="init" depends="local">
+ <!--
https://jira.jboss.org/jira/browse/JBQA-3313 Use static, shared space outside
workspace, instead of working directly in the workspace -->
+ <condition property="WORKINGDIR"
value="/home/hudson/static_build_env/jbds/tools/sources"
else="${basedir}">
+ <available file="/home/hudson/static_build_env/jbds" type="dir"
/>
+ </condition>
+ <mkdir dir="${WORKINGDIR}" />
+ <echo level="info">WORKINGDIR = ${WORKINGDIR}</echo>
+
+ <condition property="COMMON_TOOLS"
+ value="/home/hudson/static_build_env/jbds/tools"
+ else="${WORKINGDIR}/../tools"
+ >
+ <available file="/home/hudson/static_build_env/jbds" type="dir"
/>
+ </condition>
+ <mkdir dir="${COMMON_TOOLS}" />
+ <echo level="info">COMMON_TOOLS = ${COMMON_TOOLS}</echo>
+
<available file="${COMMON_TOOLS}/ant-contrib.jar" type="file"
property="ant-contrib.jar.exists" />
<antcall target="get.ant-contrib" />
<taskdef resource="net/sf/antcontrib/antlib.xml">
@@ -58,6 +87,8 @@
</classpath>
</taskdef>
+ <var name="pathToParentPomInput"
value="${pathToParentPom}"/>
+
<!-- = = = = = = = = = = = = = = = = =
macrodef: write out a pom.xml which aggregates subdirs
= = = = = = = = = = = = = = = = = -->
@@ -102,6 +133,17 @@
/>
<echo level="verbose"> Agg dir: ${activeDir}, artifactType:
${artifactType}, artifactId: ${artifactId}, artifactVersion: ${artifactVersion},
parentpom: @{parentpom}</echo>
<if>
+ <and>
+ <available file="(a){dir}/pom.xml" type="file" />
+ <not>
+ <istrue value="${overwrite.existing.pom.xml}" />
+ </not>
+ </and>
+ <then>
+ <var name="show.pom.exists.warning"
value="${show.pom.exists.warning}1" />
+ </then>
+ </if>
+ <if>
<or>
<not>
<available file="(a){dir}/pom.xml" type="file" />
@@ -191,6 +233,17 @@
/>
<echo level="verbose"> Mod dir: ${activeDir}, artifactType:
${artifactType}, artifactId: ${artifactId}, artifactVersion: ${artifactVersion},
parentpom: @{parentpom}</echo>
<if>
+ <and>
+ <available file="(a){dir}/pom.xml" type="file" />
+ <not>
+ <istrue value="${overwrite.existing.pom.xml}" />
+ </not>
+ </and>
+ <then>
+ <var name="show.pom.exists.warning"
value="${show.pom.exists.warning}1" />
+ </then>
+ </if>
+ <if>
<or>
<not>
<available file="(a){dir}/pom.xml" type="file" />
@@ -312,6 +365,17 @@
<dirset dir="@{dir}" excludes="${dirsToExclude}"
includes="*" />
</path>
</then>
+ <elseif>
+ <equals arg1="${COMPONENT}" arg2="site" />
+ <then>
+ <dirname property="parent.dir" file="@{dir}" />
+ <path id="trunkDir">
+ <dirset dir="${parent.dir}" includes="site" />
+ </path>
+ <var name="parent.dir" unset="true" />
+ <var name="pathToParentPom" value="${pathToParentPom}site/"
/>
+ </then>
+ </elseif>
<else>
<path id="trunkDir">
<dirset dir="@{dir}/${pathToParentPom}"
@@ -332,12 +396,19 @@
<!-- a plugin, feature, or update site dir -->
<available file="(a){subdir}/META-INF/MANIFEST.MF"
type="file" />
<available file="(a){subdir}/feature.xml" type="file" />
- <available file="(a){subdir}/site.xml" type="file" />
</or>
<then>
<!-- valid place to create a pom -->
<writeModulePom dir="@{subdir}"
parentpom="../${pathToParentPom}@{parentpom}" />
</then>
+ <elseif>
+ <available file="(a){subdir}/site.xml" type="file" />
+ <then>
+ <!-- valid place to create a pom -->
+ <echo level="debug">writeModulePom dir="@{subdir}"
parentpom="${pathToParentPom}@{parentpom}"</echo>
+ <writeModulePom dir="@{subdir}"
parentpom="${pathToParentPom}@{parentpom}" />
+ </then>
+ </elseif>
<else>
<for list="plugins tests features site" param="type"
delimiter=" ">
<sequential>
@@ -393,69 +464,110 @@
</target>
<target name="run" depends="init">
- <if>
- <not>
- <available file="${WORKINGDIR}/${pathToParentPom}parent-pom.xml"
type="file" />
- </not>
- <then>
- <fail>Error: no parent-pom.xml found in
${WORKINGDIR}/${pathToParentPom}</fail>
- </then>
- </if>
+ <var name="show.pom.exists.warning" value="" />
<if>
- <not>
- <equals arg1="${COMPONENT}" arg2="trunk" />
- </not>
+ <and>
+ <isset property="COMPONENT" />
+ <not>
+ <equals arg1="${COMPONENT}" arg2="" />
+ </not>
+ </and>
<then>
- <var name="pathToParentPom" unset="true" />
- <var name="pathToParentPom" value="../" />
+ <var name="COMPONENTS" unset="true" />
+ <var name="COMPONENTS" value="${COMPONENT}" />
</then>
+ <elseif>
+ <not>
+ <isset property="COMPONENTS" />
+ </not>
+ <then>
+ <var name="COMPONENTS" value="trunk" />
+ </then>
+ </elseif>
</if>
- <echo level="verbose">COMPONENT = ${COMPONENT}, pathToParentPom =
${pathToParentPom}</echo>
+ <for param="COMPONENT" list="${COMPONENTS}" delimiter=",;
+ ">
+ <sequential>
+ <var name="COMPONENT" value="@{COMPONENT}" />
+ <echo level="info">COMPONENT = '${COMPONENT}'</echo>
+ <if>
+ <not>
+ <available file="${WORKINGDIR}/${pathToParentPomInput}parent-pom.xml"
type="file" />
+ </not>
+ <then>
+ <fail>Error: no parent-pom.xml found in
${WORKINGDIR}/${pathToParentPomInput}</fail>
+ </then>
+ </if>
- <!-- if set, compare values in tags file to values found in manifests and report
discrepancies -->
- <!--<property name="tagsFile"
+ <if>
+ <not>
+ <equals arg1="${COMPONENT}" arg2="trunk" />
+ </not>
+ <then>
+ <var name="pathToParentPom" unset="true" />
+ <var name="pathToParentPom" value="../" />
+ </then>
+ </if>
+ <echo level="verbose">COMPONENT = '${COMPONENT}',
pathToParentPom = ${pathToParentPom}</echo>
+
+ <!-- if set, compare values in tags file to values found in manifests and report
discrepancies -->
+ <!--<property name="tagsFile"
value="/home/nboldt/eclipse/workspace-jboss/devstudio-trunk/releng/org.jboss.ide.eclipse.releng/builders/product/versionTags/jbosstools/3.1.0.GA.tags"
/>-->
- <if>
- <and>
- <isset property="tagsFile" />
- <available file="${tagsFile}" type="file" />
- </and>
- <then>
- <property file="${tagsFile}" prefix="tagsFile" />
- </then>
- </if>
+ <if>
+ <and>
+ <isset property="tagsFile" />
+ <available file="${tagsFile}" type="file" />
+ </and>
+ <then>
+ <property file="${tagsFile}" prefix="tagsFile" />
+ </then>
+ </if>
- <!-- counter variables -->
- <var name="aggregatorcountstring" value="" />
- <var name="modulecountstring" value="" />
+ <!-- counter variables -->
+ <var name="aggregatorcountstring" value="" />
+ <var name="modulecountstring" value="" />
- <if>
- <equals arg1="${COMPONENT}" arg2="trunk" />
- <then>
- <!-- call generateAggregator for overall -->
- <generateAggregator dir="${WORKINGDIR}"
- parentpom="${pathToParentPom}parent-pom.xml"
- artifactId="${COMPONENT}"
- artifactVersion="${pomVersion}"
- />
- </then>
- <else>
- <!-- call generateAggregator for component -->
- <generateAggregator dir="${WORKINGDIR}/${COMPONENT}"
- parentpom="${pathToParentPom}parent-pom.xml"
- artifactId="${COMPONENT}"
- artifactVersion="${pomVersion}"
- />
- </else>
- </if>
- <!-- summary -->
- <length string="${modulecountstring}" property="modulecount"
/>
- <length string="${aggregatorcountstring}"
property="aggregatorcount" />
- <echo level="info">${WORKINGDIR}/${COMPONENT} :: Modules:
${modulecount}, Aggregations: ${aggregatorcount}</echo>
-
+ <if>
+ <equals arg1="${COMPONENT}" arg2="trunk" />
+ <then>
+ <!-- call generateAggregator for overall -->
+ <generateAggregator dir="${WORKINGDIR}"
+ parentpom="${pathToParentPom}parent-pom.xml"
+ artifactId="${COMPONENT}"
+ artifactVersion="${pomVersion}"
+ />
+ </then>
+ <else>
+ <!-- call generateAggregator for component -->
+ <generateAggregator dir="${WORKINGDIR}/${COMPONENT}"
+ parentpom="${pathToParentPom}parent-pom.xml"
+ artifactId="${COMPONENT}"
+ artifactVersion="${pomVersion}"
+ />
+ </else>
+ </if>
+ <!-- summary -->
+ <length string="${modulecountstring}" property="modulecount"
/>
+ <length string="${aggregatorcountstring}"
property="aggregatorcount" />
+ <echo level="info">${WORKINGDIR}/${COMPONENT} :: Modules:
${modulecount}, Aggregations: ${aggregatorcount}</echo>
+ <if>
+ <not>
+ <equals arg1="${show.pom.exists.warning}" arg2="" />
+ </not>
+ <then>
+ <length property="show.pom.exists.warning.count"
string="${show.pom.exists.warning}" />
+ <echo level="warning">${show.pom.exists.warning.count}
'${COMPONENT}' pom.xml file(s) already exist. To overwrite, use
-Doverwrite.existing.pom.xml=true</echo>
+ </then>
+ </if>
+ <var name="show.pom.exists.warning.count" unset="true" />
+ <var name="show.pom.exists.warning" value="" />
+ <var name="modulecount" unset="true" />
+ <var name="aggregatorcount" unset="true" />
+ </sequential>
+ </for>
</target>
<target name="getArtifactType">
@@ -482,7 +594,15 @@
<matches string="${dir}" pattern=".+/tests/.+" />
</and>
<then>
- <var name="artifactType" value="eclipse-test-plugin" />
+ <var name="artifactType" value="eclipse-plugin" />
+ <for param="testClassFile" delimiter=", ">
+ <path>
+ <fileset dir="${dir}" includes="${testClassFilesToInclude}"
/>
+ </path>
+ <sequential>
+ <var name="artifactType" value="eclipse-test-plugin" />
+ </sequential>
+ </for>
</then>
</elseif>
<else>
@@ -735,17 +855,20 @@
<property name="ant.enable.asserts" value="true" />
<!-- expected values for artifactVersion tests -->
- <property name="artifactVersion.esb/features/org.jboss.tools.esb.feature"
value="1.0.0" />
- <property
name="artifactVersion.as/tests/org.jboss.ide.eclipse.as.archives.integration.test"
value="1.0.0" />
- <property name="artifactVersion.esb/plugins/org.jboss.tools.esb.core"
value="2.0.0" />
+ <property name="artifactVersion.esb/features/org.jboss.tools.esb.feature"
value="1.3.0-SNAPSHOT" />
+ <property
name="artifactVersion.as/tests/org.jboss.ide.eclipse.as.archives.integration.test"
+ value="2.1.0-SNAPSHOT"
+ />
+ <property name="artifactVersion.esb/plugins/org.jboss.tools.esb.core"
value="1.3.0-SNAPSHOT" />
<property
name="artifactVersion.bpel/plugins/org.eclipse.bpel.apache.ode.deploy.ui"
value="0.5.0-SNAPSHOT" />
<property
name="artifactVersion.bpel/features/org.jboss.tools.bpel.sdk.feature"
value="1.0.0-SNAPSHOT" />
<property name="artifactVersion.bpel/plugins/org.eclipse.bpel.xpath10"
value="0.5.0-SNAPSHOT" />
- <property
name="artifactVersion.vpe/plugins/org.jboss.tools.vpe.ui.palette"
value="2.1.0" />
- <property
name="artifactVersion.tests/features/org.jboss.tools.test.feature"
value="2.0.0" />
- <property
name="artifactVersion.portlet/features/org.jboss.tools.portlet.test.feature"
value="1.0.0" />
- <property name="artifactVersion.jst/features/org.jboss.tools.jst.feature"
value="2.0.0" />
- <property
name="artifactVersion.jst/features/org.jboss.tools.jst.web.tiles.feature"
value="2.0.0" />
+ <property
name="artifactVersion.vpe/plugins/org.jboss.tools.vpe.ui.palette"
value="3.1.0-SNAPSHOT" />
+ <property
name="artifactVersion.tests/features/org.jboss.tools.test.feature"
value="3.1.0-SNAPSHOT" />
+ <property
name="artifactVersion.portlet/features/org.jboss.tools.portlet.test.feature"
value="1.1.0-SNAPSHOT" />
+ <property name="artifactVersion.jst/features/org.jboss.tools.jst.feature"
value="3.1.0-SNAPSHOT" />
+ <property
name="artifactVersion.jst/features/org.jboss.tools.jst.web.tiles.feature"
value="3.1.0-SNAPSHOT" />
+ <property
name="artifactVersion.drools/plugins/org.jboss.tools.flow.ruleflow"
value="1.0.0" />
<!-- expected values for artifactId tests -->
<property name="artifactId.esb/features/org.jboss.tools.esb.feature"
value="org.jboss.tools.esb.feature" />
@@ -769,12 +892,17 @@
<property
name="artifactId.jst/features/org.jboss.tools.jst.web.tiles.feature"
value="org.jboss.tools.jst.web.tiles.feature"
/>
+ <property name="artifactId.drools/plugins/org.jboss.tools.flow.ruleflow"
+ value="org.jboss.tools.flow.ruleflow"
+ />
<!-- expected values for artifactType tests -->
<property name="artifactType.esb/features/org.jboss.tools.esb.feature"
value="eclipse-feature" />
<property
name="artifactType.as/tests/org.jboss.ide.eclipse.as.archives.integration.test"
value="eclipse-test-plugin"
/>
+ <property name="artifactType.flow/tests/org.jboss.tools.flow.common.test"
value="eclipse-plugin" />
+ <property name="artifactType.jbpm/tests/org.jboss.tools.flow.jpdl4.test"
value="eclipse-plugin" />
<property name="artifactType.esb/plugins/org.jboss.tools.esb.core"
value="eclipse-plugin" />
<property
name="artifactType.bpel/plugins/org.eclipse.bpel.apache.ode.deploy.ui"
value="eclipse-plugin" />
<property
name="artifactType.bpel/features/org.jboss.tools.bpel.sdk.feature"
value="eclipse-feature" />
@@ -784,6 +912,7 @@
<property
name="artifactType.portlet/features/org.jboss.tools.portlet.test.feature"
value="eclipse-feature" />
<property name="artifactType.jst/features/org.jboss.tools.jst.feature"
value="eclipse-feature" />
<property
name="artifactType.jst/features/org.jboss.tools.jst.web.tiles.feature"
value="eclipse-feature" />
+ <property name="artifactType.drools/plugins/org.jboss.tools.flow.ruleflow"
value="eclipse-plugin" />
<!-- expected values for artifactOsWsArch tests -->
<property name="artifactOsWsArch.org.mozilla.xpcom.os" value=""
/>
@@ -811,7 +940,7 @@
<property
name="artifactOsWsArch.org.mozilla.xulrunner.win32.win32.x86.arch"
value="x86" />
</target>
- <target name="test.all">
+ <target name="test.all" depends="init, test.expected.values">
<property name="dirs"
value="
@@ -826,6 +955,7 @@
${WORKINGDIR}/portlet/features/org.jboss.tools.portlet.test.feature
${WORKINGDIR}/jst/features/org.jboss.tools.jst.feature
${WORKINGDIR}/jst/features/org.jboss.tools.jst.web.tiles.feature
+ ${WORKINGDIR}/drools/plugins/org.jboss.tools.flow.ruleflow
"
/>
<antcall target="test.getArtifactVersion" />
@@ -967,6 +1097,17 @@
${WORKINGDIR}/esb/features/org.jboss.tools.esb.feature
${WORKINGDIR}/as/tests/org.jboss.ide.eclipse.as.archives.integration.test
${WORKINGDIR}/esb/plugins/org.jboss.tools.esb.core
+ ${WORKINGDIR}/esb/plugins/org.jboss.tools.esb.core
+ ${WORKINGDIR}/bpel/plugins/org.eclipse.bpel.apache.ode.deploy.ui
+ ${WORKINGDIR}/bpel/features/org.jboss.tools.bpel.sdk.feature
+ ${WORKINGDIR}/bpel/plugins/org.eclipse.bpel.xpath10
+ ${WORKINGDIR}/vpe/plugins/org.jboss.tools.vpe.ui.palette
+ ${WORKINGDIR}/tests/features/org.jboss.tools.test.feature
+ ${WORKINGDIR}/portlet/features/org.jboss.tools.portlet.test.feature
+ ${WORKINGDIR}/jst/features/org.jboss.tools.jst.feature
+ ${WORKINGDIR}/jst/features/org.jboss.tools.jst.web.tiles.feature
+ ${WORKINGDIR}/flow/tests/org.jboss.tools.flow.common.test
+ ${WORKINGDIR}/jbpm/tests/org.jboss.tools.flow.jpdl4.test
"
/>
<for param="dir" list="${dirs}" delimiter=",
Modified: trunk/parent-pom.xml
===================================================================
--- trunk/parent-pom.xml 2010-05-17 18:26:10 UTC (rev 22129)
+++ trunk/parent-pom.xml 2010-05-17 19:17:01 UTC (rev 22130)
@@ -17,12 +17,33 @@
<plugins>
<plugin>
<groupId>org.sonatype.tycho</groupId>
+ <artifactId>maven-osgi-packaging-plugin</artifactId>
+ <version>${tychoVersion}</version>
+ <configuration>
+ <format>'v'yyyyMMdd-HHmm</format>
+ <archiveSite>true</archiveSite>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.sonatype.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>${tychoVersion}</version>
<extensions>true</extensions>
</plugin>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-scm-plugin</artifactId>
+ <version>1.0</version>
+ <configuration>
+ <useNonInteractive>true</useNonInteractive>
+ <connectionType>connection</connectionType>
+ <!-- <connectionType>developerConnection</connectionType> -->
+ </configuration>
+ </plugin>
+
+ <plugin>
<groupId>org.sonatype.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tychoVersion}</version>
@@ -125,7 +146,7 @@
</connection>
<
developerConnection>scm:svn:http://anonsvn.jboss.org/repos/jbosstools/...
</developerConnection>
- <
url>http://anonsvn.jboss.org/repos/jbosstools/branches/${scmBranch}
+ <
url>http://anonsvn.jboss.org/repos/jbosstools/${scmBranch}
</url>
</scm>
@@ -199,6 +220,17 @@
</activation>
<repositories>
<repository>
+ <id>svnkit13</id>
+ <
url>http://eclipse.svnkit.com/1.3.x/</url>
+ <layout>p2</layout>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </repository>
+ <repository>
<id>subclipse16</id>
<
url>http://subclipse.tigris.org/update_1.6.x/</url>
<layout>p2</layout>
@@ -239,6 +271,7 @@
</profiles>
<repositories>
+ <!-- TODO: add JBT nightly update site so we can build against binaries -->
<repository>
<id>galileo</id>
<
url>http://download.eclipse.org/releases/galileo/</url>
@@ -356,7 +389,7 @@
</pluginRepository>
<pluginRepository>
<id>tycho</id>
- <
url>http://repository.sonatype.org/content/repositories/snapshots/
+ <
url>https://repository.sonatype.org/content/repositories/snapshots/
</url>
<snapshots>
<enabled>true</enabled>
@@ -365,6 +398,16 @@
<enabled>true</enabled>
</releases>
</pluginRepository>
+ <pluginRepository>
+ <id>apache-snapshots</id>
+ <
url>http://repository.apache.org/snapshots/</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </pluginRepository>
</pluginRepositories>
<!--
https://issues.sonatype.org/browse/TYCHO-413: does not work - doesn't
Added: trunk/pom-all-components.xml
===================================================================
--- trunk/pom-all-components.xml (rev 0)
+++ trunk/pom-all-components.xml 2010-05-17 19:17:01 UTC (rev 22130)
@@ -0,0 +1,47 @@
+<project
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <relativePath>parent-pom.xml</relativePath>
+ <groupId>org.jboss.tools</groupId>
+ <artifactId>org.jboss.tools.parent.pom</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+ <groupId>org.jboss.tools</groupId>
+ <artifactId>trunk</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+ <modules>
+ <!-- this order is important! make sure you've run genpom.xml first! -->
+ <module>tests</module>
+ <module>common</module>
+ <module>flow</module>
+ <module>jbpm</module>
+ <module>jmx</module>
+ <module>archives</module>
+ <module>as</module>
+ <module>drools</module>
+ <module>bpel</module>
+ <module>smooks</module>
+ <module>freemarker</module>
+ <module>profiler</module>
+ <module>portlet</module>
+ <module>modeshape</module>
+ <module>xulrunner</module>
+ <module>jst</module>
+ <module>vpe</module>
+ <module>jsf</module>
+ <module>esb</module>
+ <module>tptp</module>
+ <module>ws</module>
+ <module>cdi</module>
+ <module>struts</module>
+ <module>hibernatetools</module>
+ <module>seam</module>
+ <module>examples</module>
+ <module>birt</module>
+ <module>maven</module>
+ <module>site</module>
+ </modules>
+</project>
+
Added: trunk/pom.xml
===================================================================
--- trunk/pom.xml (rev 0)
+++ trunk/pom.xml 2010-05-17 19:17:01 UTC (rev 22130)
@@ -0,0 +1,47 @@
+<project
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <relativePath>parent-pom.xml</relativePath>
+ <groupId>org.jboss.tools</groupId>
+ <artifactId>org.jboss.tools.parent.pom</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+ <groupId>org.jboss.tools</groupId>
+ <artifactId>trunk</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+ <modules>
+ <!-- this order is important! -->
+ <module>tests</module>
+ <module>common</module>
+ <module>flow</module>
+ <module>jbpm</module>
+ <!-- <module>jmx</module>
+ <module>archives</module>
+ <module>as</module>
+ <module>drools</module>
+ <module>bpel</module>
+ <module>smooks</module>
+ <module>freemarker</module>
+ <module>profiler</module>
+ <module>portlet</module>
+ <module>modeshape</module>
+ <module>xulrunner</module>
+ <module>jst</module>
+ <module>vpe</module>
+ <module>jsf</module>
+ <module>esb</module>
+ <module>tptp</module>
+ <module>ws</module>
+ <module>cdi</module>
+ <module>struts</module>
+ <module>hibernatetools</module>
+ <module>seam</module>
+ <module>examples</module>
+ <module>birt</module>
+ <module>maven</module>
+ <module>site</module> -->
+ </modules>
+</project>
+