Author: buildbot
Date: Mon Aug  6 01:22:43 2018
New Revision: 1033559

Log:
Production update by buildbot for tapestry

Modified:
    websites/production/tapestry/content/building-tapestry-from-source.html
    websites/production/tapestry/content/cache/main.pageCache

Modified: 
websites/production/tapestry/content/building-tapestry-from-source.html
==============================================================================
--- websites/production/tapestry/content/building-tapestry-from-source.html 
(original)
+++ websites/production/tapestry/content/building-tapestry-from-source.html Mon 
Aug  6 01:22:43 2018
@@ -75,24 +75,24 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>This is a guide to building 
Tapestry itself from source code. This is primarily of interest to Tapestry 
<em>contributors</em>, rather than Tapestry <em>users</em>.</p><p>Although 
Tapestry <em>users</em> are free to use any build mechanism for their own 
projects (and first class Maven support is provided), to build Tapestry itself 
from source you will use Gradle.</p><p>Note: Both command line and Eclipse 
Gradle IDE/EGit instructions are given here. Generally you'll want to chose 
approach one or the other, rather than mixing them.</p><h2 
id="BuildingTapestryfromSource-Prerequisites">Prerequisites</h2><ul><li>Install 
a <strong>Java JDK</strong> (Sun/Oracle, not OpenJDK), version 1.7 (just to 
prevent VU#225657, see: <a  class="external-link" 
href="http://www.kb.cert.org/vuls/id/225657"; 
rel="nofollow">http://www.kb.cert.org/vuls/id/225657</a>), or version 1.8 for 
Tapestry 5.5 and later.</li><li>Install an <strong>IDE</strong> (IDEA IntelliJ 
 is recommended (and free to Tapestry committers), but Eclipse will also work. 
NetBeans is reported to work as well.</li><li><strong>Firefox</strong>: For 
Tapestry 5.4.x and earlier, install Firefox browser <a  class="external-link" 
href="https://ftp.mozilla.org/pub/firefox/releases/42.0/"; 
rel="nofollow">version 42</a> or earlier, needed for the integration tests 
(because newer versions require a newer version of Selenium than Tapestry's 
Java version requirements allow).</li><li><s>Set the Firefox browser's 
"preferred language" to English (en), because some tests will otherwise 
fail.</s> (Fixed; see <a  class="external-link" 
href="https://issues.apache.org/jira/browse/TAP5-2413";>TAP5-2413</a>)</li><li>Install
 a <strong>Git</strong> client<ul><li>Command-line users: <a  
class="external-link" href="http://git-scm.com/downloads"; 
rel="nofollow">http://git-scm.com/downloads</a></li><li>Eclipse users: install 
EGit from the Eclipse Marketplace, then in In Window &gt; Preferences &gt; Team 
&
 gt; Git, set your "Default repository folder" (e.g. <code>~/git</code> or 
<code>%HOME%\git</code>). Note that for Eclipse 4.4 (Luna) and later Git 
support is built in.</li></ul></li><li>Install <strong>Gradle</strong> 
1.0-milestone-3 or newer (or a Gradle plugin to your IDE),<ul><li>Command-line 
users: nothing to do (Tapestry's Gradle wrapper, gradlew, will download Gradle 
automatically on first use).</li><li>Eclipse users: Install Gradle IDE (aka 
Gradle Integration for Eclipse), from the Eclipse Marketplace. Note that for 
Eclipse 4.6 (Neon) and later, Gradle support is built 
in.</li></ul></li></ul><h2 
id="BuildingTapestryfromSource-GettingStarted">Getting Started</h2><p>Please 
read <a  class="external-link" 
href="https://git-wip-us.apache.org/";>https://git-wip-us.apache.org/</a> 
first.</p><p>Windows users (especialy EGit users) should probably set the 
core.autocrlf config setting to <code>false</code> so that local diffs won't 
highlight line ending differences.</p><h3 id="BuildingT
 apestryfromSource-ClonetheRepository">Clone the Repository</h3><p>Clone 
Tapestry from the Git repo:</p><ul><li><p>Command-line git users:</p><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Non Committers:</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>git clone</p><a  class="external-link" 
href="http://git-wip-us.apache.org/repos/asf/tapestry-5.git";>http://git-wip-us.apache.org/repos/asf/tapestry-5.git</a><p>&#160;</p></td></tr><tr><td
 colspan="1" rowspan="1" class="confluenceTd"><p>Committers:</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>git clone</p><a  
class="external-link" 
href="https://git-wip-us.apache.org/repos/asf/tapestry-5.git";>https://git-wip-us.apache.org/repos/asf/tapestry-5.git</a><p>&#160;</p></td></tr></tbody></table></div></li><li>Eclipse
 EGit users:<ul><li>Switch to Git perspective; then copy one of the URLs above 
into paste buffer</li><li>Right-click &gt; Paste reposi
 tory path or URI. This will bring up the Clone Git Repository 
dialog.</li><li>Committers: make sure Protocol is https, and enter your Apache 
commiter LDAP user name &amp; password</li><li>click Next.</li><li>Select the 
branches you're interested in (e.g 5.3 and master), click Next</li><li>Select 
Directory to where you want the project source code (e.g. 
<code>~/git/tapestry-5</code> or 
<code>%HOME%\git\tapestry-5</code>)</li><li>Select whichever "Initial Branch" 
you're interested in (e.g. master)</li><li>Set "Remote name" to "origin" (the 
default)</li><li><strong>VERY IMPORTANT</strong>: uncheck the "Import all 
existing projects" checkbox (we'll do this using Gradle, below)</li><li>Click 
Finish. (Be patient; the clone operation might take a few 
minutes.)</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-GradlePreparation">Gradle 
Preparation</h3><ul><li>Command-line gradle users only:<ul><li>If you're using 
Eclipse but <strong>not</strong> Gradle IDE do <code>./gradlew eclipse</co
 de></li><li>The command-line Gradle's eclipse plugin doesn't include the 
provided project dependencies; you need to add them manually (Java Build Path 
&gt; Projects &gt; Add tapestry-test). The plugin also generates a root eclipse 
project, so you'll need to delete the ".project" file in the root folder, and 
then you can import all Tapestry sub-projects at 
once.</li></ul></li><li>Eclipse Gradle IDE users:<ul><li>Switch to Java (or 
JEE) perspective and right-click &gt; Import... &gt; Gradle &gt; Gradle Project 
&gt; Next.</li><li>Set the "Root folder" to where you put your Tapestry source 
in the previous section (e.g. <code>~/git/tapestry-5</code> or 
<code>%Home%\git\tapestry-5</code>)</li><li>Click <code>Build Model. When it 
completes, s</code>elect the top-level (the top-level module and all 
sub-modules).</li><li>Be sure the "Enable dependency management" and "Create 
workingset 'tapestry-5' checkboxes are checked.</li><li>Click 
<code>Finish</code>. (Be patient; the import operation m
 ight take a few minutes.)</li></ul></li><li>Eclipse EGit users: Do a Git 
"Share" on the project:<ul><li>Still in the Java (or JEE) perspective, select 
all of the Tapestry projects (top-level and sub-modules) and right-click &gt; 
Team &gt; Share Project... &gt; Git &gt; Next &gt; Ensure all are selected, 
click <code>Finish</code>.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-Antlr">Antlr</h3><p>The 
<code>tapestry-core</code> project will initially have errors because of 
missing Java classes that are produced by ANTLR the first time the project is 
built. To fix this:</p><ul><li>Eclipse Gradle IDE users:<ul><li>Right click on 
the <code>build.gradle</code> file within tapestry-core and click Run As &gt; 
"Gradle build...", check <strong>only</strong> the generateGrammarSource task, 
and change the "Name" field to something like "tapestry-core antlr", then click 
Apply and Run.</li><li>When it's finished, the antlr-generated classes (e.g. 
PropertyExpressionLexer.java) will be in cr
 eated in $buildDir/generated-sources/antlr/, but Eclipse doesn't yet know 
about that path. To fix that, right click on the <code>tapestry-core</code> 
project &gt; Properties &gt; Java Build Path &gt; Source &gt; Add Folder &gt; 
find <code>tapestry-core/build/generated-sources/antlr</code> and check the 
checkbox next to it, then click <code>OK</code>.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-CoffeeScript">CoffeeScript</h3><p>If you want to 
run tests from within Eclipse, Tapestry will complain that it won't find 
certain JavaScript files that normally are generated during compile time from 
their Coffeescript sources. In order to generate the JavaScript files you need 
to have Coffeescript installed and in your path. Simply install <a  
class="external-link" href="http://nodejs.org/download/"; 
rel="nofollow">Node.js</a> and afterwards run <code>npm install -g 
coffee-script</code>. The installation should take care of 
everything.</p><ul><li>Eclipse Gradle IDE users:<ul><li>Righ
 t click on the <code>build.gradle</code> file within tapestry-core and click 
Run As &gt; "Gradle build...", check <strong>only</strong> the 
tapestry-core:compileCoffeeScript and tapestry-core:compileTestCoffeeScript 
tasks, and change the "Name" field to something like "tapestry-core 
coffeescript", then click Apply and Run.</li><li>When it's finished, the 
coffeescript-generated JavaScript files (e.g. t5-core-dom-jquery.js) will be in 
created in $buildDir/generated-sources/compiled-coffeescript/ and 
$buildDir/generated-sources/compiled-test-coffeescript/, but Eclipse doesn't 
yet know about that path. To fix that, right click on the 
<code>tapestry-core</code> project &gt; Properties &gt; Java Build Path &gt; 
Source &gt; Add Folder &gt; find 
<code>tapestry-core/build/generated-sources/compiled-coffeescript</code> and 
<code>tapestry-core/build/generated-sources/compiled-test-coffeescript</code> 
and check the checkbox next to it, then click 
<code>OK</code>.</li></ul></li></ul><h3 id="Buil
 
dingTapestryfromSource-GenerateCoffeeScriptandAntlrfilesautomaticallywhenchanged">Generate
 CoffeeScript and Antlr files automatically when changed</h3><p>If you want to 
have Eclipse compile the JavaScript files and lexer classes from their 
Coffeescript sources and Antlr files automatically when they change, you can do 
that by configuring an additional builder for the <code>tapestry-core</code> 
project:</p><ul><li>Eclipse Gradle IDE users:<ul><li>Right click on the 
<code>tapestry-core</code> project and select properties.</li><li>Select the 
"Builders" entry from the list on the left and click "New.." in the right 
panel.</li><li>Select "Program" and click "Ok".</li><li>Give the program a 
meaningful name, e.g. "compile coffeescript and antlr".</li><li>Switch to the 
"Main" tab.</li><li>For "Location:" click "Browse Workspace..." and select 
gradlew (for Mac/Linux) or <code>gradlew.bat (for Windows)</code> in the 
Tapestry root project. If the root project is called "tapestry-5" the entry 
 should look similar to "${workspace_loc:/tapestry-5/gradlew.bat}".</li><li>For 
"Working Directory:" click "Browse Workspace..." and select the Tapestry root 
project.</li><li>For "Arguments:" enter 
<code>tapestry-core:generateGrammarSource tapestry-core:compileCoffeeScript 
tapestry-core:compileTestCoffeeScript</code></li><li>Switch to the "Build 
Options" tab.</li><li>Make sure that only "Allocate Console", "After a 
"Clean"", "During manual builds", "During auto builds" and "Specify working set 
of relevant resources" are checked.</li><li>Click "Specify 
Resources...".</li><li>From the "tapestry-core" project select 
"src/main/antlr", "src/main/coffeescript", and 
"src/test/coffeescript".</li><li>Click "Finish".</li><li>Click 
"OK".</li><li>Click "OK".</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-Building">Building</h3><p>You can build 
individual modules, or (from the root folder) build 
everything.</p><ul><li>Command-line users:<br clear="none"> *( "gradlew" is the 
gradle wrapper 
 shell script (gradlew) or batch file (gradlew.bat) found in the root folder of 
the Tapestry source.<ul><li><code>./gradlew 
build</code></li></ul></li><li>Eclipse Gradle IDE users:<ul><li>Right click on 
the top-level project (or any sub-project) and select Run As &gt; Gradle 
Build..., which starts an External Tools Configuration dialog box. Enter a 
reasonable name, select the tasks you want to run (for example, 
tapestry-core/install), and click Run.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-SeleniumSetup">Selenium Setup</h3><p>It is 
necessary that you have a compatible version of Firefox installed. &#160;On a 
Mac, you should install it in ~/Applications (rather than 
/Applications).</p><p>You should modify your ~/.bash_profile (or equivalent), 
to add ~/Applications/Firefox.app/Contents/MacOS to the PATH variable.</p><h3 
id="BuildingTapestryfromSource-RunningIndividualTests">Running Individual 
Tests</h3><p>Eclipse users:</p><ul><li>Install the <a  class="external-link" 
href
 ="http://testng.org/doc/eclipse.html"; rel="nofollow">TestNG plugin</a> to 
allow running of individual TestNG unit tests from within in 
Eclipse.</li><li>Right-click on any test class and select Run As &gt;TestNG 
Test</li></ul><p>Command-line users:</p><ul><li>./gradlew 
-Dtest.single=myclassname</li><li>./gradlew 
-Dtest.single=myclassname.mymethod</li></ul><p>where myclassname is the test 
class, such as FormTest</p><p>The Tapestry integration tests will repeatedly 
start up a Firefox browser.</p><ul><li>Ensure that your environment will allow 
a connection to <a  class="external-link" href="https://localhost:9090"; 
rel="nofollow">https://localhost:9090</a></li></ul><h3 
id="BuildingTapestryfromSource-SkippingTests">Skipping Tests</h3><p>Running the 
Tapestry integration tests can take 10 minutes or more (mostly because of 
Selenium tests, which repeatedly start and stop the Firefox browser), so you 
won't want to run them every time you try a change.</p><ul><li>Command-line 
users:<ul><li><co
 de>To build while skipping all tests: ./gradlew build -x 
test</code></li><li>You can skip tests on a specific module by adding a colon 
and the module name. For example: <code>-x 
test:tapestry-ioc</code></li></ul></li><li>Eclipse Gradle IDE users:<ul><li>In 
your External Tools Configuration, add the same -x test option as above at 
Arguments &gt; Program Arguments.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-RunningtheIntegrationTestAppsManually">Running 
the Integration Test Apps Manually</h3><p>The Tapestry source includes several 
web apps that are used by the automated Selenium integration tests. You can 
also run these apps manually to try out nearly every browser-visible aspect of 
Tapestry.</p><ul><li>Command-line users:<ul><li>./gradlew 
runTestApp1</li></ul></li><li>Eclipse users:<ul><li>Use the run-jetty-run 
plugin in Eclipse, with the context directory selected from among the 
<code>test</code> context directories. For example, in the tapestry-core 
module, right click o
 n the /src/test/app1 (or app2, etc) folder, and select Run As &gt; Run Jetty, 
then open your browser to <a  class="external-link" 
href="http://localhost:8080/tapestry-core"; 
rel="nofollow">http://localhost:8080/tapestry-core</a></li></ul></li></ul><h3 
id="BuildingTapestryfromSource-MakingCodeChanges">Making Code 
Changes</h3><p>Once you have cloned or pulled the latest changes to your local 
Git repository, you can start working on it. Whenever you make some changes to 
the codebase, it's good to have a related issue filed in JIRA and to use a 
similarly named branch in your local Git repository. For example, to create a 
branch for an issue with the key TAP5-123:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">git branch TAP5-123 origin/master</pre>
+                <div id="ConfluenceContent"><p>This is a guide to building 
Tapestry itself from source code. This is primarily of interest to Tapestry 
<em>contributors</em>, rather than Tapestry <em>users</em>.</p><p>Although 
Tapestry <em>users</em> are free to use any build mechanism for their own 
projects (and first class Maven support is provided), to build Tapestry itself 
from source you will use Gradle.</p><p>Note: Both command line and Eclipse 
Gradle IDE/EGit instructions are given here. Generally you'll want to chose 
approach one or the other, rather than mixing them.</p><h2 
id="BuildingTapestryfromSource-Prerequisites">Prerequisites</h2><ul><li>Install 
a <strong>Java JDK</strong> (Sun/Oracle, not OpenJDK), version 1.7 (just to 
prevent VU#225657, see: <a  class="external-link" 
href="http://www.kb.cert.org/vuls/id/225657"; 
rel="nofollow">http://www.kb.cert.org/vuls/id/225657</a>), or version 1.8 for 
Tapestry 5.5 and later.</li><li>Install an <strong>IDE</strong> (IDEA IntelliJ 
 is recommended (and free to Tapestry committers), but Eclipse will also work. 
NetBeans is reported to work as well.</li><li><strong>Firefox</strong>: For 
Tapestry 5.4.x and earlier, install Firefox browser <a  class="external-link" 
href="https://ftp.mozilla.org/pub/firefox/releases/42.0/"; 
rel="nofollow">version 42</a> or earlier, needed for the integration tests 
(because newer versions require a newer version of Selenium than Tapestry's 
Java version requirements allow).</li><li><s>Set the Firefox browser's 
"preferred language" to English (en), because some tests will otherwise 
fail.</s> (Fixed; see <a  class="external-link" 
href="https://issues.apache.org/jira/browse/TAP5-2413";>TAP5-2413</a>)</li><li>Install
 a <strong>Git</strong> client<ul><li>Command-line users: <a  
class="external-link" href="http://git-scm.com/downloads"; 
rel="nofollow">http://git-scm.com/downloads</a></li><li>Eclipse users: install 
EGit from the Eclipse Marketplace, then in In Window &gt; Preferences &gt; Team 
&
 gt; Git, set your "Default repository folder" (e.g. <code>~/git</code> or 
<code>%HOME%\git</code>). Note that for Eclipse 4.4 (Luna) and later Git 
support is built in.</li></ul></li><li>Install <strong>Gradle</strong> 
1.0-milestone-3 or newer (or a Gradle plugin to your IDE),<ul><li>Command-line 
users: nothing to do (Tapestry's Gradle wrapper, gradlew, will download Gradle 
automatically on first use).</li><li>Eclipse users: Install Gradle IDE (aka 
Gradle Integration for Eclipse), from the Eclipse Marketplace. Note that for 
Eclipse 4.6 (Neon) and later, Gradle support is built 
in.</li></ul></li></ul><h2 
id="BuildingTapestryfromSource-GettingStarted">Getting Started</h2><p>Please 
read <a  class="external-link" 
href="https://git-wip-us.apache.org/";>https://git-wip-us.apache.org/</a> 
first.</p><p>Windows users (especialy EGit users) should probably set the 
core.autocrlf config setting to <code>false</code> so that local diffs won't 
highlight line ending differences.</p><h3 id="BuildingT
 apestryfromSource-ClonetheRepository">Clone the Repository</h3><p>Clone 
Tapestry from the Git repo:</p><ul><li><p>Command-line git users:</p><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Non Committers:</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>git clone</p><a  class="external-link" 
href="http://git-wip-us.apache.org/repos/asf/tapestry-5.git";>http://git-wip-us.apache.org/repos/asf/tapestry-5.git</a><p>&#160;</p></td></tr><tr><td
 colspan="1" rowspan="1" class="confluenceTd"><p>Committers:</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>git clone</p><a  
class="external-link" 
href="https://git-wip-us.apache.org/repos/asf/tapestry-5.git";>https://git-wip-us.apache.org/repos/asf/tapestry-5.git</a><p>&#160;</p></td></tr></tbody></table></div></li><li>Eclipse
 EGit users:<ul><li>Switch to Git perspective; then copy one of the URLs above 
into paste buffer</li><li>Right-click &gt; Paste reposi
 tory path or URI. This will bring up the Clone Git Repository 
dialog.</li><li>Committers: make sure Protocol is https, and enter your Apache 
commiter LDAP user name &amp; password</li><li>click Next.</li><li>Select the 
branches you're interested in (e.g 5.3 and master), click Next</li><li>Select 
Directory to where you want the project source code (e.g. 
<code>~/git/tapestry-5</code> or 
<code>%HOME%\git\tapestry-5</code>)</li><li>Select whichever "Initial Branch" 
you're interested in (e.g. master)</li><li>Set "Remote name" to "origin" (the 
default)</li><li><strong>VERY IMPORTANT</strong>: uncheck the "Import all 
existing projects" checkbox (we'll do this using Gradle, below)</li><li>Click 
Finish. (Be patient; the clone operation might take a few 
minutes.)</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-GradlePreparation">Gradle 
Preparation</h3><ul><li>Command-line gradle users only:<ul><li>If you're using 
Eclipse but <strong>not</strong> Gradle IDE do <code>./gradlew eclipse</co
 de></li><li>The command-line Gradle's eclipse plugin doesn't include the 
provided project dependencies; you need to add them manually (Java Build Path 
&gt; Projects &gt; Add tapestry-test). The plugin also generates a root eclipse 
project, so you'll need to delete the ".project" file in the root folder, and 
then you can import all Tapestry sub-projects at 
once.</li></ul></li><li>Eclipse Gradle IDE users:<ul><li>Switch to Java (or 
JEE) perspective and right-click &gt; Import... &gt; Gradle &gt; Gradle Project 
&gt; Next.</li><li>Set the "Root folder" to where you put your Tapestry source 
in the previous section (e.g. <code>~/git/tapestry-5</code> or 
<code>%Home%\git\tapestry-5</code>)</li><li>Click <code>Build Model. When it 
completes, s</code>elect the top-level (the top-level module and all 
sub-modules).</li><li>Be sure the "Enable dependency management" and "Create 
workingset 'tapestry-5' checkboxes are checked.</li><li>Click 
<code>Finish</code>. (Be patient; the import operation m
 ight take a few minutes.)</li></ul></li><li>Eclipse EGit users: Do a Git 
"Share" on the project:<ul><li>Still in the Java (or JEE) perspective, select 
all of the Tapestry projects (top-level and sub-modules) and right-click &gt; 
Team &gt; Share Project... &gt; Git &gt; Next &gt; Ensure all are selected, 
click <code>Finish</code>.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-Antlr">Antlr</h3><p>The 
<code>tapestry-core</code> project will initially have errors because of 
missing Java classes that are produced by ANTLR the first time the project is 
built. To fix this:</p><ul><li>Eclipse Gradle IDE users:<ul><li>Right click on 
the <code>build.gradle</code> file within tapestry-core and click Run As &gt; 
"Gradle build...", check <strong>only</strong> the generateGrammarSource task, 
and change the "Name" field to something like "tapestry-core antlr", then click 
Apply and Run.</li><li>When it's finished, the antlr-generated classes (e.g. 
PropertyExpressionLexer.java) will be in cr
 eated in $buildDir/generated-sources/antlr/, but Eclipse doesn't yet know 
about that path. To fix that, right click on the <code>tapestry-core</code> 
project &gt; Properties &gt; Java Build Path &gt; Source &gt; Add Folder &gt; 
find <code>tapestry-core/build/generated-sources/antlr</code> and check the 
checkbox next to it, then click <code>OK</code>.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-CoffeeScript">CoffeeScript</h3><p>If you want to 
run tests from within Eclipse, Tapestry will complain that it won't find 
certain JavaScript files that normally are generated during compile time from 
their Coffeescript sources. In order to generate the JavaScript files you need 
to have Coffeescript installed and in your path. Simply install <a  
class="external-link" href="http://nodejs.org/download/"; 
rel="nofollow">Node.js</a> and afterwards run <code>npm install -g 
coffee-script</code>. The installation should take care of 
everything.</p><ul><li>Eclipse Gradle IDE users:<ul><li>Righ
 t click on the <code>build.gradle</code> file within tapestry-core and click 
Run As &gt; "Gradle build...", check <strong>only</strong> the 
tapestry-core:compileCoffeeScript and tapestry-core:compileTestCoffeeScript 
tasks, and change the "Name" field to something like "tapestry-core 
coffeescript", then click Apply and Run.</li><li>When it's finished, the 
coffeescript-generated JavaScript files (e.g. t5-core-dom-jquery.js) will be in 
created in $buildDir/generated-sources/compiled-coffeescript/ and 
$buildDir/generated-sources/compiled-test-coffeescript/, but Eclipse doesn't 
yet know about that path. To fix that, right click on the 
<code>tapestry-core</code> project &gt; Properties &gt; Java Build Path &gt; 
Source &gt; Add Folder &gt; find 
<code>tapestry-core/build/generated-sources/compiled-coffeescript</code> and 
<code>tapestry-core/build/generated-sources/compiled-test-coffeescript</code> 
and check the checkbox next to it, then click 
<code>OK</code>.</li></ul></li></ul><h3 id="Buil
 
dingTapestryfromSource-GenerateCoffeeScriptandAntlrfilesautomaticallywhenchanged">Generate
 CoffeeScript and Antlr files automatically when changed</h3><p>If you want to 
have Eclipse compile the JavaScript files and lexer classes from their 
Coffeescript sources and Antlr files automatically when they change, you can do 
that by configuring an additional builder for the <code>tapestry-core</code> 
project:</p><ul><li>Eclipse Gradle IDE users:<ul><li>Right click on the 
<code>tapestry-core</code> project and select properties.</li><li>Select the 
"Builders" entry from the list on the left and click "New.." in the right 
panel.</li><li>Select "Program" and click "Ok".</li><li>Give the program a 
meaningful name, e.g. "compile coffeescript and antlr".</li><li>Switch to the 
"Main" tab.</li><li>For "Location:" click "Browse Workspace..." and select 
gradlew (for Mac/Linux) or <code>gradlew.bat (for Windows)</code> in the 
Tapestry root project. If the root project is called "tapestry-5" the entry 
 should look similar to "${workspace_loc:/tapestry-5/gradlew.bat}".</li><li>For 
"Working Directory:" click "Browse Workspace..." and select the Tapestry root 
project.</li><li>For "Arguments:" enter 
<code>tapestry-core:generateGrammarSource tapestry-core:compileCoffeeScript 
tapestry-core:compileTestCoffeeScript</code></li><li>Switch to the "Build 
Options" tab.</li><li>Make sure that only "Allocate Console", "After a 
"Clean"", "During manual builds", "During auto builds" and "Specify working set 
of relevant resources" are checked.</li><li>Click "Specify 
Resources...".</li><li>From the "tapestry-core" project select 
"src/main/antlr", "src/main/coffeescript", and 
"src/test/coffeescript".</li><li>Click "Finish".</li><li>Click 
"OK".</li><li>Click "OK".</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-Building">Building</h3><p>You can build 
individual modules, or (from the root folder) build 
everything.</p><ul><li>Command-line users:<br clear="none"> *( "gradlew" is the 
gradle wrapper 
 shell script (gradlew) or batch file (gradlew.bat) found in the root folder of 
the Tapestry source.<ul><li><code>./gradlew 
build</code></li></ul></li><li>Eclipse Gradle IDE users:<ul><li>Right click on 
the top-level project (or any sub-project) and select Run As &gt; Gradle 
Build..., which starts an External Tools Configuration dialog box. Enter a 
reasonable name, select the tasks you want to run (for example, 
tapestry-core/install), and click Run.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-SeleniumSetup">Selenium Setup</h3><p>It is 
necessary that you have a compatible version of Firefox installed. &#160;On a 
Mac, you should install it in ~/Applications (rather than 
/Applications).</p><p>You should modify your ~/.bash_profile (or equivalent), 
to add ~/Applications/Firefox.app/Contents/MacOS to the PATH variable.</p><h3 
id="BuildingTapestryfromSource-RunningIndividualTests">Running Individual 
Tests</h3><p>Eclipse users:</p><ul><li>Install the <a  class="external-link" 
href
 ="http://testng.org/doc/eclipse.html"; rel="nofollow">TestNG plugin</a> to 
allow running of individual TestNG unit tests from within in 
Eclipse.</li><li>Right-click on any test class and select Run As &gt;TestNG 
Test</li></ul><p>Command-line users:</p><ul><li>./gradlew 
-Dtest.single=myclassname</li><li>./gradlew 
-Dtest.single=myclassname.mymethod</li></ul><p>where myclassname is the test 
class, such as FormTest</p><p>The Tapestry integration tests will repeatedly 
start up a Firefox browser.</p><ul><li>Ensure that your environment will allow 
a connection to <a  class="external-link" href="https://localhost:9090"; 
rel="nofollow">https://localhost:9090</a></li></ul><h3 
id="BuildingTapestryfromSource-SkippingTests">Skipping Tests</h3><p>Running the 
Tapestry integration tests can take 10 minutes or more (mostly because of 
Selenium tests, which repeatedly start and stop the Firefox browser), so you 
won't want to run them every time you try a change.</p><ul><li>Command-line 
users:<ul><li><co
 de>To build while skipping all tests: ./gradlew build -x 
test</code></li><li>You can skip tests on a specific module by adding a colon 
and the module name. For example: <code>-x 
test:tapestry-ioc</code></li></ul></li><li>Eclipse Gradle IDE users:<ul><li>In 
your External Tools Configuration, add the same -x test option as above at 
Arguments &gt; Program Arguments.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-RunningtheIntegrationTestAppsManually">Running 
the Integration Test Apps Manually</h3><p>The Tapestry source includes several 
small web apps that are used by the automated Selenium integration tests. You 
can also run these apps manually to try out nearly every browser-visible aspect 
of Tapestry. Just invoke the corresponding Gradle tasks. This is mainly useful 
when debugging failing selenium tests.</p><ul><li>Command-line 
users:<ul><li>./gradlew runTestApp1</li></ul></li><li>Eclipse users:<ul><li>Use 
the run-jetty-run plugin in Eclipse, with the context directory selecte
 d from among the <code>test</code> context directories. For example, in the 
tapestry-core module, right click on the /src/test/app1 (or app2, etc) folder, 
and select Run As &gt; Run Jetty, then open your browser to <a  
class="external-link" href="http://localhost:8080/tapestry-core"; 
rel="nofollow">http://localhost:8080/tapestry-core</a></li></ul></li></ul><p>The
 "app1" app (the runTestApp1 tasks, above) is the one used by most of the 
integration tests. There are also <em>app0</em>, <em>app2</em>, <em>app3</em>, 
<em>app4</em> and <em>appfolder</em> apps that can be run the same way.</p><h3 
id="BuildingTapestryfromSource-MakingCodeChanges">Making Code 
Changes</h3><p>Once you have cloned or pulled the latest changes to your local 
Git repository, you can start working on it. Whenever you make some changes to 
the codebase, it's good to have a related issue filed in JIRA and to use a 
similarly named branch in your local Git repository. For example, to create a 
branch for an issue with the
  key TAP5-123:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">git branch TAP5-123 
origin/master</pre>
 </div></div><p>With per-issue branches you can easily switch back and forth 
between different issues without worrying about unwanted side-effects from 
unfinished changes to other issues. Whenever you want to work on the TAP5-123 
example issue, simply checkout that branch and start making your 
changes:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">git checkout TAP5-123</pre>
+<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">git checkout TAP5-123</pre>
 </div></div><p>It's a good idea to commit your changes to your local Git repo 
whenever you have finished one logical part of the issue. For example when 
refactoring, make a new commit for each refactoring step you take.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">git commit</pre>
+<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">git commit</pre>
 </div></div><h3 
id="BuildingTapestryfromSource-Pushingyourcommitsupstream">Pushing your commits 
upstream</h3><p>First:</p><ul><li>Run the full suite of tests before pushing 
your commits to the upstream (remote) repository.</li><li>Ensure your changes 
have full test coverage</li><li>Ensure you have set your local repo to track 
the official Tapestry repo as its upstream 
repository.</li></ul><p>Then:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">git push</pre>
+<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">git push</pre>
 </div></div><h3 id="BuildingTapestryfromSource-ProducingPatches">Producing 
Patches</h3><p>If you aren't an official committer (with write access to the 
Apache Tapestry Git repo), you'll need to submit changes via a patch.<br 
clear="none"> See the recommendations at <a  class="external-link" 
href="http://commons.apache.org/patches.html";>http://commons.apache.org/patches.html</a>.
 (Obviously that isn't specifically for the Tapestry project, but most of the 
same principles apply.)</p><p>You can use the git format-patch command to 
produce a nice set of patches to attach to the relevant issue in JIRA:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">git format-patch origin/master
+<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">git format-patch 
origin/master
 </pre>
 </div></div><p>The sooner you share your work the better. You can repeat the 
steps of this workflow as often as you like, producing more patches to be 
attached to the issue tracker. Once some of your patches are accepted and 
applied by a committer, you can rebase your work against the latest trunk. 
Alternatively, if you're asked to make some changes, you can go back to the 
original Git commit and modify it until the project team accepts your 
changes.</p><h3 
id="BuildingTapestryfromSource-TroubleshootingHints">Troubleshooting 
Hints</h3><p><strong>Problem 1:</strong> I can't run the build. it gives me an 
error in line 91:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">20:22:11.438 [ERROR] 
[org.gradle.BuildExceptionReporter] * What went wrong:
+<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">20:22:11.438 [ERROR] 
[org.gradle.BuildExceptionReporter] * What went wrong:
 20:22:11.439 [ERROR] [org.gradle.BuildExceptionReporter] A problem occurred 
evaluating root project 'tapestry-project-trunk'.
 20:22:11.440 [ERROR] [org.gradle.BuildExceptionReporter] Cause: Cannot get 
property 'plus' on null object
 </pre>
 </div></div><p><strong>Solution:</strong> Use the gradle wrapper (./gradlew 
build), not plain "gradle".</p><hr><p>&#160;</p><p><strong>Problem 2</strong>: 
Under Linux I get <a  class="external-link" href="http://java.io"; 
rel="nofollow">java.io</a>.FileNotFoundException saying "Too many open 
files"</p><p><strong>Solution</strong>: You may have to increase the number of 
files your operating system allows you to have open at once. Try <code>ulimit 
-n</code> to see what the current value is, and if it is less than 2048, 
increase it to 2048 by editing your <code>/etc/security/limits.conf</code> 
file. See your operating system's documentation for 
details.</p><hr><p><strong><br clear="none"></strong></p><p><strong>Problem 
3:</strong> The gradle build opens a Firefox browser with a File Not Found 
error:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">Firefox can't find the file at 
chrome://src/content/RemoteRunner.html
+<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">Firefox can't find the file 
at chrome://src/content/RemoteRunner.html
 ?sessionId=74c5c263747249739d82e4bee33fb4b6&amp;multiWindow=true&amp;baseUrl=
 
http://localhost:9090/&amp;debugMode=false&amp;driverUrl=http://localhost:4444/selenium-server/driver/.</pre>
 </div></div><p>You probably have a newer version of Firefox than is supported 
by the Selenium tests.<strong> </strong></p><p><strong>Solution:</strong> You 
must use Firefox version 42 or earlier. Be sure to configure it <em>not</em> to 
upgrade itself. <em>This problem will go away when Tapestry discontinues 
support for Java 6, currently planned for Tapestry v5.5.</em></p></div>

Modified: websites/production/tapestry/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.


Reply via email to