source: nutchez-0.1/tomcat/webapps/docs/appdev/printer/processes.html @ 245

Last change on this file since 245 was 66, checked in by waue, 16 years ago

NutchEz - an easy way to nutch

File size: 24.7 KB
RevLine 
[66]1<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide - Development Processes</title><meta value="Craig R. McClanahan" name="author"><meta value="craigmcc@apache.org" name="email"></head><body vlink="#525D76" alink="#525D76" link="#525D76" text="#000000" bgcolor="#ffffff"><table cellspacing="0" width="100%" border="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img border="0" alt="
2      The Apache Tomcat Servlet/JSP Container
3    " align="right" src="../../images/tomcat.gif"></a></td><td><font face="arial,helvetica,sanserif"><h1>Apache Tomcat 6.0</h1></font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img border="0" alt="Apache Logo" align="right" src="../../images/asf-logo.gif"></a></td></tr></table><table cellspacing="4" width="100%" border="0"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr size="1" noshade></td></tr><tr><!--RIGHT SIDE MAIN BODY--><td align="left" valign="top" width="80%"><table cellspacing="4" width="100%" border="0"><tr><td valign="top" align="left"><h1>Application Developer's Guide</h1><h2>Development Processes</h2></td><td nowrap="true" valign="top" align="right"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr></table><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Development Processes"><strong>Development Processes</strong></a></font></td></tr><tr><td><blockquote>
4
5<p>Although application development can take many forms, this manual proposes
6a fairly generic process for creating web applications using Tomcat.  The
7following sections highlight the commands and tasks that you, as the developer
8of the code, will perform.  The same basic approach works when you have
9multiple programmers involved, as long as you have an appropriate source code
10control system and internal team rules about who is working on what parts
11of the application at any given time.</p>
12
13<p>The task descriptions below assume that you will be using CVS for source
14code control, and that you have already configured access to the appropriate
15CVS repository.  Instructions for doing this are beyond the scope of this
16manual.  If you are using a different source code control environment, you
17will need to figure out the corresponding commands for your system.</p>
18
19
20<table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="One-Time Setup of Ant and Tomcat for Development"><strong>One-Time Setup of Ant and Tomcat for Development</strong></a></font></td></tr><tr><td><blockquote>
21
22<p>In order to take advantage of the special Ant tasks that interact with the
23<em>Manager</em> web application, you need to perform the following tasks
24once (no matter how many web applications you plan to develop).</p>
25<ul>
26<li><em>Configure the Ant custom tasks</em>.  The implementation code for the
27    Ant custom tasks is in a JAR file named
28    <code>$CATALINA_HOME/lib/catalina-ant.jar</code>, which must be
29    copied in to the <code>lib</code> directory of your Ant installation.
30    <br><br></li>
31<li><em>Define one or more Tomcat users</em>.  The <em>Manager</em> web
32    application runs under a security constraint that requires a user to be
33    logged in, and have the security role <code>manager</code> assigned to
34    him or her.  How such users are defined depends on which Realm you have
35    configured in Tomcat's <code>conf/server.xml</code> file -- see the
36    <a href="../../realm-howto.html">Realm Configuration HOW-TO</a> for more
37    information.  You may define any number of users (with any username
38    and password that you like) with the <code>manager</code> role.
39    <br><br></li>
40</ul>
41
42</blockquote></td></tr></table>
43
44
45<table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Create Project Source Code Directory"><strong>Create Project Source Code Directory</strong></a></font></td></tr><tr><td><blockquote>
46
47<p>The first step is to create a new project source directory, and customize
48the <code>build.xml</code> and <code>build.properties</code> files you will
49be using.  The directory structure is described in <a href="source.html">the
50previous section</a>, or you can use the
51<a href="../sample/">sample application</a> as a starting point.</p>
52
53<p>Create your project source directory, and define it within your CVS
54repository.  This might be done by a series of commands like this, where
55<code>{project}</code> is the name under which your project should be
56stored in the CVS repository, and {username} is your login username:</p>
57<div align="left"><table border="0" cellpadding="0" cellspacing="4"><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#ffffff"><pre>
58cd {my home directory}
59mkdir myapp &lt;-- Assumed "project source directory"
60cd myapp
61mkdir docs
62mkdir src
63mkdir web
64mkdir web/WEB-INF
65cvs import -m "Initial Project Creation" {project} \
66  {username} start
67</pre></td><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr></table></div>
68
69<p>Now, to verify that it was created correctly in CVS, we will perform a
70checkout of the new project:</p>
71<div align="left"><table border="0" cellpadding="0" cellspacing="4"><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#ffffff"><pre>
72cd ..
73mv myapp myapp.bu
74cvs checkout {project}
75</pre></td><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr></table></div>
76
77<p>Next, you will need to create and check in an initial version of the
78<code>build.xml</code> script to be used for development.  For getting
79started quickly and easily, base your <code>build.xml</code> on the
80<a href="build.xml.txt">basic build.xml file</a>, included with this manual,
81or code it from scratch.</p>
82<div align="left"><table border="0" cellpadding="0" cellspacing="4"><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#ffffff"><pre>
83cd {my home directory}
84cd myapp
85emacs build.xml   &lt;-- if you want a real editor :-)
86cvs add build.xml
87cvs commit
88</pre></td><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr></table></div>
89
90<p>Until you perform the CVS commit, your changes are local to your own
91development directory.  Committing makes those changes visible to other
92developers on your team that are sharing the same CVS repository.</p>
93
94<p>The next step is to customize the Ant <em>properties</em> that are
95named in the <code>build.xml</code> script.  This is done by creating a
96file named <code>build.properties</code> in your project's top-level
97directory.  The supported properties are listed in the comments inside
98the sample <code>build.xml</code> script.  At a minimum, you will generally
99need to define the <code>catalina.home</code> property defining where
100Tomcat 6 is installed, and the manager application username and password.
101You might end up with something like this:</p>
102<div align="left"><table border="0" cellpadding="0" cellspacing="4"><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#ffffff"><pre>
103# Context path to install this application on
104app.path=/hello
105
106# Tomcat 6 installation directory
107catalina.home=/usr/local/apache-tomcat-6.0
108
109# Manager webapp username and password
110manager.username=myusername
111manager.password=mypassword
112</pre></td><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr></table></div>
113
114<p>In general, you will <strong>not</strong> want to check the
115<code>build.properties</code> file in to the CVS repository, because it
116is unique to each developer's environment.</p>
117
118<p>Now, create the initial version of the web application deployment
119descriptor.  You can base <code>web.xml</code> on the
120<a href="web.xml.txt">basic web.xml file</a>, or code it from scratch.</p>
121<div align="left"><table border="0" cellpadding="0" cellspacing="4"><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#ffffff"><pre>
122cd {my home directory}
123cd myapp/web/WEB-INF
124emacs web.xml
125cvs add web.xml
126cvs commit
127</pre></td><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr></table></div>
128
129Note that this is only an example web.xml file.  The full definition
130of the deployment descriptor file is in the
131<a href="http://java.sun.com/products/servlet">Servlet Specification.</a>
132
133</blockquote></td></tr></table>
134
135
136<table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Edit Source Code and Pages"><strong>Edit Source Code and Pages</strong></a></font></td></tr><tr><td><blockquote>
137
138<p>The edit/build/test tasks will generally be your most common activities
139during development and maintenance.  The following general principles apply.
140As described in <a href="source.html">Source Organization</a>, newly created
141source files should be located in the appropriate subdirectory, under your
142project source directory.</p>
143
144<p>Whenever you wish to refresh your development directory to reflect the
145work performed by other developers, you will ask CVS to do it for you:</p>
146<div align="left"><table border="0" cellpadding="0" cellspacing="4"><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#ffffff"><pre>
147cd {my home directory}
148cd myapp
149cvs update -dP
150</pre></td><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr></table></div>
151
152<p>To create a new file, go to the appropriate directory, create the file,
153and register it with CVS.  When you are satisfied with it's contents (after
154building and testing is successful), commit the new file to the repository.
155For example, to create a new JSP page:</p>
156<div align="left"><table border="0" cellpadding="0" cellspacing="4"><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#ffffff"><pre>
157cd {my home directory}
158cd myapp/web    &lt;-- Ultimate destination is document root
159emacs mypage.jsp
160cvs add mypage.jsp
161... build and test the application ...
162cvs commit
163</pre></td><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr></table></div>
164
165<p>Java source code that is defined in packages must be organized in a
166directory hierarchy (under the <strong>src/</strong> subdirectory) that
167matches the package names.  For example, a Java class named
168<code>com.mycompany.mypackage.MyClass.java</code> should be stored in file
169<code>src/com/mycompany/mypackage/MyClass.java</code>.
170Whenever you create a new subdirectory, don't forget to
171register it with CVS.</p>
172
173<p>To edit an existing source file, you will generally just start editing
174and testing, then commit the changed file when everything works.  Although
175CVS can be configured to required you to "check out" or "lock" a file you
176are going to be modifying, this is generally not used.</p>
177
178</blockquote></td></tr></table>
179
180
181<table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Build the Web Application"><strong>Build the Web Application</strong></a></font></td></tr><tr><td><blockquote>
182
183<p>When you are ready to compile the application, issue the following
184commands (generally, you will want a shell window open that is set to
185the project source directory, so that only the last command is needed):</p>
186<div align="left"><table border="0" cellpadding="0" cellspacing="4"><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#ffffff"><pre>
187cd {my home directory}
188cd myapp    &lt;-- Normally leave a window open here
189ant
190</pre></td><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr></table></div>
191
192<p>The Ant tool will be execute the default "compile" target in your
193<code>build.xml</code> file, which will compile any new or updated Java
194code.  If this is the first time you compile after a "build clean",
195it will cause everything to be recompiled.</p>
196
197<p>To force the recompilation of your entire application, do this instead:</p>
198<div align="left"><table border="0" cellpadding="0" cellspacing="4"><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#ffffff"><pre>
199cd {my home directory}
200cd myapp
201ant all
202</pre></td><td width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr><tr><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td><td height="1" width="1" bgcolor="#023264"><img border="0" hspace="0" vspace="0" height="1" width="1" src="../../images/void.gif"></td></tr></table></div>
203
204<p>This is a very good habit immediately before checking in changes, to
205make sure that you have not introduced any subtle problems that Javac's
206conditional checking did not catch.</p>
207
208</blockquote></td></tr></table>
209
210
211<table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Test Your Web Application"><strong>Test Your Web Application</strong></a></font></td></tr><tr><td><blockquote>
212
213<p>To test your application, you will want to install it under Tomcat.  The
214quickest way to do that is to use the custom Ant tasks that are included in
215the sample <code>build.xml</code> script.  Using these commands might follow
216a pattern like this:</p>
217<ul>
218<li><em>Start Tomcat 6 if needed</em>.  If Tomcat 6 is not already running,
219    you will need to start it in the usual way.
220    <br><br></li>
221<li><em>Compile your application</em>.  Use the <code>ant compile</code>
222    command (or just <code>ant</code>, since this is the default).  Make
223    sure that there are no compilation errors.
224    <br><br></li>
225<li><em>Install the application</em>.  Use the <code>ant install</code>
226    command.  This tells Tomcat to immediately start running your app on
227    the context path defined in the <code>app.path</code> build property.
228    Tomcat does <strong>NOT</strong> have to be restarted for this to
229    take effect.<br><br></li>
230<li><em>Test the application</em>.  Using your browser or other testing
231    tools, test the functionality of your application.
232    <br><br></li>
233<li><em>Modify and rebuild as needed</em>.  As you discover that changes
234    are required, make those changes in the original <strong>source</strong>
235    files, not in the output build directory, and re-issue the
236    <code>ant compile</code> command.  This ensures that your changes will
237    be available to be saved (via <code>cvs commit</code>) later on --
238    the output build directory is deleted and recreated as necessary.
239    <br><br></li>
240<li><em>Reload the application</em>.  Tomcat will recognize changes in
241    JSP pages automatically, but it will continue to use the old versions
242    of any servlet or JavaBean classes until the application is reloaded.
243    You can trigger this by executing the <code>ant reload</code> command.
244    <br><br></li>
245<li><em>Remove the application when you re done</em>.  When you are through
246    working on this application, you can remove it from live execution by
247    running the <code>ant remove</code> command.</li>
248</ul>
249
250<p>Do not forget to commit your changes to the source code repository when
251you have completed your testing!</p>
252
253</blockquote></td></tr></table>
254
255
256<table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Creating a Release"><strong>Creating a Release</strong></a></font></td></tr><tr><td><blockquote>
257
258<p>When you are through adding new functionality, and you've tested everything
259(you DO test, don't you :-), it is time to create the distributable version
260of your web application that can be deployed on the production server.  The
261following general steps are required:</p>
262<ul>
263<li>Issue the command <code>ant all</code> from the project source
264    directory, to rebuild everything from scratch one last time.
265    <br><br></li>
266<li>Use the <code>cvs tag</code> command to create an identifier for
267    all of the source files utilized to create this release.  This allows
268    you to reliably reconstruct a release (from sources) at a later
269    time.</li>
270<li>Issue the command <code>ant dist</code> to create a distributable
271    web application archive (WAR) file, as well as a JAR file containing
272    the corresponding source code.
273    <br><br></li>
274<li>Package the contents of the <code>dist</code> directory using the
275    <strong>tar</strong> or <strong>zip</strong> utility, according to
276    the standard release procedures used by your organization.</li>
277</ul>
278
279</blockquote></td></tr></table>
280
281
282</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr size="1" noshade></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font size="-1" color="#525D76"><em>
283        Copyright &copy; 1999-2008, Apache Software Foundation
284        </em></font></div></td></tr></table></body></html>
Note: See TracBrowser for help on using the repository browser.