tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Tapestry > Building Tapestry from Source
Date Sat, 12 Jan 2013 15:38:00 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/2042/9/12/_/styles/combined.css?spaceKey=TAPESTRY&amp;forWysiwyg=true"
type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://cwiki.apache.org/confluence/display/TAPESTRY/Building+Tapestry+from+Source">Building
Tapestry from Source</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://cwiki.apache.org/confluence/display/~bobharner">Bob
Harner</a>
    </h4>
        <div id="versionComment">
        <b>Comment:</b>
        Added alternate instructions for Eclipse using EGit and Gradle IDE<br />
    </div>
        <br/>
                         <h4>Changes (30)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-unchanged" >This is a brief guide to building
Tapestry itself from source code. <br> <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">h3.
Prerequisites <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">Although
Tapestry _users_ are free to use any build mechanism (and first class Maven support is provided),
to build Tapestry from source.you will use Gradle. <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">Note:
Both command line and Eclipse Gradle IDE/EGit instructions are given here. Generally you&#39;ll
want to chose approach one or the other, rather than mixing them. <br> <br>h2.
Prerequisites <br> <br></td></tr>
            <tr><td class="diff-changed-lines" >* Install a Java JDK (Sun/Oracle,
not OpenJDK), version <span class="diff-changed-words">1.6<span class="diff-added-chars"style="background-color:
#dfd;"> (1</span>.<span class="diff-added-chars"style="background-color: #dfd;">5
should also work).</span></span> <br></td></tr>
            <tr><td class="diff-unchanged" >* Install an IDE (IDEA IntelliJ is
recommended (and free to Tapestry committers), but Eclipse will also work. NetBeans is reported
to work as well. <br>* Install Firefox browser version 3.6, needed for the integration
tests. <br>* Install a Git client <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">**
Command-line users: http://git-scm.com/downloads <br>** Eclipse users: Install EGit
from the Eclipse Marketplace, then in In Window &gt; Preferences &gt; Team &gt;
Git, set your &quot;Default repository folder&quot; (e.g. {{~/git}} or {{%HOME%\git}})
<br></td></tr>
            <tr><td class="diff-unchanged" >* Install Gradle 1.0-milestone-3 or
newer (or a Gradle plugin to your IDE), <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">*
Clone Tapestry from the Git repo: <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">**
Command-line users: http://www.gradle.org/downloads <br>** Eclipse users: Install Gradle
IDE from the Eclipse Marketplace <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-changed-lines" ><span class="diff-changed-words">h<span
class="diff-deleted-chars"style="color:#999;background-color:#fdd;text-decoration:line-through;">3</span><span
class="diff-added-chars"style="background-color: #dfd;">2</span>.</span> Getting
Started <br></td></tr>
            <tr><td class="diff-unchanged" > <br>Please read https://git-wip-us.apache.org/
first. <br> <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">{code}
<br>git clone https://git-wip-us.apache.org/repos/asf/tapestry-5.git <br>{code}
<br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">h3.
Clone the Repository <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">h3.
IDE Preparation <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">Clone
Tapestry from the Git repo: <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">*
If using Eclipse: <br>** do {{./gradlew eclipse}} <br>** Gradle&#39;s eclipse
plugin doesn&#39;t include the provided project dependencies; you need to add them manually
(Java Build Path - Projects - Add tapestry-test). The plugin also generates a root eclipse
project, so you&#39;ll need to delete the &quot;.project&quot; file in the root
folder, and then you can import all Tapestry sub-projects at once.  <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">*
Command-line git users: <br>| Non Committers: | git clone http://git-wip-us.apache.org/repos/asf/reponame.git
| <br>| Committers: | git clone http://git-wip-us.apache.org/repos/asf/reponame.git
| <br>* Eclipse EGit users: <br>** Switch to Git perspective; then copy one of
the URLs above into paste buffer <br>** Right-click &gt; Paste repository path or
URI. This will bring up the Clone Git Repository dialog. <br>** Committers: make sure
Protocol is https, and enter your Apache commiter LDAP user name &amp; password <br>**
click Next. <br>** Select the branches you&#39;re interested in (e.g 5.3 and master),
click Next <br>** Select Directory to where you want the project source code (e.g. {{~/git/tapestry-5}}
or {{%HOME%\git\tapestry-5}}) <br>** Select whichever &quot;Initial Branch&quot;
you&#39;re interested in (e.g. master) <br>** Set &quot;Remote name&quot;
to &quot;origin&quot; (the default) <br>** *VERY IMPORTANT*: uncheck the &quot;Import
all existing projects&quot; checkbox (we&#39;ll go this via Gradle, below) <br>**
Click Finish. (Be patient; the clone operation might take a few minutes.) <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">h3.
Building <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">h3.
Gradle Preparation <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">You
can build individual modules, or (from the root folder) build everything. <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">*
Command-line gradle users only: <br>** If you&#39;re using Eclipse but *not* Gradle
IDE do {{./gradlew eclipse}} <br>** The command-line Gradle&#39;s eclipse plugin
doesn&#39;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&#39;ll need to delete the &quot;.project&quot; file in
the root folder, and then you can import all Tapestry sub-projects at once. <br>* Eclipse
Gradle IDE users: <br>** Switch to Java (or JEE) perspective and right-click &gt;
Import... &gt; Gradle &gt; Gradle Project &gt; Next. <br>** Set the &quot;Root
folder&quot; to where you put your Tapestry source in the previous section (e.g. {{~/git/tapestry-5}}
or {{%Home%\git\tapestry-5}}) <br>** Click {{Build Model}}. Select the top-level (the
top-level module and all sub-modules) then click {{Finish}}. <br>** Be sure the &quot;Enable
dependency management&quot; and &quot;&quot;Add to workingset &#39;tapestry-5&#39;&quot;
checkboxes are checked. <br>** Click {{Finish}}. (Be patient; the import operation might
take a few minutes.) <br>* Eclipse EGit users: Do a Git &quot;Share&quot; on
the project: <br>** 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 {{Finish}}. <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">Tapestry
5 is built using Gradle. The following examples assume you are using Gradle from the command
line. &quot;gradlew&quot; is the gradle wrapper shell script (gradlew) or batch file
(gradlew.bat) found in the root folder of the Tapestry source. <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">h3.
Antlr <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">{code}
<br>./gradlew build <br>{code} <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">The
{{tapestry-core}} 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: <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">Alternatively,
with a Gradle plugin you can do the builds from within your IDE. <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">*
Eclipse Gradle IDE users: <br>** Right click on the {{build.gradle}} file within tapestry-core
and click Run As &gt; &quot;Gradle build...&quot;, check *only* the generateGrammarSource
task, and change the &quot;Name&quot; field to something like &quot;tapestry-core
antlr&quot;, then click Apply and Run. <br>** When it&#39;s finished, the antlr-generated
classes (e.g. PropertyExpressionLexer.java) will be in created in $buildDir/generated-sources/antlr/,
but Eclipse doesn&#39;t yet know about that path. To fix that, right click on the {{tapestry-core}}
project &gt; Properties &gt; Java Build Path &gt; Source &gt; Add Folder &gt;
find {{tapestry-core/build/generated-sources/antlr}}and check the checkbox next to it, then
click {{OK}}. <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">h3.
Building <br> <br>You can build individual modules, or (from the root folder)
build everything. <br> <br>* Command-line users: <br>*( &quot;gradlew&quot;
is the gradle wrapper shell script (gradlew) or batch file (gradlew.bat) found in the root
folder of the Tapestry source. <br>** {{./gradlew build}} <br>* Eclipse Gradle
IDE users: <br>** Right click on the top-level project (or any sub-project) and select
Run As &gt; Gradle Build... <br> <br></td></tr>
            <tr><td class="diff-unchanged" >h3. Running Tests <br> <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >h3. Skipping Tests <br> <br></td></tr>
            <tr><td class="diff-changed-lines" >Running the Tapestry integration
tests can take 10 minutes or <span class="diff-changed-words">more<span class="diff-added-chars"style="background-color:
#dfd;"> (mostly because of Selenium tests</span>,<span class="diff-added-chars"style="background-color:
#dfd;"> which repeatedly start and stop the Firefox browser),</span></span>
so you won&#39;t want to run them every time you try a change. <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">*
Command-line users: <br>** {{./gradlew build -x test}} <br>** You can skip tests
on a specific module by adding a colon and the module name. For example: {{-x test:tapestry-ioc}}
<br>* Eclipse Gradle IDE users: <br></td></tr>
            <tr><td class="diff-changed-lines" ><span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">{code}</span>
<span class="diff-added-words"style="background-color: #dfd;">**</span> <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">./gradlew
build -x test <br>{code} <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">You
can skip tests on a specific module by adding a colon and the module name. For example: {{-x
test:tapestry-ioc}} <br> <br></td></tr>
            <tr><td class="diff-unchanged" >h3. Running the Integration Test Apps
Manually <br> <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <p>This is a brief guide to building Tapestry itself from source code.</p>

<p>Although Tapestry <em>users</em> are free to use any build mechanism
(and first class Maven support is provided), to build Tapestry 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><a name="BuildingTapestryfromSource-Prerequisites"></a>Prerequisites</h2>

<ul>
	<li>Install a Java JDK (Sun/Oracle, not OpenJDK), version 1.6 (1.5 should also work).</li>
	<li>Install an IDE (IDEA IntelliJ is recommended (and free to Tapestry committers),
but Eclipse will also work. NetBeans is reported to work as well.</li>
	<li>Install Firefox browser version 3.6, needed for the integration tests.</li>
	<li>Install a Git client
	<ul>
		<li>Command-line users: <a href="http://git-scm.com/downloads" class="external-link"
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. <tt>~/git</tt>
or <tt>%HOME%\git</tt>)</li>
	</ul>
	</li>
	<li>Install Gradle 1.0-milestone-3 or newer (or a Gradle plugin to your IDE),
	<ul>
		<li>Command-line users: <a href="http://www.gradle.org/downloads" class="external-link"
rel="nofollow">http://www.gradle.org/downloads</a></li>
		<li>Eclipse users: Install Gradle IDE from the Eclipse Marketplace</li>
	</ul>
	</li>
</ul>


<h2><a name="BuildingTapestryfromSource-GettingStarted"></a>Getting Started</h2>

<p>Please read <a href="https://git-wip-us.apache.org/" class="external-link" rel="nofollow">https://git-wip-us.apache.org/</a>
first.</p>

<h3><a name="BuildingTapestryfromSource-ClonetheRepository"></a>Clone the
Repository</h3>

<p>Clone Tapestry from the Git repo:</p>

<ul>
	<li>Command-line git users:
<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<td class='confluenceTd'> Non Committers: </td>
<td class='confluenceTd'> git clone 
<a href="http://git-wip-us.apache.org/repos/asf/reponame.git" class="external-link" rel="nofollow">http://git-wip-us.apache.org/repos/asf/reponame.git</a>
<p> </p></td>
</tr>
<tr>
<td class='confluenceTd'> Committers: </td>
<td class='confluenceTd'> git clone 
<a href="http://git-wip-us.apache.org/repos/asf/reponame.git" class="external-link" rel="nofollow">http://git-wip-us.apache.org/repos/asf/reponame.git</a>
<p> </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 repository 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. <tt>~/git/tapestry-5</tt>
or <tt>%HOME%\git\tapestry-5</tt>)</li>
		<li>Select whichever "Initial Branch" you're interested in (e.g. master)</li>
		<li>Set "Remote name" to "origin" (the default)</li>
		<li><b>VERY IMPORTANT</b>: uncheck the "Import all existing projects"
checkbox (we'll go this via Gradle, below)</li>
		<li>Click Finish. (Be patient; the clone operation might take a few minutes.)</li>
	</ul>
	</li>
</ul>


<h3><a name="BuildingTapestryfromSource-GradlePreparation"></a>Gradle Preparation</h3>

<ul>
	<li>Command-line gradle users only:
	<ul>
		<li>If you're using Eclipse but <b>not</b> Gradle IDE do <tt>./gradlew
eclipse</tt></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. <tt>~/git/tapestry-5</tt> or <tt>%Home%\git\tapestry-5</tt>)</li>
		<li>Click <tt>Build Model</tt>. Select the top-level (the top-level module
and all sub-modules) then click <tt>Finish</tt>.</li>
		<li>Be sure the "Enable dependency management" and ""Add to workingset 'tapestry-5'"
checkboxes are checked.</li>
		<li>Click <tt>Finish</tt>. (Be patient; the import operation might 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 <tt>Finish</tt>.</li>
	</ul>
	</li>
</ul>


<h3><a name="BuildingTapestryfromSource-Antlr"></a>Antlr</h3>

<p>The <tt>tapestry-core</tt> 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 <tt>build.gradle</tt> file within tapestry-core
and click Run As &gt; "Gradle build...", check <b>only</b> 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 created in $buildDir/generated-sources/antlr/, but Eclipse doesn't yet know about
that path. To fix that, right click on the <tt>tapestry-core</tt> project &gt;
Properties &gt; Java Build Path &gt; Source &gt; Add Folder &gt; find <tt>tapestry-core/build/generated-sources/antlr}}and
check the checkbox next to it, then click {{OK</tt>.</li>
	</ul>
	</li>
</ul>


<h3><a name="BuildingTapestryfromSource-Building"></a>Building</h3>

<p>You can build individual modules, or (from the root folder) build everything.</p>

<ul>
	<li>Command-line users:<br/>
*( "gradlew" is the gradle wrapper shell script (gradlew) or batch file (gradlew.bat) found
in the root folder of the Tapestry source.
	<ul>
		<li><tt>./gradlew build</tt></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...</li>
	</ul>
	</li>
</ul>


<h3><a name="BuildingTapestryfromSource-RunningTests"></a>Running Tests</h3>

<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 href="https://localhost:443"
class="external-link" rel="nofollow">https://localhost:443</a></li>
</ul>


<h3><a name="BuildingTapestryfromSource-SkippingTests"></a>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><tt>./gradlew build -x test</tt></li>
		<li>You can skip tests on a specific module by adding a colon and the module name.
For example: <tt>-x test:tapestry-ioc</tt></li>
	</ul>
	</li>
	<li>Eclipse Gradle IDE users:
	<ul>
		<li></li>
	</ul>
	</li>
</ul>


<h3><a name="BuildingTapestryfromSource-RunningtheIntegrationTestAppsManually"></a>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. (See <a href="http://tapestry-test.appspot.com/" class="external-link"
rel="nofollow">a live example</a> running on Google App Engine.)</p>

<ul>
	<li>If using Eclipse:
	<ul>
		<li>Use the run-jetty-run plugin in Eclipse, with the context directory selected from
among the <tt>test</tt> context directories. For example, in the tapestry-core
module use /src/test/app1 (or app2, etc).</li>
	</ul>
	</li>
</ul>


<h3><a name="BuildingTapestryfromSource-MakingCodeChanges"></a>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" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">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" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">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" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">git commit</pre>
</div></div>

<h3><a name="BuildingTapestryfromSource-Pushingyourcommitsupstream"></a>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" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">git push</pre>
</div></div>

<h3><a name="BuildingTapestryfromSource-ProducingPatches"></a>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/>
See the recommendations at <a href="http://commons.apache.org/patches.html" class="external-link"
rel="nofollow">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" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">
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><a name="BuildingTapestryfromSource-TroubleshootingHints"></a>Troubleshooting
Hints</h3>

<p><b>Problem:</b>  I can't run the build. it gives me an error in line
91:</p>
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">
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 <span class="code-keyword">null</span> object
</pre>
</div></div>
<p><b>Solution:</b> Use the gradle wrapper (./gradlew build), not plain
"gradle".</p>
    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;">
            <a href="https://cwiki.apache.org/confluence/users/viewnotifications.action"
class="grey">Change Notification Preferences</a>
        </div>
        <a href="https://cwiki.apache.org/confluence/display/TAPESTRY/Building+Tapestry+from+Source">View
Online</a>
        |
        <a href="https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=30737588&revisedVersion=6&originalVersion=5">View
Changes</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>

Mime
View raw message