Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

build.xml 65KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366
  1. <?xml version="1.0"?>
  2. <project xmlns:antcontrib="antlib:net.sf.antcontrib"
  3. xmlns:artifact="antlib:org.apache.maven.artifact.ant"
  4. xmlns:ivy="antlib:org.apache.ivy.ant"
  5. name="Vaadin"
  6. basedir="../" default="package-all">
  7. <property name="project.root" value="."/>
  8. <!-- Import common targets -->
  9. <import file="./common.xml" />
  10. <!--Call one of package-* targets unless you understand what you are doing. -->
  11. <target name="package-all" depends="clean-all, init, build, javadoc, internal-package-war, internal-package-liferay, differences" description="Build public packages.">
  12. </target>
  13. <target name="package-jar" depends="clean-result, init, vaadin.jar" description="Create vaadin-x.y.z.jar file.">
  14. </target>
  15. <target name="package-war" depends="clean-result, init, build, javadoc, internal-package-war, differences">
  16. </target>
  17. <target name="package-liferay-zip" depends="clean-result, init, build, internal-package-liferay">
  18. </target>
  19. <target name="init-deps" depends="common.init-deps" >
  20. <property name="ivy.resolved" value="1" />
  21. <ivy:resolve file="build/ivy/ivy.xml" resolveid="common" conf="ss.compile, cs.compile, ss.test.compile"/>
  22. <ivy:cachepath pathid="ivy.compile.classpath.server-side" conf="ss.compile"/>
  23. <ivy:cachepath pathid="ivy.compile.classpath.client-side" conf="cs.compile"/>
  24. <ivy:cachepath pathid="ivy.compile.classpath.server-side-tests" conf="ss.test.compile"/>
  25. <ivy:cachepath pathid="buildhelpers.dependencies" resolveId="buildhelpers" conf="compile" file="build/ivy/buildhelpers-ivy.xml"/>
  26. <!-- Extra JARs for custom builds - taken into account before JARs from Ivy. -->
  27. <!-- Note that this should not be used for permanent build dependencies. -->
  28. <path id="additional.jar.path">
  29. <fileset dir="build" includes="lib/**/*.jar" ></fileset>
  30. </path>
  31. <!-- Default location for GWT check-out: trunk and tools in a directory next to Vaadin project -->
  32. <property name="gwt.root" value="${basedir}/../trunk"/>
  33. <property name="gwt.build.dir" value="${gwt.root}/build"/>
  34. <property name="gwt.tools" value="${gwt.root}/../tools"/>
  35. <property name="gwt.tools.lib" value="${gwt.tools}/lib"/>
  36. <property name="gwt.lib.dir" value="${gwt.build.dir}/lib"/>
  37. <property name="gwt.user.jar" value="${gwt.lib.dir}/gwt-user.jar"/>
  38. <property name="gwt.dev.jar" value="${gwt.lib.dir}/gwt-dev.jar"/>
  39. <property name="gwt.codeserver.jar" value="${gwt.lib.dir}/gwt-codeserver.jar"/>
  40. <property name="gwt.elemental.jar" value="${gwt.lib.dir}/gwt-elemental.jar"/>
  41. <property name="gwt.user.dir" value="${gwt.root}/user"/>
  42. <property name="gwt.user.bin" value="${gwt.build.dir}/out/user/bin"/>
  43. <property name="jarjar-jar" value="${gwt.tools.lib}/tonicsystems/jarjar-1.0rc8.jar"/>
  44. <path id="compile.classpath.server-side">
  45. <path refid="additional.jar.path" />
  46. <!-- GWT -->
  47. <pathelement location="${gwt.user.jar}" />
  48. <pathelement location="${gwt.dev.jar}" />
  49. <path refid="ivy.compile.classpath.server-side" />
  50. </path>
  51. <path id="compile.classpath.client-side">
  52. <path refid="additional.jar.path" />
  53. <!-- GWT user -->
  54. <!--
  55. <pathelement path="${gwt.user.dir}/src" />
  56. <pathelement path="${gwt.user.dir}/super" />
  57. <pathelement path="${gwt.user.dir}/out/user/bin"/>
  58. -->
  59. <!-- GWT -->
  60. <pathelement location="${gwt.user.jar}" />
  61. <pathelement location="${gwt.dev.jar}" />
  62. <path refid="ivy.compile.classpath.client-side" />
  63. </path>
  64. <path id="compile.classpath.server-side-tests">
  65. <path refid="additional.jar.path" />
  66. <!-- GWT -->
  67. <pathelement location="${gwt.user.jar}" />
  68. <!-- needed at least for Apache Commons -->
  69. <pathelement location="${gwt.dev.jar}" />
  70. <path refid="ivy.compile.classpath.server-side-tests" />
  71. </path>
  72. <path id="compile.classpath.buildhelpers">
  73. <path refid="additional.jar.path" />
  74. <!-- GWT -->
  75. <pathelement location="${gwt.user.jar}" />
  76. <pathelement location="${gwt.dev.jar}" />
  77. <path refid="buildhelpers.dependencies" />
  78. </path>
  79. </target>
  80. <!-- Clean results - - - - - - - - - - - - - - - - - - - - - - - - - -->
  81. <target name="clean-result" depends="build.properties">
  82. <!-- Clean build result directory. -->
  83. <delete dir="${result-path}" includes="**/*" followsymlinks="false" defaultexcludes="false" includeemptydirs="true" failonerror="false"/>
  84. </target>
  85. <target name="build.properties" depends="init-deps">
  86. <property file="build/build.properties" />
  87. <property file="build/VERSION.properties" />
  88. <property file="build/GWT-VERSION.properties" />
  89. <!-- result source and classes folders -->
  90. <property name="result-src-core" value="${result-path}/src/core"/>
  91. <property name="result-src-junit" value="${result-path}/src/junit"/>
  92. <property name="result-src-testbench" value="${result-path}/src/testbench"/>
  93. <property name="result-src-sass" value="${result-path}/src/sass"/>
  94. <property name="result-src-sass-junit" value="${result-path}/src/sass-junit"/>
  95. <property name="result-classes-core" value="${result-path}/classes/core"/>
  96. <property name="result-classes-junit" value="${result-path}/classes/junit"/>
  97. <property name="result-classes-testbench" value="${result-path}/classes/testbench"/>
  98. <property name="result-classes-sass" value="${result-path}/classes/sass"/>
  99. <property name="result-classes-sass-junit" value="${result-path}/classes/sass-junit"/>
  100. <property name="result-precompiled-widgetsets" value="${result-path}/classes/widgetsets"/>
  101. <!-- Folder where Emma instrumented classes are placed (if Emma is used)-->
  102. <property name="result-classes-core-for-emma-war" value="${result-path}/classes/emma-war"/>
  103. <property name="result-classes-core-for-emma-junit" value="${result-path}/classes/emma-junit"/>
  104. <!-- Default classpath for building widgetsets, overridden for testing widgetset -->
  105. <path id="compile.classpath.widgetset">
  106. <path refid="compile.classpath.client-side" />
  107. <pathelement location="${result-classes-core}" />
  108. <pathelement location="${result-src-core}" />
  109. <pathelement location="${result-precompiled-widgetsets}" />
  110. </path>
  111. </target>
  112. <target name="clean-all" depends="clean-result">
  113. <delete failonerror="false">
  114. <fileset dir="${com.vaadin.testbench.screenshot.directory}/errors">
  115. <include name="*.png" />
  116. </fileset>
  117. </delete>
  118. <delete failonerror="false" dir="WebContent/VAADIN/gwt-unitCache" />
  119. </target>
  120. <!-- ================================================================== -->
  121. <!-- Check versions. -->
  122. <!-- ================================================================== -->
  123. <!-- Java compiler version. -->
  124. <target name="check-java-version">
  125. <condition property="java.version.matches">
  126. <or>
  127. <equals arg1="${ant.java.version}" arg2="${required.java.version}"/>
  128. <isset property="ignoreversion"/>
  129. </or>
  130. </condition>
  131. <fail unless="java.version.matches" message="Java version is ${ant.java.version}, but Vaadin must be compiled with genuine Java ${required.java.version} compiler. Use -Dignoreversion=1 for ant to ignore the version check."/>
  132. <echo>Java version is ${ant.java.version} as required.</echo>
  133. </target>
  134. <!-- ================================================================== -->
  135. <!-- Initialization - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  136. <!-- ================================================================== -->
  137. <target name="init" depends="init-deps, build.properties, check-java-version">
  138. <!-- Current timestamp in different formats. -->
  139. <tstamp>
  140. <format property="build.date" pattern="yyyy-MM-dd"/>
  141. </tstamp>
  142. <tstamp>
  143. <format property="build.date.compact" pattern="yyyyMMdd"/>
  144. </tstamp>
  145. <antcontrib:propertyregex property="version.major" input="${version}" regexp="([^\.]*)\.([^\.]*)\.([^\.]*)" select="\1"/>
  146. <antcontrib:propertyregex property="version.minor" input="${version}" regexp="([^\.]*)\.([^\.]*)\.([^\.]*)" select="\2"/>
  147. <antcontrib:propertyregex property="version.revision" input="${version}" regexp="([^\.]*)\.([^\.]*)\.([^\.]*)" select="\3"/>
  148. <!-- Default full version name. -->
  149. <!-- Nightly and other TeamCity builds will define their own. -->
  150. <property name="version.full" value="${version}.dev-${build.date.compact}"/>
  151. <echo>Base Version: ${version}</echo>
  152. <echo>Full Version: ${version.full}</echo>
  153. <!-- Other properties -->
  154. <property file="build/html-style.properties" />
  155. <echo>Vaadin package is: ${vaadin-package}</echo>
  156. <!-- Create result dir unless already exists -->
  157. <mkdir dir="${result-path}" />
  158. <!-- Create dirs that might be used by the test coverage generation -->
  159. <mkdir dir="${result-classes-core-for-emma-war}" />
  160. <mkdir dir="${result-classes-core-for-emma-junit}" />
  161. <mkdir dir="${result-path}/coverage" />
  162. <echo>We are using gwt version ${gwt-version}.</echo>
  163. <!-- Destination files -->
  164. <property name="base-name" value="${product-file}-${version.full}" />
  165. <property name="lib-jar-name" value="${base-name}.jar" />
  166. <property name="lib-sources-jar-name" value="${base-name}-sources.jar" />
  167. <property name="lib-javadoc-jar-name" value="${base-name}-javadoc.jar" />
  168. <property name="test-war-filename" value="${product-file}-tests-${version.full}.war"/>
  169. <echo message="Prepared to build ${product-file} version ${version.full} packages" />
  170. <!-- Output directory -->
  171. <property name="output-dir" value="${result-path}/${base-name}" />
  172. <mkdir dir="${output-dir}" />
  173. <!-- Where widgetsets are written to. -->
  174. <!-- When not building a package, widgetsets should be written to -->
  175. <!-- WebContent/VAADIN/widgetsets, which needs to be set in -->
  176. <!-- init-nonpackage target before calling this main init target. -->
  177. <property name="widgetsets-output-dir" value="${output-dir}/WebContent/VAADIN/widgetsets" />
  178. <!-- Build helpers -->
  179. <property name="buildhelpers-src" value="build/buildhelpers" />
  180. <property name="buildhelpers-classes" value="${result-path}/buildhelpers/classes" />
  181. <!-- Sass -->
  182. <property name="sass-src" value="sass/src" />
  183. <property name="sass-classes" value="${result-classes-sass}" />
  184. <!-- Create Output Directory Hierarchy -->
  185. <mkdir dir="${output-dir}/WebContent" />
  186. <mkdir dir="${output-dir}/WebContent/demo" />
  187. <mkdir dir="${output-dir}/WebContent/docs" />
  188. <mkdir dir="${output-dir}/WebContent/docs/api" />
  189. <mkdir dir="${output-dir}/WebContent/tests" />
  190. <mkdir dir="${output-dir}/WebContent/WEB-INF" />
  191. <mkdir dir="${output-dir}/WebContent/WEB-INF/lib" />
  192. <mkdir dir="${output-dir}/WebContent/WEB-INF/classes" />
  193. </target>
  194. <target name="internal-package-war">
  195. <echo>Building Test WAR</echo>
  196. <echo>Adding test class files and resources and launcher configuration.</echo>
  197. <copy todir="${output-dir}/WebContent/WEB-INF/classes">
  198. <fileset dir="${result-classes-testbench}">
  199. <include name="${vaadin-package}/tests/**/*" />
  200. <include name="${vaadin-package}/launcher/**" />
  201. </fileset>
  202. <fileset dir="${result-classes-junit}">
  203. <!-- VaadinClasses and data classes are used by TestBench tests also -->
  204. </fileset>
  205. <!-- test resources -->
  206. <fileset dir="tests/testbench">
  207. <include name="${vaadin-package}/tests/**/*" />
  208. <!-- Pre-processed versions of these copied above -->
  209. <exclude name="**/*.java" />
  210. <exclude name="**/*.html" />
  211. <exclude name="**/*.css" />
  212. <exclude name="**/*.xml" />
  213. </fileset>
  214. <!-- Include files required by the DemoLauncher/DevelopmentServerLauncher -->
  215. <fileset dir="tests/testbench">
  216. <include name="${vaadin-package}/launcher/jetty-webdefault.xml" />
  217. <include name="${vaadin-package}/launcher/keystore" />
  218. </fileset>
  219. </copy>
  220. <war warfile="${result-path}/${test-war-filename}">
  221. <fileset dir="${output-dir}/WebContent">
  222. <exclude name="VAADIN/gwt-unitCache" />
  223. <!-- Already in JAR -->
  224. <!-- Not excluded because used from WAR by portal integration tests
  225. <exclude name="VAADIN/themes/base/**/*" />
  226. <exclude name="VAADIN/themes/chameleon/**/*" />
  227. <exclude name="VAADIN/themes/liferay/**/*" />
  228. <exclude name="VAADIN/themes/reindeer/**/*" />
  229. <exclude name="VAADIN/themes/runo/**/*" />
  230. <exclude name="VAADIN/widgetsets/com.vaadin.terminal.gwt.DefaultWidgetSet/**/*" />
  231. -->
  232. <!-- Not needed for testing -->
  233. <exclude name="docs/**/*" />
  234. <exclude name="docs" />
  235. <include name="**/*" />
  236. </fileset>
  237. </war>
  238. </target>
  239. <target name="internal-package-liferay" depends="internal-package-war">
  240. <!-- We assume the needed files are put in place by internal-package-war -->
  241. <echo>Building Liferay zip</echo>
  242. <zip zipfile="${result-path}/${base-name}-liferay.zip">
  243. <zipfileset prefix="VAADIN/widgetsets/com.vaadin.portal.gwt.PortalDefaultWidgetSet" dir="${output-dir}/WebContent/VAADIN/widgetsets/com.vaadin.portal.gwt.PortalDefaultWidgetSet">
  244. <patternset>
  245. <include name="**/*" />
  246. </patternset>
  247. </zipfileset>
  248. <zipfileset prefix="VAADIN/themes" dir="${output-dir}/WebContent/VAADIN/themes">
  249. <patternset>
  250. <include name="base/**/*" />
  251. <include name="chameleon/**/*" />
  252. <include name="liferay/**/*" />
  253. <include name="runo/**/*" />
  254. <include name="reindeer/**/*" />
  255. </patternset>
  256. </zipfileset>
  257. <zipfileset prefix="VAADIN" dir="${output-dir}/WebContent/VAADIN">
  258. <patternset>
  259. <include name="vaadinBootstrap.js" />
  260. </patternset>
  261. </zipfileset>
  262. </zip>
  263. <echo>##teamcity[publishArtifacts '${result-path}/${base-name}-liferay.zip']</echo>
  264. </target>
  265. <!-- Build server-side, client-side, libraries, and tests. -->
  266. <!-- The client-side needs to be built before vaadin.jar, because the vaadin.jar -->
  267. <!-- require the default widgetset and doing otherwise would build it twice. -->
  268. <!-- However, since compiling the server-side is required by the client-side -->
  269. <!-- compilation, the server-side will actually be built before it. -->
  270. <target name="build"
  271. depends="compile-server-side, compile-tests, compile-client-side, vaadin.jar, vaadin-sources.jar"
  272. description="Build package required files, without packing them.">
  273. </target>
  274. <target name="compile-server-side" depends="compile-gwt, compile-core, webcontent"/>
  275. <!-- Copy and preprocess sources for packaging
  276. NOTE: Replaces <version></version> tags with build version tag for some "textual" files
  277. -->
  278. <target name="preprocess-src">
  279. <!--
  280. Source directories in the project are
  281. * src (Vaadin core)
  282. * sass/src (SASS compiler)
  283. * tests/testbench (TestBench test cases)
  284. * tests/server-side (Server-side JUnit test cases)
  285. * tests/client-side (Client-side JUnit test cases)
  286. These are copied to
  287. * ${result-path}/src/core
  288. * ${result-path}/src/sass
  289. * ${result-path}/src/tests
  290. * ${result-path}/src/junit
  291. And compiled to
  292. * ${result-path}/classes/core
  293. * ${result-path}/classes/sass
  294. * ${result-path}/classes/tests
  295. * ${result-path}/classes/junit
  296. Java/HTML/CSS/XML files are filtered so the license is added and the version is set.
  297. Other files are just copied.
  298. -->
  299. <loadfile property="VaadinApache2LicenseForJavaFiles" srcFile="build/VaadinApache2LicenseForJavaFiles.txt" />
  300. <mkdir dir="${result-path}/src" />
  301. <mkdir dir="${result-src-sass}/src" />
  302. <mkdir dir="${result-src-core}" />
  303. <mkdir dir="${result-src-testbench}" />
  304. <mkdir dir="${result-src-junit}" />
  305. <mkdir dir="${result-src-sass-junit}" />
  306. <patternset id="preprocessable-files">
  307. <include name="**/*.java" />
  308. <include name="**/*.html" />
  309. <include name="**/*.css" />
  310. <include name="**/*.xml" />
  311. </patternset>
  312. <patternset id="non-preprocessable-files">
  313. <exclude name="**/.svn" />
  314. <exclude name="**/*.java" />
  315. <exclude name="**/*.html" />
  316. <exclude name="**/*.css" />
  317. <exclude name="**/*.xml" />
  318. </patternset>
  319. <filterset id="version-and-license">
  320. <filter token="VaadinApache2LicenseForJavaFiles" value="${VaadinApache2LicenseForJavaFiles}" />
  321. <filter token="VERSION" value="${version.full}" />
  322. </filterset>
  323. <!-- Adds a style class to JavaDoc <pre> tags for style customization. -->
  324. <filterset id="pre-css-style" begintoken=" * &lt;" endtoken="&gt;">
  325. <filter token="pre" value=" * &lt;pre class='code'&gt;" />
  326. </filterset>
  327. <echo>Copying src directory and processing copied files.</echo>
  328. <echo>Replacing &lt;version&gt; tag with build version for java/html/css/xml files.</echo>
  329. <copy todir="${result-src-core}" overwrite="yes">
  330. <filterset refid="version-and-license"/>
  331. <filterset refid="pre-css-style"/>
  332. <fileset dir="src">
  333. <patternset refid="preprocessable-files" />
  334. </fileset>
  335. <fileset dir="shared/src">
  336. <patternset refid="preprocessable-files" />
  337. </fileset>
  338. </copy>
  339. <copy todir="${result-src-sass}" overwrite="yes">
  340. <filterset refid="version-and-license"/>
  341. <filterset refid="pre-css-style"/>
  342. <fileset dir="sass/src">
  343. <patternset refid="preprocessable-files" />
  344. </fileset>
  345. </copy>
  346. <copy todir="${result-src-testbench}">
  347. <filterset refid="version-and-license"/>
  348. <fileset dir="tests/testbench">
  349. <patternset refid="preprocessable-files" />
  350. </fileset>
  351. </copy>
  352. <copy todir="${result-src-junit}">
  353. <filterset refid="version-and-license"/>
  354. <fileset dir="tests/server-side">
  355. <patternset refid="preprocessable-files" />
  356. </fileset>
  357. <fileset dir="tests/client-side">
  358. <patternset refid="preprocessable-files" />
  359. </fileset>
  360. </copy>
  361. <copy todir="${result-src-sass-junit}">
  362. <filterset refid="version-and-license"/>
  363. <fileset dir="tests/sass/src">
  364. <patternset refid="preprocessable-files" />
  365. </fileset>
  366. </copy>
  367. <!-- Add other files such as images, these are not filtered or processed by fixcrlf task -->
  368. <echo>Copying non java/html/css/xml files such as images.</echo>
  369. <copy todir="${result-src-core}">
  370. <fileset dir="src">
  371. <patternset refid="non-preprocessable-files" />
  372. </fileset>
  373. <fileset dir="shared/src">
  374. <patternset refid="non-preprocessable-files" />
  375. </fileset>
  376. </copy>
  377. <copy todir="${result-src-sass}">
  378. <fileset dir="${sass-src}">
  379. <patternset refid="non-preprocessable-files" />
  380. </fileset>
  381. </copy>
  382. <copy todir="${result-src-testbench}">
  383. <fileset dir="tests/testbench">
  384. <patternset refid="non-preprocessable-files" />
  385. </fileset>
  386. </copy>
  387. <copy todir="${result-src-junit}">
  388. <fileset dir="tests/server-side">
  389. <patternset refid="non-preprocessable-files" />
  390. </fileset>
  391. <fileset dir="tests/client-side">
  392. <patternset refid="non-preprocessable-files" />
  393. </fileset>
  394. </copy>
  395. <copy todir="${result-src-sass-junit}">
  396. <fileset dir="tests/sass/src">
  397. <patternset refid="non-preprocessable-files" />
  398. </fileset>
  399. <fileset dir="tests/sass/resources">
  400. <!-- test resources (files to compile and compare etc.) -->
  401. </fileset>
  402. </copy>
  403. </target>
  404. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  405. WebContent
  406. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  407. <target name="webcontent" depends="preprocess-src,defaulttheme">
  408. <!-- Add WebContent -->
  409. <echo>Adding VAADIN/themes and META-INF</echo>
  410. <copy todir="${output-dir}/WebContent">
  411. <fileset dir="WebContent">
  412. <exclude name="**/.svn" />
  413. <include name="WEB-INF/lib/hsqldb.jar" />
  414. <include name="VAADIN/themes/**/*" />
  415. <include name="VAADIN/vaadinBootstrap.js" />
  416. <include name="META-INF/**/*" />
  417. </fileset>
  418. </copy>
  419. <!-- Add test files to be included in test war -->
  420. <copy todir="${output-dir}/WebContent">
  421. <fileset dir="WebContent">
  422. <include name="statictestfiles/**" />
  423. </fileset>
  424. </copy>
  425. <!-- Add servlet and portlet configuration files from WebContent -->
  426. <copy todir="${output-dir}/WebContent/WEB-INF">
  427. <fileset dir="WebContent/WEB-INF">
  428. <include name="liferay-*.xml" />
  429. <include name="portlet.xml" />
  430. <include name="web.xml" />
  431. </fileset>
  432. </copy>
  433. <!-- These should go to various JARs -->
  434. <copy todir="${output-dir}/WebContent">
  435. <filterchain>
  436. <expandproperties />
  437. <replacetokens begintoken="@" endtoken="@">
  438. <token key="version" value="${version.full}" />
  439. </replacetokens>
  440. <replacetokens begintoken="@" endtoken="@">
  441. <token key="version-minor" value="${version.major}.${version.minor}" />
  442. </replacetokens>
  443. <replacetokens begintoken="@" endtoken="@">
  444. <token key="builddate" value="${build.date}" />
  445. </replacetokens>
  446. <replacetokens begintoken="@" endtoken="@">
  447. <token key="gwt-version" value="${gwt-version}" />
  448. </replacetokens>
  449. </filterchain>
  450. <fileset dir="WebContent">
  451. <exclude name="**/.svn" />
  452. <include name="release-notes.html" />
  453. <include name="license.html" />
  454. <include name="css/**" />
  455. <include name="img/**" />
  456. </fileset>
  457. </copy>
  458. </target>
  459. <target name="compile-core" depends="init, preprocess-src">
  460. <echo>Compiling src (server-side)</echo>
  461. <!-- Compile core sources first as the other sources depend on these -->
  462. <mkdir dir="${result-classes-core}" />
  463. <javac source="${required.java.version}" target="${required.java.version}" classpathref="compile.classpath.server-side" destdir="${result-classes-core}" debug="true" encoding="UTF-8" includeantruntime="false">
  464. <src path="${result-src-core}"/>
  465. </javac>
  466. </target>
  467. <target name="compile-tests" depends="compile-core">
  468. <echo>Compiling src (Server and client side JUnit tests)</echo>
  469. <!-- Compile server and client side JUnit tests -->
  470. <mkdir dir="${result-classes-junit}" />
  471. <javac source="${required.java.version}" target="${required.java.version}" classpathref="compile.classpath.server-side-tests" destdir="${result-classes-junit}" debug="true" encoding="UTF-8" includeantruntime="false">
  472. <classpath path="${result-classes-core}"></classpath>
  473. <src path="${result-src-junit}"/>
  474. </javac>
  475. <echo>Compiling SASS JUnit tests</echo>
  476. <!-- Compile server and client side JUnit tests -->
  477. <mkdir dir="${result-classes-sass-junit}" />
  478. <javac source="${required.java.version}" target="${required.java.version}" classpathref="compile.classpath.server-side-tests" destdir="${result-classes-sass-junit}" debug="true" encoding="UTF-8" includeantruntime="false">
  479. <classpath path="${result-classes-sass}"></classpath>
  480. <src path="${result-src-sass-junit}"/>
  481. </javac>
  482. <echo>Compiling src (TestBench tests)</echo>
  483. <!-- Compile TestBench tests -->
  484. <mkdir dir="${result-classes-testbench}" />
  485. <javac source="${required.java.version}" target="${required.java.version}" classpathref="compile.classpath.server-side" destdir="${result-classes-testbench}" debug="true" encoding="UTF-8" includeantruntime="false">
  486. <classpath path="${result-classes-junit}"></classpath>
  487. <classpath path="${result-classes-core}"></classpath>
  488. <src path="${result-src-testbench}"/>
  489. </javac>
  490. </target>
  491. <target name="compile-helpers" depends="init, compile-sass">
  492. <mkdir dir="${buildhelpers-classes}" />
  493. <javac source="${required.java.version}" target="${required.java.version}" includeantruntime="false" classpathref="compile.classpath.buildhelpers" destdir="${buildhelpers-classes}" debug="true" encoding="UTF-8" >
  494. <!-- SASS -->
  495. <classpath path="${result-classes-sass}" />
  496. <src path="${buildhelpers-src}"/>
  497. </javac>
  498. </target>
  499. <target name="compile-sass" depends="init, preprocess-src">
  500. <!-- TODO also perform javacc compilation of the parser -->
  501. <mkdir dir="${result-classes-sass}" />
  502. <javac source="${required.java.version}" target="${required.java.version}" includeantruntime="false" srcdir="${result-src-sass}"
  503. classpathref="compile.classpath.server-side" destdir="${result-classes-sass}" debug="true" encoding="UTF-8" />
  504. </target>
  505. <target name="defaulttheme" depends="init, compile-sass, compile-helpers" description="Compile all included themes">
  506. <echo>Combining default themes css files</echo>
  507. <java classname="com.vaadin.buildhelpers.CompileDefaultTheme" failonerror="yes" fork="yes">
  508. <arg value="-version" />
  509. <arg value="${version.full}"/>
  510. <classpath>
  511. <!-- SASS -->
  512. <path path="${result-classes-sass}" />
  513. <path location="${buildhelpers-classes}" />
  514. <path refid="compile.classpath.buildhelpers" />
  515. </classpath>
  516. <jvmarg value="-Djava.awt.headless=true"/>
  517. </java>
  518. </target>
  519. <target name="testtarget">
  520. <echo>TEST TARGET CALLED</echo>
  521. </target>
  522. <!-- ================================================================== -->
  523. <!-- Widget Set Compilation -->
  524. <!-- ================================================================== -->
  525. <!-- Widget set compilation process: -->
  526. <!-- 1. Preprocess sources -->
  527. <!-- 2. Compile server-side java -->
  528. <!-- 3. Generate widget set definitions and classes -->
  529. <!-- 4. Compile widget sets -->
  530. <!-- -->
  531. <!-- Widget sets can be built for two purposes: -->
  532. <!-- * for building installation packages -->
  533. <!-- * for building single widget sets during development -->
  534. <!-- Targets: widgetset-<name> -->
  535. <target name="remove-widgetset-gwt-tmp">
  536. <echo>Removing widgetset temp files</echo>
  537. <delete dir="${widgetsets-output-dir}/.gwt-tmp" includeemptydirs="true"/>
  538. <!-- This is generated by GWT 2.3+ for rpcPolicyManifest and symbolMaps, cannot disable -->
  539. <delete dir="${widgetsets-output-dir}/WEB-INF" includeemptydirs="true" failonerror="false" />
  540. </target>
  541. <!-- The widgetset generator is currently compiled along with rest of server-side Java. -->
  542. <target name="compile-widgetset-generator" depends="compile-core"/>
  543. <!-- Compiles the widgetset given as the first parameter -->
  544. <target name="compile-widgetset" depends="init-deps">
  545. <fail unless="widgetset" message="No widgetset parameter set"/>
  546. <property name="widgetset-style" value="OBF" />
  547. <property name="widgetset-localWorkers" value="2" />
  548. <property name="widgetset-extraParams" value="" />
  549. <echo>Compiling widgetset ${widgetset}. Output directory: ${widgetsets-output-dir}</echo>
  550. <mkdir dir="${widgetsets-output-dir}"/>
  551. <!-- Disabled to reduce JAR size: precompile the widgetset to a .gwtar file -->
  552. <!--
  553. <java classname="com.google.gwt.dev.CompileModule" classpathref="compile.classpath.widgetset" failonerror="yes" fork="yes" maxmemory="512m">
  554. <arg value="-out" />
  555. <arg value="${result-precompiled-widgetsets}" />
  556. <arg value="-strict" />
  557. <arg value="${widgetset}" />
  558. <jvmarg value="-Xss8M"/>
  559. <jvmarg value="-XX:MaxPermSize=256M"/>
  560. <jvmarg value="-Djava.awt.headless=true"/>
  561. </java>
  562. -->
  563. <!-- compile the widgetset -->
  564. <java classname="com.google.gwt.dev.Compiler" classpathref="compile.classpath.widgetset" failonerror="yes" fork="yes" maxmemory="512m">
  565. <arg value="-war" />
  566. <arg value="${widgetsets-output-dir}" />
  567. <arg value="-style" />
  568. <arg value="${widgetset-style}" />
  569. <arg value="-strict" />
  570. <arg value="-localWorkers" />
  571. <arg value="${widgetset-localWorkers}" />
  572. <arg line="${widgetset-extraParams}" />
  573. <arg value="${widgetset}" />
  574. <sysproperty key="vFailIfNotSerializable" value="true" />
  575. <jvmarg value="-Xss8M"/>
  576. <jvmarg value="-XX:MaxPermSize=256M"/>
  577. <jvmarg value="-Djava.awt.headless=true"/>
  578. </java>
  579. <antcall target="remove-widgetset-gwt-tmp"/>
  580. <echo>Compiled ${widgetset}</echo>
  581. </target>
  582. <target name="compile-widgetset-default">
  583. <antcall target="compile-widgetset">
  584. <reference refid="compile.classpath.widgetset" />
  585. <param name="widgetset" value="com.vaadin.terminal.gwt.DefaultWidgetSet"/>
  586. </antcall>
  587. </target>
  588. <target name="compile-widgetset-testing">
  589. <!-- Crate a path reference containing default widgetset classpath + testbench files -->
  590. <path id="compile.classpath.testingwidgetset">
  591. <path refid="compile.classpath.widgetset" />
  592. <pathelement location="${result-classes-testbench}" />
  593. <pathelement location="${result-src-testbench}" />
  594. </path>
  595. <antcall target="compile-widgetset">
  596. <reference refid="compile.classpath.testingwidgetset" torefid="compile.classpath.widgetset" />
  597. <param name="widgetset" value="com.vaadin.tests.widgetset.TestingWidgetSet"/>
  598. </antcall>
  599. </target>
  600. <target name="compile-widgetset-portal-default" unless="compile.only.default-widgetset">
  601. <antcall target="compile-widgetset">
  602. <reference refid="compile.classpath.widgetset" />
  603. <param name="widgetset" value="com.vaadin.portal.gwt.PortalDefaultWidgetSet"/>
  604. </antcall>
  605. </target>
  606. <!-- Compiles all widgetsets. -->
  607. <!-- This is called when building packages and when compiling all -->
  608. <!-- widgetsets, but not when compiling individual widgetsets. -->
  609. <target name="compile-client-side" depends="compile-gwt, compile-server-side, compile-tests">
  610. <echo>Compiling widget sets in parallel.</echo>
  611. <parallel threadsperprocessor="1">
  612. <antcall inheritrefs="true" target="compile-widgetset-default"/>
  613. <antcall inheritrefs="true" target="compile-widgetset-testing"/>
  614. <antcall inheritrefs="true" target="compile-widgetset-portal-default"/>
  615. </parallel>
  616. </target>
  617. <!-- Definitions for building local components, i.e., not for an installation package. -->
  618. <target name="init-nonpackage" depends="build.properties">
  619. <!-- Definitions for building the client-side. -->
  620. <property name="widgetsets-output-dir" value="WebContent/VAADIN/widgetsets" />
  621. <echo>We are using ${lib-gwt-dev}.</echo>
  622. <echo>Widget sets output dir: ${widgetsets-output-dir}</echo>
  623. </target>
  624. <!-- Builds all widgetsets locally, i.e., not for an installation package. -->
  625. <target name="widgetsets" depends="init-nonpackage, init, compile-widgetset-generator, compile-client-side"/>
  626. <!-- Build each widgetset locally, i.e., not for an installation package. -->
  627. <target name="widgetset-default" depends="init-nonpackage, init, compile-gwt, compile-widgetset-generator, compile-widgetset-default" description="Compile the DefaultWidgetSet"/>
  628. <target name="widgetset-testing" depends="init-nonpackage, init, compile-gwt, compile-tests, compile-widgetset-generator, compile-widgetset-testing"/>
  629. <target name="widgetset-portal-default" depends="init-nonpackage, init, compile-gwt, compile-widgetset-generator, compile-widgetset-portal-default"/>
  630. <!-- ================================================================== -->
  631. <!-- Libraries and Tests -->
  632. <!-- ================================================================== -->
  633. <target name="compile-gwt" depends="init" unless="use.precompiled.gwt">
  634. <!-- skipped based on a parameter, use pre-compiled JARs from elsewhere -->
  635. <!-- Compile GWT in a directory defined by properties -->
  636. <ant antfile="${gwt.root}/build.xml" target="user" dir="${gwt.root}" inheritall="false" inheritrefs="false">
  637. <property name="gwt.root" value="${gwt.root}"/>
  638. </ant>
  639. <ant antfile="${gwt.root}/build.xml" target="dev" dir="${gwt.root}" inheritall="false" inheritrefs="false">
  640. <property name="gwt.root" value="${gwt.root}"/>
  641. </ant>
  642. <ant antfile="${gwt.root}/build.xml" target="codeserver" dir="${gwt.root}" inheritall="false" inheritrefs="false">
  643. <property name="gwt.root" value="${gwt.root}"/>
  644. </ant>
  645. <ant antfile="${gwt.root}/build.xml" target="elemental" dir="${gwt.root}" inheritall="false" inheritrefs="false">
  646. <property name="gwt.root" value="${gwt.root}"/>
  647. </ant>
  648. </target>
  649. <!-- Compile the Vaadin library JAR. -->
  650. <!-- Need only the default widgetset for this, but can't depend -->
  651. <!-- specifically on it, because dependence does not see compiled -->
  652. <!-- individual widgetsets, because antcall does not fulfill -->
  653. <!-- dependencies. -->
  654. <target name="vaadin.jar" depends="compile-server-side, compile-client-side, compile-helpers">
  655. <echo>Creating JAR (server-side) ${lib-jar-name}</echo>
  656. <!-- Create Vaadin JAR -->
  657. <mkdir dir="${output-dir}/META-INF"/>
  658. <echo file="${output-dir}/META-INF/VERSION">${version.full}</echo>
  659. <emma enabled="${emma.enabled}" >
  660. <instr instrpath="${result-classes-core}"
  661. destdir="${result-classes-core-for-emma-war}"
  662. mode="copy"
  663. metadatafile="${result-path}/war.es"
  664. merge="false"
  665. >
  666. <filter includes="com.vaadin.*" />
  667. <filter excludes="com.vaadin.terminal.gwt.*" />
  668. </instr>
  669. </emma>
  670. <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"
  671. classpath="${jarjar-jar}"/>
  672. <jarjar jarfile="${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name}"
  673. compress="true" manifest="build/package/META-INF/MANIFEST.MF" duplicate="preserve" index="true">
  674. <metainf dir="${output-dir}/META-INF"/>
  675. <manifest>
  676. <attribute name="Vaadin-Package-Version" value="1" />
  677. <attribute name="Vaadin-Widgetsets" value="com.vaadin.terminal.gwt.DefaultWidgetSet" />
  678. <attribute name="Implementation-Vendor" value="Vaadin Ltd" />
  679. <attribute name="Implementation-URL" value="http://vaadin.com" />
  680. <attribute name="Implementation-Version" value="${version.full}" />
  681. <!-- No separate GWT-Version attribute or file -->
  682. <!-- <attribute name="GWT-Version" value="${gwt-version}" /> -->
  683. <attribute name="GWT-Version-Dependencies" value="${gwt-version-dependencies}" />
  684. <attribute name="Bundle-Version" value="${version.full}" />
  685. </manifest>
  686. <!-- Include any instrumented class files before the normal classes -->
  687. <fileset dir="${result-classes-core-for-emma-war}" />
  688. <fileset dir="${result-classes-core}"/>
  689. <fileset dir="${result-classes-sass}"/>
  690. <!-- add sources -->
  691. <fileset dir="${result-src-core}"/>
  692. <fileset dir="${result-src-sass}"/>
  693. <fileset dir="${output-dir}/WebContent">
  694. <patternset>
  695. <include name="VAADIN/widgetsets/com.vaadin.terminal.gwt.DefaultWidgetSet/**/*" />
  696. <include name="VAADIN/themes/base/**/*" />
  697. <include name="VAADIN/themes/chameleon/**/*" />
  698. <include name="VAADIN/themes/liferay/**/*" />
  699. <include name="VAADIN/themes/runo/**/*" />
  700. <include name="VAADIN/themes/reindeer/**/*" />
  701. <include name="VAADIN/vaadinBootstrap.js" />
  702. <include name="release-notes.html" />
  703. <include name="license.html" />
  704. <include name="css/**" />
  705. <include name="img/**" />
  706. </patternset>
  707. </fileset>
  708. <!-- Precompiled widgetset (.gwtar file) not included to limit JAR size -->
  709. <!-- <fileset dir="${result-precompiled-widgetsets}" includes="com/vaadin/terminal.gwt.DefaultWidgetSet.gwtar" /> -->
  710. <!-- TODO GWT related license files etc. should be in subdirectories -->
  711. <!-- GWT -->
  712. <!-- Precompiled GWT modules (.gwtar file) not included to limit JAR size -->
  713. <zipfileset src="${gwt.user.jar}" excludes="META-INF/**,javax/servlet/**,**/*.gwtar" />
  714. <!-- TODO depends on locally compiled gwt-user -->
  715. <!--
  716. <fileset dir="${gwt.user.dir}/src" excludes="**/package.html" />
  717. <fileset dir="${gwt.user.dir}/super" excludes="**/package.html" />
  718. <fileset dir="${gwt.user.bin}" excludes="**/*.gwtar" />
  719. <zipfileset src="${gwt.tools.lib}/w3c/sac/sac-1.3.jar" />
  720. <zipfileset src="${gwt.tools.lib}/w3c/flute/flute-1.3-gg2.jar" />
  721. <zipfileset src="${gwt.tools.lib}/streamhtmlparser/streamhtmlparser-jsilver-r10/streamhtmlparser-jsilver-r10-1.5-rebased.jar" />
  722. -->
  723. <!-- GWT development JAR contents including many external dependencies -->
  724. <zipfileset src="${gwt.dev.jar}" excludes="javax/servlet/**,javax/xml/**" />
  725. <!-- Alternative approach: GWT compiler and its dependencies only from the dev JAR -->
  726. <!--
  727. <zipfileset src="${gwt.dev.jar}">
  728. <include name="com/google/gwt/core/client/**"/>
  729. <include name="com/google/gwt/core/shared/**"/>
  730. <include name="com/google/gwt/core/ext/**"/>
  731. <include name="com/google/gwt/core/linker/**"/>
  732. <include name="com/google/gwt/dev/About.java"/>
  733. <include name="com/google/gwt/dev/GwtVersion.java"/>
  734. <include name="com/google/gwt/dev/Permutation.java"/>
  735. <include name="com/google/gwt/dev/asm/**"/>
  736. <include name="com/google/gwt/dev/cfg/**"/>
  737. <include name="com/google/gwt/dev/javac/**"/>
  738. <include name="com/google/gwt/dev/jdt/**"/>
  739. <include name="com/google/gwt/dev/jjs/**"/>
  740. <include name="com/google/gwt/dev/js/**"/>
  741. <include name="com/google/gwt/dev/json/**"/>
  742. <include name="com/google/gwt/dev/resource/**"/>
  743. <include name="com/google/gwt/dev/util/**"/>
  744. <include name="com/google/gwt/soyc/**"/>
  745. <include name="com/google/gwt/util/**"/>
  746. <include name="org/eclipse/jdt/**"/>
  747. </zipfileset>
  748. <zipfileset src="${gwt.tools.lib}/apache/ant-1.6.5.jar" />
  749. <zipfileset src="${gwt.tools.lib}/eclipse/jdt-3.4.2_r894.jar" />
  750. <zipfileset src="${gwt.tools.lib}/tomcat/commons-collections-3.1.jar" />
  751. <zipfileset src="${gwt.tools.lib}/guava/guava-10.0.1/guava-10.0.1-rebased.jar" />
  752. <zipfileset src="${gwt.tools.lib}/jscomp/r1649/compiler-rebased.jar" />
  753. -->
  754. <!-- GWT SuperDevMode -->
  755. <zipfileset src="${gwt.codeserver.jar}" />
  756. <!-- GWT Elemental -->
  757. <zipfileset src="${gwt.elemental.jar}" />
  758. <!-- jarjar rules: rebase packages from gwt-dev.jar but not those from gwt-user -->
  759. <!-- Don't rebase these -->
  760. <!-- xalan is used via reflection -->
  761. <rule pattern="org.apache.xalan.**" result="@0"/>
  762. <rule pattern="org.apache.xml.**" result="@0"/>
  763. <!-- Cannot rebase - used in APIs etc. -->
  764. <!-- <rule pattern="org.mortbay.**" result="@0"/> -->
  765. <!-- <rule pattern="org.xml.**" result="@0"/> -->
  766. <!-- Rebase these -->
  767. <rule pattern="com.gargoylesoftware.**" result="com.vaadin.external.@0"/>
  768. <rule pattern="com.ibm.**" result="com.vaadin.external.@0"/>
  769. <rule pattern="com.steadystate.**" result="com.vaadin.external.@0"/>
  770. <rule pattern="mx4j.**" result="com.vaadin.external.@0"/>
  771. <rule pattern="net.sourceforge.htmlunit.**" result="com.vaadin.external.@0"/>
  772. <rule pattern="org.apache.**" result="com.vaadin.external.@0"/>
  773. <rule pattern="org.cyberneko.**" result="com.vaadin.external.@0"/>
  774. <rule pattern="org.eclipse.**" result="com.vaadin.external.@0"/>
  775. <!-- looked up based on class name? -->
  776. <rule pattern="org.hibernate.validator.**" result="com.vaadin.external.@0"/>
  777. <rule pattern="org.jdesktop.swingworker.**" result="com.vaadin.external.@0"/>
  778. <rule pattern="org.kohsuke.args4j.**" result="com.vaadin.external.@0"/>
  779. </jarjar>
  780. <!-- Generate the Export-Package attribute in the manifest of the JAR -->
  781. <java classname="com.vaadin.buildhelpers.GeneratePackageExports" failonerror="true" fork="yes">
  782. <arg value="${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name}"/>
  783. <classpath>
  784. <pathelement location="${buildhelpers-classes}" />
  785. </classpath>
  786. </java>
  787. <echo>##teamcity[publishArtifacts '${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name}']</echo>
  788. </target>
  789. <target name="vaadin-sources.jar" depends="init">
  790. <jar file="${result-path}/${lib-sources-jar-name}" compress="true">
  791. <fileset dir="${result-src-core}">
  792. <patternset>
  793. <include name="**/*.java" />
  794. </patternset>
  795. </fileset>
  796. <fileset dir="${result-src-sass}">
  797. <patternset>
  798. <include name="**/*.java" />
  799. </patternset>
  800. </fileset>
  801. <fileset dir="${output-dir}/WebContent">
  802. <patternset>
  803. <include name="release-notes.html" />
  804. <include name="license.html" />
  805. <include name="css/**" />
  806. <include name="img/**" />
  807. </patternset>
  808. </fileset>
  809. </jar>
  810. </target>
  811. <!-- ================================================================== -->
  812. <!-- Documentation -->
  813. <!-- ================================================================== -->
  814. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  815. <!-- Documentation: Add Javadoc to doc -->
  816. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  817. <target name="javadoc" depends="init, preprocess-src">
  818. <property name="javadoc.destdir" value="${output-dir}/WebContent/docs/api"/>
  819. <javadoc destdir="${javadoc.destdir}" author="true" version="true" use="true" windowtitle="${product-name}" classpathref="compile.classpath.client-side">
  820. <packageset dir="${result-src-core}"/>
  821. <doctitle>${javadoc.doctitle}</doctitle>
  822. <!-- <header><![CDATA[<script type="text/javascript" src=".html-style/style.js"></script>]]></header> -->
  823. <bottom>${javadoc.bottom}</bottom>
  824. <link offline="true" href="http://docs.oracle.com/javase/6/docs/api/" packagelistLoc="build/javadoc/j2se-1.6.0" />
  825. <link offline="true" href="http://java.sun.com/j2ee/1.4/docs/api/" packagelistLoc="build/javadoc/j2ee-1.4" />
  826. </javadoc>
  827. <!-- Create a javadoc jar, mainly for Maven -->
  828. <jar file="${result-path}/${lib-javadoc-jar-name}" compress="true">
  829. <fileset dir="${javadoc.destdir}">
  830. <patternset>
  831. <include name="**" />
  832. </patternset>
  833. </fileset>
  834. <fileset dir="${output-dir}/WebContent">
  835. <patternset>
  836. <include name="release-notes.html" />
  837. <include name="license.html" />
  838. <include name="css/**" />
  839. <include name="img/**" />
  840. </patternset>
  841. </fileset>
  842. </jar>
  843. <!-- Append local style definitions. -->
  844. <echo>Appending local style definitions</echo>
  845. <concat destfile="${javadoc.destdir}/stylesheet.css" append="yes">
  846. <filelist dir="build/javadoc" files="stylesheet-local.css"/>
  847. </concat>
  848. </target>
  849. <!-- ================================================================== -->
  850. <!-- Difference to previous release package. -->
  851. <!-- ================================================================== -->
  852. <!-- This should be called after the Linux package is ready. -->
  853. <target name="differences" if="build.differences">
  854. <exec executable="python" searchpath="true" failonerror="true" output="${result-path}/differences.txt">
  855. <arg value="build/bin/package-diff.py"/>
  856. <arg value="${version.full}"/>
  857. </exec>
  858. <echo>##teamcity[publishArtifacts '${result-path}/differences.txt']</echo>
  859. </target>
  860. <!-- ================================================================== -->
  861. <!-- Custom build. -->
  862. <!-- ================================================================== -->
  863. <!-- Main target for the custom build. -->
  864. <!-- Need to read custom build configuration before calling clean-result -->
  865. <target name="custom-build" depends="custom-build-init, clean-result, nightly-init, init, build">
  866. </target>
  867. <!-- Initialize a custom build. -->
  868. <target name="custom-build-init">
  869. <echo>Preparing a custom build with properties file: ${build.properties.file}</echo>
  870. <!-- Custom build support -->
  871. <antcontrib:if>
  872. <isset property="build.properties.file"/>
  873. <then>
  874. <tstamp>
  875. <format property="build.date.compact" pattern="yyyyMMdd"/>
  876. </tstamp>
  877. <property file="${build.properties.file}" />
  878. <property name="version" value="${vaadin.version}"/>
  879. <property name="version.full" value="${version}-${build.date.compact}"/>
  880. </then>
  881. <!-- Otherwise version is set by the target "init" -->
  882. </antcontrib:if>
  883. </target>
  884. <target name="custom-build-maven-publish">
  885. <antcall target="nightly-maven-publish" />
  886. </target>
  887. <!-- ================================================================== -->
  888. <!-- Nightly build. -->
  889. <!-- ================================================================== -->
  890. <!-- Main target for the nightly build. -->
  891. <target name="nightly" depends="clean-result, nightly-init, init, build, javadoc, differences">
  892. </target>
  893. <!-- Initialize a nightly build. -->
  894. <target name="nightly-init" depends="build.properties">
  895. <!-- Mandatory parameters. -->
  896. <fail unless="build.number" message="The build.number property must be defined."/>
  897. <fail unless="nightly.publish" message="The nightly.publish property must be defined."/>
  898. <!-- Optional parameters. -->
  899. <property name="build.tag" value="dev"/>
  900. <echo>Base version: ${version}</echo>
  901. <echo>Build number: ${build.number}</echo>
  902. <echo>Build tag: ${build.tag}</echo>
  903. <echo>Publish target: ${nightly.publish}</echo>
  904. <echo>Demo publish target: ${nightly.demo.publish}</echo>
  905. <!-- Set build number. -->
  906. <tstamp>
  907. <format property="nightly.date" pattern="yyyyMMdd"/>
  908. </tstamp>
  909. <property name="version.full" value="${version}.${build.tag}-${nightly.date}-${build.number}"/>
  910. <echo>Version will be: ${version.full}</echo>
  911. <!-- Tell TeamCity the build name. Have to do it this way, because -->
  912. <!-- this script needs to get the plain build number as a parameter. -->
  913. <echo>##teamcity[buildNumber '${version}-c${build.number}']</echo>
  914. </target>
  915. <target name="nightly-teamcity-publish">
  916. <!-- Publish as a TeamCity artifact. -->
  917. <echo>##teamcity[publishArtifacts '${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name}']</echo>
  918. </target>
  919. <!-- Copies the nightly build artifacts to the download server. -->
  920. <target name="nightly-download-publish" if="nightly.publish">
  921. <!-- Publish to the download server. -->
  922. <echo>Installing ${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name} to ${nightly.publish}</echo>
  923. <echo>Hopefully you have permissions for the copy operation with SSH.</echo>
  924. <!-- Copy the linux installation package and the JAR. -->
  925. <exec executable="scp" searchpath="true" resultproperty="nightly.install.scp.result">
  926. <arg value="-B"/>
  927. <arg value="${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name}"/>
  928. <arg value="${nightly.publish}"/>
  929. </exec>
  930. <echo>Result: ${nightly.install.scp.result}</echo>
  931. </target>
  932. <!-- Copies the nightly build artifacts to the download server. -->
  933. <target name="nightly-tests-publish" if="nightly.demo.publish" depends="internal-package-war">
  934. <fail unless="version.major" message="Major version must be defined in version.major"/>
  935. <fail unless="version.minor" message="Major version must be defined in version.minor"/>
  936. <!-- Publish to the demo server. -->
  937. <property name="src" value="${result-path}/${test-war-filename}"/>
  938. <property name="target" value="${nightly.demo.publish}/${version.major}.${version.minor}-${build.tag}.war"/>
  939. <echo>Installing ${src} to ${target}</echo>
  940. <!-- Copy the linux installation package and the JAR. -->
  941. <exec executable="scp" searchpath="true" resultproperty="nightly.demo.install.scp.result">
  942. <arg value="-B"/>
  943. <arg value="${src}"/>
  944. <arg value="${target}"/>
  945. </exec>
  946. <echo>Result: ${nightly.install.scp.result}</echo>
  947. </target>
  948. <target name="nightly-publish" depends="nightly-teamcity-publish, nightly-download-publish, nightly-tests-publish">
  949. </target>
  950. <target name="nightly-maven-pom.xml">
  951. <echo>Creating pom.xml for nightly build</echo>
  952. <property name="vaadin.version.maven" value="${version.major}.${version.minor}-SNAPSHOT" />
  953. <copy tofile="build/maven/pom.xml">
  954. <filterchain>
  955. <expandproperties />
  956. <replacetokens begintoken="@" endtoken="@">
  957. <token key="MAVEN-VERSION" value="${vaadin.version.maven}" />
  958. </replacetokens>
  959. </filterchain>
  960. <fileset file="build/maven/pom-template.xml"/>
  961. </copy>
  962. </target>
  963. <target name="nightly-maven-publish" depends="nightly-maven-pom.xml">
  964. <property file="${gpg.passphrase.file}" />
  965. <echo>Publishing ${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name} to Maven repository</echo>
  966. <artifact:mvn failonerror="true">
  967. <arg value="gpg:sign-and-deploy-file"/>
  968. <!-- .. is a workaround as maven runs in the build directory -->
  969. <sysproperty key="file" value="../${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name}" />
  970. <sysproperty key="pomFile" value="maven/pom.xml" />
  971. <sysproperty key="repositoryId" value="vaadin-snapshots" />
  972. <sysproperty key="url" value="${snapshot.repository.url}" />
  973. <sysproperty key="gpg.passphrase" value="${gpg.passphrase}" />
  974. </artifact:mvn>
  975. </target>
  976. <target name="local-maven-pom.xml">
  977. <echo>Creating pom.xml for local test build</echo>
  978. <fail unless="version.major" message="Major version must be defined in version.major"/>
  979. <fail unless="version.minor" message="Major version must be defined in version.minor"/>
  980. <property name="vaadin.version.maven" value="${version.major}.${version.minor}" />
  981. <copy tofile="build/maven/pom.xml">
  982. <filterchain>
  983. <expandproperties />
  984. <replacetokens begintoken="@" endtoken="@">
  985. <token key="MAVEN-VERSION" value="${vaadin.version.maven}" />
  986. </replacetokens>
  987. </filterchain>
  988. <fileset file="build/maven/pom-template.xml"/>
  989. </copy>
  990. </target>
  991. <target name="local-maven-publish" depends="local-maven-pom.xml">
  992. <echo>Publishing ${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name} to the local Maven repository</echo>
  993. <artifact:mvn>
  994. <arg value="install:install-file"/>
  995. <!-- .. is a workaround as maven runs in the build directory -->
  996. <sysproperty key="file" value="../${output-dir}/WebContent/WEB-INF/lib/${lib-jar-name}" />
  997. <sysproperty key="pomFile" value="maven/pom.xml" />
  998. </artifact:mvn>
  999. </target>
  1000. <!-- ================================================================== -->
  1001. <!-- Automated tests. -->
  1002. <!-- ================================================================== -->
  1003. <target name="tests" depends="compile-tests, internal-package-war">
  1004. <!-- Run all different types of tests in parallel to decrease testing time -->
  1005. <parallel threadcount="3">
  1006. <sequential>
  1007. <!-- Sleep before running integration tests so testbench tests have time to compile and start -->
  1008. <sleep minutes="4" />
  1009. <antcall inheritrefs="true" inheritall="true" target="integration-tests"></antcall>
  1010. </sequential>
  1011. <antcall inheritrefs="true" inheritall="true" target="testbench-tests"></antcall>
  1012. <antcall inheritrefs="true" inheritall="true" target="server-side-tests"></antcall>
  1013. <antcall inheritrefs="true" inheritall="true" target="sass-tests"></antcall>
  1014. </parallel>
  1015. <!-- Create a combined report from each test's sub report -->
  1016. <emma enabled="${emma.enabled}" >
  1017. <merge file="${result-path}/combined.es">
  1018. <fileset dir="${result-path}" >
  1019. <include name="*.ec" />
  1020. <include name="*.em" />
  1021. </fileset>
  1022. </merge>
  1023. <report sourcepath="${result-src-core}" >
  1024. <fileset dir="${result-path}" >
  1025. <include name="combined.es" />
  1026. </fileset>
  1027. <txt outfile="../${result-path}/coverage/coverage-combined/coverage.txt" />
  1028. <html outfile="../${result-path}/coverage/coverage-combined/coverage.html" />
  1029. </report>
  1030. </emma>
  1031. <echo>##teamcity[publishArtifacts '${result-path}/coverage']</echo>
  1032. </target>
  1033. <!-- Assumes java classes have been compiled but depends does not work out well as this is run from a <parallel> task-->
  1034. <target name="server-side-tests" unless="tests.serverside.skip" depends="compile-tests">
  1035. <emma enabled="${emma.enabled}" >
  1036. <instr instrpath="${result-classes-core}"
  1037. destdir="${result-classes-core-for-emma-junit}"
  1038. mode="copy"
  1039. metadatafile="${result-path}/unittests.em"
  1040. merge="false"
  1041. >
  1042. <filter includes="com.vaadin.*" />
  1043. <filter excludes="com.vaadin.terminal.gwt.*" />
  1044. </instr>
  1045. </emma>
  1046. <junit printsummary="yes">
  1047. <classpath>
  1048. <pathelement path="${result-classes-core-for-emma-junit}" />
  1049. <pathelement path="${result-classes-core}" />
  1050. <pathelement path="${result-classes-junit}" />
  1051. <path refid="compile.classpath.server-side-tests"></path>
  1052. </classpath>
  1053. <jvmarg value="-Demma.coverage.out.file=../${result-path}/unittests.ec" />
  1054. <batchtest fork="yes">
  1055. <fileset dir="tests/server-side" includes="**/*.java" excludes="**/Abstract*.java,com/vaadin/tests/data/bean/*.java,com/vaadin/tests/util/*.java,**/VaadinClasses.java" />
  1056. <fileset dir="tests/client-side" includes="**/*.java" excludes="**/Abstract*.java" />
  1057. </batchtest>
  1058. </junit>
  1059. <emma enabled="${emma.enabled}" >
  1060. <report sourcepath="${result-src-core}" >
  1061. <fileset dir="${result-path}" >
  1062. <include name="unittests.*" />
  1063. </fileset>
  1064. <txt outfile="../${result-path}/coverage/coverage-unittests/unittests_coverage.txt" />
  1065. <html outfile="../${result-path}/coverage/coverage-unittests/unittests_coverage.html" />
  1066. </report>
  1067. </emma>
  1068. <echo>##teamcity[publishArtifacts '${result-path}/coverage']</echo>
  1069. </target>
  1070. <!-- Assumes java classes have been compiled but depends does not work out well as this is run from a <parallel> task-->
  1071. <target name="sass-tests" unless="tests.serverside.skip" depends="compile-tests">
  1072. <junit printsummary="yes">
  1073. <classpath>
  1074. <pathelement path="${result-src-sass-junit}" />
  1075. <pathelement path="${result-classes-sass}" />
  1076. <pathelement path="${result-classes-sass-junit}" />
  1077. <path refid="compile.classpath.server-side-tests"></path>
  1078. </classpath>
  1079. <batchtest fork="yes">
  1080. <fileset dir="${result-src-sass-junit}" includes="**/*.java" excludes="**/Abstract*.java" />
  1081. </batchtest>
  1082. </junit>
  1083. </target>
  1084. <!-- Assumes java classes have been compiled but depends does not work out well as this is run from a <parallel> task-->
  1085. <target name="testbench-tests" unless="tests.testbench.skip">
  1086. <fail unless="product-file" message="The 'product-file' property must be defined."/>
  1087. <fail unless="version" message="The 'version' property must be defined."/>
  1088. <echo>Version: ${version.full}</echo>
  1089. <!-- Parameters for the test.xml script. -->
  1090. <fail unless="com.vaadin.testbench.tester.host" message="The 'com.vaadin.testbench.tester.host' property must be defined."/>
  1091. <fail unless="com.vaadin.testbench.deployment.url" message="The 'com.vaadin.testbench.deployment.url' property must be defined."/>
  1092. <fail unless="com.vaadin.testbench.lib.dir" message="The 'com.vaadin.testbench.lib.dir' property must be defined."/>
  1093. <property name="com.vaadin.testbench.screenshot.block.error" value="0.025"/>
  1094. <property name="com.vaadin.testbench.debug" value="false"/>
  1095. <property name="package.name" value="${base-name}"/>
  1096. <!-- Only Linux tests allowed. TODO: Generalize this. -->
  1097. <property name="package.filename" value="${result-path}/${test-war-filename}"/>
  1098. <!-- Run the separate test script. -->
  1099. <ant antfile="tests/test.xml" target="test-package" inheritall="false" inheritrefs="true">
  1100. <!-- This is provided so that the test script can copy the -->
  1101. <!-- "tests" classes after unpacking the package. -->
  1102. <property name="output-dir" value="${output-dir}"/>
  1103. <!-- Convert tests to run multiple times if failed. -->
  1104. <property name="retries" value="2"/>
  1105. <property name="package.filename" value="${basedir}/${package.filename}"/>
  1106. <property name="testing.testarea" value="/tmp/testarea"/>
  1107. <property name="package.name" value="${package.name}"/>
  1108. <property name="test-output-dir" value="../build/test-output" />
  1109. <property name="com.vaadin.testbench.tester.host" value="${com.vaadin.testbench.tester.host}"/>
  1110. <property name="com.vaadin.testbench.deployment.url" value="${com.vaadin.testbench.deployment.url}"/>
  1111. <property name="com.vaadin.testbench.lib.dir" value="${com.vaadin.testbench.lib.dir}"/>
  1112. <property name="com.vaadin.testbench.debug" value="${com.vaadin.testbench.debug}"/>
  1113. <property name="com.vaadin.testbench.screenshot.block.error" value="${com.vaadin.testbench.screenshot.block.error}"/>
  1114. <property name="deps.initialized" value="${deps.initialized}"/>
  1115. </ant>
  1116. <emma enabled="${emma.enabled}" >
  1117. <report sourcepath="${result-src-core}" >
  1118. <fileset dir="${result-path}" >
  1119. <include name="war.*" />
  1120. </fileset>
  1121. <txt outfile="../${result-path}/coverage/coverage-testbench/testbench_coverage.txt" />
  1122. <html outfile="../${result-path}/coverage/coverage-testbench/testbench_coverage.html" />
  1123. </report>
  1124. </emma>
  1125. <echo>##teamcity[publishArtifacts '${result-path}/coverage/']</echo>
  1126. </target>
  1127. <!-- Assumes java classes have been compiled but depends does not work out well as this is run from a <parallel> task-->
  1128. <target name="integration-tests" depends="init-deps" unless="tests.integration.skip">
  1129. <!-- Parameters for the test.xml script. -->
  1130. <fail unless="com.vaadin.testbench.tester.host" message="The 'com.vaadin.testbench.tester.host' property must be defined."/>
  1131. <fail unless="com.vaadin.testbench.lib.dir" message="The 'com.vaadin.testbench.lib.dir' property must be defined."/>
  1132. <fail unless="sshkey.file" message="The 'sshkey.file' property must be defined."/>
  1133. <!-- Empty passphrase if no passphrase defined -->
  1134. <property name="passphrase" value="" />
  1135. <property name="tests.war" location="${result-path}/${test-war-filename}" />
  1136. <!-- Run the separate test script. -->
  1137. <ant antfile="tests/integration_tests.xml" target="integration-test-all" inheritall="false" inheritrefs="true">
  1138. <!-- This is provided so that the test script can copy the -->
  1139. <!-- "tests" classes after unpacking the package. -->
  1140. <property name="output-dir" value="${output-dir}"/>
  1141. <property name="com.vaadin.testbench.tester.host" value="${com.vaadin.testbench.tester.host}"/>
  1142. <property name="com.vaadin.testbench.lib.dir" value="${com.vaadin.testbench.lib.dir}"/>
  1143. <property name="sshkey.file" value="${sshkey.file}" />
  1144. <property name="passphrase" value="${passphrase}" />
  1145. <property name="demo.war" value="${tests.war}"/>
  1146. <property name="deps.initialized" value="${deps.initialized}"/>
  1147. </ant>
  1148. </target>
  1149. </project>
  1150. <!-- These are for emacs. -->
  1151. <!-- Keep this comment at the end of the file
  1152. Local variables:
  1153. mode: xml
  1154. sgml-omittag:nil
  1155. sgml-shorttag:nil
  1156. sgml-namecase-general:nil
  1157. sgml-general-insert-case:lower
  1158. sgml-minimize-attributes:nil
  1159. sgml-always-quote-attributes:t
  1160. sgml-indent-step:4
  1161. sgml-indent-data:t
  1162. sgml-parent-document:nil
  1163. sgml-exposed-tags:nil
  1164. sgml-local-catalogs:("/etc/sgml/catalog" "/usr/share/xemacs21/xemacs-packages/etc/psgml-dtds/CATALOG")
  1165. sgml-local-ecat-files:("ECAT" "~/sgml/ECAT" "/usr/share/sgml/ECAT" "/usr/local/share/sgml/ECAT" "/usr/local/lib/sgml/ECAT")
  1166. End:
  1167. -->