Author: emma
Date: Wed Aug 20 16:17:26 2014
New Revision: 1619141
URL: http://svn.apache.org/r1619141
Log:
dev-build updated
Modified:
james/site/trunk/www/server/3/server/3/dev-build.html
Modified: james/site/trunk/www/server/3/server/3/dev-build.html
URL:
http://svn.apache.org/viewvc/james/site/trunk/www/server/3/server/3/dev-build.html?rev=1619141&r1=1619140&r2=1619141&view=diff
==============================================================================
--- james/site/trunk/www/server/3/server/3/dev-build.html (original)
+++ james/site/trunk/www/server/3/server/3/dev-build.html Wed Aug 20 16:17:26
2014
@@ -1,506 +1,536 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
--->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia at Apr 17, 2012 -->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>
- Apache James Server 3 - Build Apache James from Source</title>
- <style type="text/css" media="all">
- @import url("./css/james.css");
- @import url("./css/maven-base.css");
- @import url("./css/maven-theme.css");
- @import url("./css/site.css");
- @import url("./js/jquery/css/custom-theme/jquery-ui-1.8.5.custom.css");
- @import url("./js/jquery/css/print.css");
- @import url("./js/fancybox/jquery.fancybox-1.3.4.css");
- </style>
- <script type="text/javascript"
src="./js/jquery/js/jquery-1.4.2.min.js"></script>
- <script type="text/javascript"
src="./js/jquery/js/jquery-ui-1.8.5.custom.min.js"></script>
- <script type="text/javascript"
src="./js/fancybox/jquery.fancybox-1.3.4.js"></script>
- <link rel="stylesheet" href="./css/print.css" type="text/css"
media="print" />
- <meta name="Date-Revision-yyyymmdd" content="20120417" />
- <meta http-equiv="Content-Language" content="en" />
-
-<link title="DOAP" rel="meta" type="application/rdf+xml"
href="http://james.apache.org//doap_james-project.rdf"/>
-
- <!-- Google Analytics -->
- <script type="text/javascript">
-
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-1384591-1']);
- _gaq.push(['_trackPageview']);
-
- (function() {
- var ga = document.createElement('script'); ga.type =
'text/javascript'; ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script').item(0);
s.parentNode.insertBefore(ga, s);
- })();
-
- </script>
- </head>
- <body class="composite">
- <div id="banner">
- <a href="../index.html" id="bannerLeft"
title="james-server-logo.gif">
-
-
- <img src="images/logos/james-server-logo.gif" alt="Apache James Server
3.0" />
- </a>
- <a href="http://www.apache.org/index.html"
id="bannerRight">
-
-
- <img src="images/logos/asf-logo-reduced.gif" alt="The Apache Software
Foundation" />
- </a>
- <div class="clear">
- <hr/>
- </div>
- </div>
- <div id="breadcrumbs">
-
-
- <div class="xleft">
- <span id="publishDate">Last Published: 2012-04-17</span>
- </div>
- <div class="xright"> <a href="../../index.html"
title="Home">Home</a>
- |
- <a href="../index.html" title="Server">Server</a>
- |
- <a href="../../hupa/index.html" title="Hupa">Hupa</a>
- |
- <a href="../../protocols/index.html"
title="Protocols">Protocols</a>
- |
- <a href="../../imap/index.html" title="IMAP">IMAP</a>
- |
- <a href="../../mailet/index.html"
title="Mailets">Mailets</a>
- |
- <a href="../../mailbox/index.html"
title="Mailbox">Mailbox</a>
- |
- <a href="../../mime4j/index.html"
title="Mime4J">Mime4J</a>
- |
- <a href="../../jsieve/index.html"
title="jSieve">jSieve</a>
- |
- <a href="../../jspf/index.html" title="jSPF">jSPF</a>
- |
- <a href="../../jdkim/index.html"
title="jDKIM">jDKIM</a>
- |
- <a href="../../mpt/index.html" title="MPT">MPT</a>
- |
- <a href="../../postage/index.html"
title="Postage">Postage</a>
-
-
- </div>
- <div class="clear">
- <hr/>
- </div>
- </div>
- <div id="leftColumn">
- <div id="navcolumn">
-
-
- <h5>Overview</h5>
- <ul>
- <li class="none">
- <a href="index.html"
title="Introduction">Introduction</a>
- </li>
- <li class="none">
- <a href="release-notes.html" title="Release
Notes">Release Notes</a>
- </li>
- </ul>
- <h5>Features</h5>
- <ul>
- <li class="none">
- <a href="feature-mailetcontainer.html" title="Mailet
Container">Mailet Container</a>
- </li>
- <li class="none">
- <a href="feature-queue-priority.html" title="Queue
Priority">Queue Priority</a>
- </li>
- <li class="none">
- <a href="feature-persistence.html"
title="Persistence">Persistence</a>
- </li>
- <li class="none">
- <a href="feature-protocols.html"
title="Protocols">Protocols</a>
- </li>
- <li class="none">
- <a href="feature-smtp-hooks.html" title="SMTP
Hooks">SMTP Hooks</a>
- </li>
- <li class="none">
- <a href="feature-performance.html"
title="Performance">Performance</a>
- </li>
- <li class="none">
- <a href="feature-security.html"
title="Security">Security</a>
- </li>
- </ul>
- <h5>User Manual</h5>
- <ul>
- <li class="none">
- <a href="quick-start.html" title="1. Quick Start">1.
Quick Start</a>
- </li>
- <li class="none">
- <a href="install.html" title="2. Install James">2.
Install James</a>
- </li>
-
<li class="collapsed">
- <a href="config.html" title="3. Configure James">3.
Configure James</a>
- </li>
-
<li class="collapsed">
- <a href="manage.html" title="4. Manage">4. Manage</a>
- </li>
-
<li class="collapsed">
- <a href="monitor.html" title="5. Monitor">5.
Monitor</a>
- </li>
-
<li class="collapsed">
- <a href="upgrade.html" title="6. Upgrade">6.
Upgrade</a>
- </li>
- </ul>
- <h5>Developers Corner</h5>
- <ul>
- <li class="none">
- <a href="dev.html"
title="Architecture">Architecture</a>
- </li>
- <li class="none">
- <strong>Build from source</strong>
- </li>
- <li class="none">
- <a href="dev-database-schema.html" title="Database
Schema">Database Schema</a>
- </li>
-
<li class="collapsed">
- <a href="dev-extend.html" title="Develop
Extensions">Develop Extensions</a>
- </li>
-
<li class="collapsed">
- <a href="dev-provided.html" title="Provided
Extensions">Provided Extensions</a>
- </li>
- <li class="none">
- <a
href="https://repository.apache.org/content/repositories/snapshots/org/apache/james/apache-james/"
title="Nightly builds">Nightly builds</a>
- </li>
- </ul>
- <h5>References</h5>
- <ul>
- <li class="none">
- <a href="apidocs/index.html"
title="Javadoc">Javadoc</a>
- </li>
- <li class="none">
- <a
href="https://issues.apache.org/jira/browse/JAMES" title="Issue Tracker">Issue
Tracker</a>
- </li>
- </ul>
- <h5>About James</h5>
- <ul>
- <li class="none">
- <a href="../../index.html"
title="Overview">Overview</a>
- </li>
- <li class="none">
- <a href="../../newsarchive.html"
title="News">News</a>
- </li>
- <li class="none">
- <a href="../../mail.html" title="Mailing
Lists">Mailing Lists</a>
- </li>
- <li class="none">
- <a href="../../contribute.html"
title="Contributing">Contributing</a>
- </li>
- <li class="none">
- <a href="../../guidelines.html"
title="Guidelines">Guidelines</a>
- </li>
- <li class="none">
- <a href="http://wiki.apache.org/james"
title="Wiki">Wiki</a>
- </li>
- <li class="none">
- <a href="../../team-list.html" title="Who We
Are">Who We Are</a>
- </li>
- <li class="none">
- <a href="../../license.html"
title="License">License</a>
- </li>
- </ul>
- <h5>Download</h5>
- <ul>
- <li class="none">
- <a href="../../download.cgi"
title="Releases">Releases</a>
- </li>
- <li class="none">
- <a
href="https://repository.apache.org/content/repositories/snapshots/org/apache/james/"
title="Snapshots">Snapshots</a>
- </li>
- </ul>
- <h5>Apache Software Foundation</h5>
- <ul>
- <li>
- <strong>
- <a title="ASF" href="http://www.apache.org/">ASF</a>
- </strong>
- </li>
- <li>
- <a title="Get Involved"
href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a>
- </li>
- <li>
- <a title="FAQ" href="http://www.apache.org/foundation/faq.html">FAQ</a>
- </li>
- <li>
- <a title="License" href="http://www.apache.org/licenses/" >License</a>
- </li>
- <li>
- <a title="Sponsorship"
href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
- </li>
- <li>
- <a title="Thanks"
href="http://www.apache.org/foundation/thanks.html">Thanks</a>
- </li>
- <li>
- <a title="Security" href="http://www.apache.org/security/">Security</a>
- </li>
- </ul>
- <a href="http://maven.apache.org/" title="Built by
Maven" class="poweredBy">
- <img class="poweredBy" alt="Built by Maven"
src="./images/logos/maven-feather.png" />
- </a>
-
-
- </div>
- </div>
- <div id="bodyColumn">
- <div id="contentBox">
- <!-- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License. -->
-
-
-
- <div class="section"><h2>Why Build from Source?<a
name="Why_Build_from_Source"></a></h2>
-
- <p>This step is not necessary to use the standard out of the box version
of James. A
- pre-built binary version of James is available from the James download
directory.</p>
-
- <p>But if you wish to customize the James source code, it will be
necessary for you to
- build the distribution yourself.</p>
-
- <p>You can read on this page how to build from the command line and from
eclipse IDE.</p>
-
- </div>
-
- <div class="section"><h2>Get Source Code<a name="Get_Source_Code"></a></h2>
-
- <p>There are two ways to get the James source code.</p>
-
- <ol style="list-style-type: decimal">
- <li>Download the source distribution - the source is available from the
- <a class="externalLink"
href="http://james.apache.org/download.cgi">James release mirrors</a>.
- Simply choose the version of James you'd like to download, and pick
the source
- distribution appropriate for your platform.</li>
- <li>Get the source code using SVN - this method gives you access to the
cutting edge code
- base. Instructions on how to use SVN to get the James source code
- can be found <a class="externalLink"
href="http://www.apache.org/dev/version-control.html">here</a>.
- Apache James Server beta1 repository is <a class="externalLink"
href="http://svn.apache.org/repos/asf/james/server/tags/james-server-3.0-beta1/">http://svn.apache.org/repos/asf/james/server/tags/james-server-3.0-beta1/</a>.</li>
- <li>For information, you can download all Apache James sources (server,
mailbox, imap, mailet...) if you check out <a class="externalLink"
href="http://svn.apache.org/repos/asf/james/current">http://svn.apache.org/repos/asf/james/current/</a>.
- Watch out!: you will get a release, but what we call a
"trunk", that is on constant development and debugging.</li>
- </ol>
-
- <p>We consider in this document that you have checked-out James source
code in JAMES_SRC_HOME directory.</p>
-
- <p>Consult the <a href="dev.html">architecture</a> page if you want to
learn
- more on the internal source structure.</p>
-
- </div>
-
- <div class="section"><h2>Required Tools<a name="Required_Tools"></a></h2>
-
- <p>To run the build you need two third-party tools.</p>
- <ol style="list-style-type: decimal">
- <li>Java Development Kit - You must have a JDK of Java version 1.6 or
higher installed to build the
- James distribution. The exact JDKs available depend on the
platform. A JDK must be downloaded and
- installed before the build can run.</li>
- <li>Maven 3.0.2 - This is a Java-tailored, XML-configured, extensible
build or make system. You need ant (3.0.2+) in order
- to build James. You can get maven 3.0.2 from <a class="externalLink"
href="http://maven.apache.org/download.html">here</a>.
- Installation instructions for maven are also available on the same
page <a class="externalLink"
href="http://maven.apache.org/download.html">http://maven.apache.org/download.html</a>.</li>
- </ol>
- <p>Set (on windows) or export (on Unix) MAVEN_OPTS to tune the memory
needed by maven with "MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=128m"</p>
-
- </div>
-
- <div class="section"><h2>Build James Source from Command Line<a
name="Build_James_Source_from_Command_Line"></a></h2>
-
- <p>In the JAMES_SRC_HOME top level directory (where the parent pom.xml
resides), invoke maven with 'mvn' with any of the following command line
arguments:
- </p><ul>
- <li>clean - deletes the target directory, making the system ready for a
clean build.</li>
- <li>compile - compiles the source code.</li>
- <li>test - run unit tests for James.</li>
- <li><b>package - generates all the James distributions, packed. From the
root directory, cd to 'container-spring/target' to have the build
distribution.</b></li>
- <li>javadocs:javadocs - builds the James javadocs.</li>
- <li>site - builds the entirety of the James website.</li>
- </ul>
-
- <p>For example, invoke <tt>mvn package</tt> to get a zip/tar of James
distribution.</p>
- <p>All built products are output in the <tt>container-spring/target</tt>
- subdirectory of the James source directory.
- This directory will be deleted if you run build with the clean
argument.</p>
- <p><b>Warning!</b> Any changes you've made in the 'dist' directory
- will be lost after a recompilation. If you are running James for this
directory
- we recommend you backup to avoid losing work. </p>
- <p>You can also invoke the command line from a shell. Go to the server
project cli folder and type mvn exec:java -Dexec.args="-h localhost -p
9999 help"</p>
-
- </div>
-
- <div class="section"><h2>Build James Source from Eclipse<a
name="Build_James_Source_from_Eclipse"></a></h2>
-
- <div class="section"><h3>Import projects in Eclipse with m2eclipse<a
name="Import_projects_in_Eclipse_with_m2eclipse"></a></h3>
-
- <p>You should have Eclipse IDE with <a class="externalLink"
href="http://m2eclipse.sonatype.org">m2eclipse</a> plugin installed.</p>
- <p>You now need to import the maven projects in the Eclipse
workspace.</p>
- <p>Therefore, click on the <tt>File</tt> menu and select
<tt>Import</tt>.
- Choose <tt>Existing Maven Project</tt> and click on <tt>Next</tt>
button.</p>
- <img src="./images/eclipse/eclipse-import-maven-view-1.gif" alt="" />
-
- </div>
-
- <div class="section"><h3>Select Projects to Import<a
name="Select_Projects_to_Import"></a></h3>
-
- <p>Select the JAMES_SRC_HOME directory where you have checked out the
source code.</p>
- <p>Eclipse should present you with the list of James server modules.</p>
- <p>Select the modules you want to import (by default, all) and click on
<tt>Finish</tt>
- to execute the import.</p>
-
- <img src="./images/eclipse/eclipse-import-maven-view-2.gif" alt="" />
-
- <p>You can also import other projects from
- <a class="externalLink"
href="http://james.apache.org/imap/source-code.html">imap</a>,
- <a class="externalLink"
href="http://james.apache.org/mailbox/source-code.html">mailbox</a>
- and <a class="externalLink"
href="http://james.apache.org/protocols/source-code.html">protocols</a> to have
a
- more complete view on the used sources code.</p>
-
- </div>
-
- <div class="section"><h3>Enable Workspace Resolution<a
name="Enable_Workspace_Resolution"></a></h3>
-
- <p>Check that 'Workspace resolution' is enable in m2eclipse plugin.</p>
- <p>Your changes in code will be directly taken into account.</p>
- <img src="./images/eclipse/eclipse-m2eclipse-project-dependencies.gif"
alt="" />
-
- </div>
-
- <div class="section"><h3>Prepare projects<a
name="Prepare_projects"></a></h3>
-
- <p>Now you have James projects in Eclipse workspace.</p>
- <p>You still have to prepare the following to be able to run from
Eclipse:</p>
- <ol style="list-style-type: decimal">
- <li>Copy the <tt>context</tt> folder, <tt>log4j.properties</tt>
- and <tt>META-INF</tt> folder from
<tt>container-spring\src\main\config\james</tt>
- directory to a source folder of <tt>container-spring</tt> project
(you can use for example a
- new folder called <tt>stage</tt> as Eclipse source folder).</li>
- <li>Copy all files (except context folder log4j.properties and
META-INF/persistence.xml)
- from <tt>container-spring\src\main\config\james</tt> folder to a
<tt>conf</tt> folder
- (<tt>conf</tt> folder must be a sub-folder of the JAMES_SRC_HOME
directory where you made the check-out).
- As non-root privilege user, you may need to change the
SMTP/IMAP/POP3 ports to values higher than 1024.</li>
- <li>For ease, you can also create 2 new eclipse projects to edit the
files and visualize the created mails/store/...:
- james-server-container-spring-conf and
james-server-container-spring-var.</li>
- </ol>
- <img src="./images/eclipse/eclipse-m2eclipse-projects.gif" alt="" />
-
- </div>
-
- <div class="section"><h3>Run James from Eclipse<a
name="Run_James_from_Eclipse"></a></h3>
-
- <p>That's it. Run or Debug James in Eclipse (right-click on the Main
class) and Have Fun!.</p>
- <img src="./images/eclipse/eclipse-run-james.gif" alt="" />
-
- <p>If you change a JPA Entity class, your will need to run 'mvn package'
- or add the following option to the VM argument of your run
configuration
-
'-javaagent:my_home_folder/.m2/repository/org/apache/openjpa/openjpa/2.0.1/openjpa-2.0.1.jar'
- </p>
-
- </div>
-
- </div>
-
- <div class="section"><h2>Build James from NetBeans<a
name="Build_James_from_NetBeans"></a></h2>
-
- <p>This was done using NetBeans 7, which comes bundeled with Maven 3,
needed to build James 3.
- Older versions of NetBeans should be able to build James fine, provided
that you configure them to use an instance of Maven 3, if they do not have it.
- I used james 3.0-beta1 release and it builded in 7:40 min on my notebook
running Debian Squeeze.
- </p>
-
- <div class="section"><h3>Getting the sources from the repository<a
name="Getting_the_sources_from_the_repository"></a></h3>
- <p>Building James with NetBeans is very easy as it comes with
Subersion and Maven support already build in.
- Maven is bundeled with the IDE, but Subverion is not, so you will
have to install Subversion yourself and NetBeans will be able to use it.
- You can get more details on how to install and where to get
Subversion from the NetBeans Help menu by clicking on <b>Help Contents</b> and
from there go to the <b>IDE Basics->Version Control and File
Hierarchy->Subversion</b> topic.
- </p>
- <p>For Linux users, Subversion is probably packaged by your
distribution so use your distribution tools to install it (aptitude, yum,
etc.)</p>
- <p>Once you have Subversion, go to
<b>Team->Subversion->Checkout</b> menu entry. <br />
- You will see an dialog window used to enter the information about
the Subversion repository you are going to use. It looks like this:
- <img src="./images/netbeans/netbeans-svn-checkout1.png" alt="" />.
<br />
- In the <tt>Repository URL</tt> field enter the location for James
repository and click <tt>Next</tt>.
- You can use the following URL to get the trunk or developement
version:
- <a class="externalLink"
href="http://svn.apache.org/repos/asf/james/server/trunk">http://svn.apache.org/repos/asf/james/server/trunk</a>.<br
/>
- After this you will be presented with another dialog window where
you can configure which folders to check out and where to save them on your
machine.
- <img src="./images/netbeans/netbeans-svn-checkout2.png" alt="" />.
<br />
- If you supplied the above URL you can click <tt>Finish</tt> to get
trunk version and start hacking.
- You can choose another folder by clicking <tt>Browse</tt>. A new
dialog window will open and from there you cand browse
- the whole subversion repository. I wanted to build James 3.0beta so
I choosed <tt>james-serve-3.0-beta1</tt> under james/server/tags/ folder.
- <img src="./images/netbeans/netbeans-svn-checkout-browse.png" alt=""
/>. <br />
- </p>
- <p>After you click <tt>Finish</tt> NetBeans will checkout the
sources. It will detect the Maven project and ask you if you wish to open the
project.
- If you open the project you will see in the Projects Window
(<tt>CTRL+1</tt> if not visible) something similar to the next image:<br />
- <img src="./images/netbeans/netbeans-james-project.png" alt="" />.
- </p>
-
- </div>
-
- <div class="section"><h3>Building the project<a
name="Building_the_project"></a></h3>
- <p> Building the project does not require too much work. Just go to
<tt>Run->Build Project</tt> menu option.
- Make sure that James is the main project (if you have other projects
open) or NetBeans will build that project instead of James.
- Once the build is finished you will find the binary distribution in
<tt>container-spring/target</tt> directory.
- <img src="./images/netbeans/james-build-dir.png" alt="" />. <br />
- </p>
- </div>
-
- </div>
-
- <div class="section"><h2>Build James Source from other IDEs<a
name="Build_James_Source_from_other_IDEs"></a></h2>
-
- <p>We will be happy to include on this page any other tutorial you could
send
- use about developing James with your favorite Integrated Development
Environment.</p>
-
- </div>
-
-
-
-
- </div>
- </div>
- <div class="clear">
- <hr/>
- </div>
- <div id="footer">
- <div class="xright">Copyright © 2002-2012
- <a href="http://www.apache.org/">The Apache Software
Foundation</a>.
- All Rights Reserved.
-
- </div>
- <div class="clear">
- <hr/>
- </div>
- </div>
- </body>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!-- Generated by Apache Maven Doxia at Aug 20, 2014 -->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Apache James Server 3.0 -
+ Apache James Server 3 - Build Apache James from Source</title>
+ <style type="text/css" media="all">
+ @import url("./css/james.css");
+ @import url("./css/maven-base.css");
+ @import url("./css/maven-theme.css");
+ @import url("./css/site.css");
+ @import url("./js/jquery/css/custom-theme/jquery-ui-1.8.5.custom.css");
+ @import url("./js/jquery/css/print.css");
+ @import url("./js/fancybox/jquery.fancybox-1.3.4.css");
+ </style>
+ <script type="text/javascript"
src="./js/jquery/js/jquery-1.4.2.min.js"></script>
+ <script type="text/javascript"
src="./js/jquery/js/jquery-ui-1.8.5.custom.min.js"></script>
+ <script type="text/javascript"
src="./js/fancybox/jquery.fancybox-1.3.4.js"></script>
+ <link rel="stylesheet" href="./css/print.css" type="text/css"
media="print" />
+ <meta name="Date-Revision-yyyymmdd" content="20140820" />
+ <meta http-equiv="Content-Language" content="en" />
+
+<link title="DOAP" rel="meta" type="application/rdf+xml"
href="http://james.apache.org//doap_james-project.rdf"/>
+
+ <!-- Google Analytics -->
+ <script type="text/javascript">
+
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-1384591-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type =
'text/javascript'; ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script').item(0);
s.parentNode.insertBefore(ga, s);
+ })();
+
+ </script>
+ </head>
+ <body class="composite">
+ <div id="banner">
+ <a href="../index.html" id="bannerLeft"
title="james-server-logo.gif">
+
+
+ <img src="images/logos/james-server-logo.gif" alt="Apache James Server
3.0" />
+ </a>
+ <a href="http://www.apache.org/index.html"
id="bannerRight">
+
+
+ <img src="images/logos/asf-logo-reduced.gif" alt="The Apache Software
Foundation" />
+ </a>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="breadcrumbs">
+
+
+ <div class="xleft">
+ <span id="publishDate">Last Published: 2014-08-20</span>
+ </div>
+ <div class="xright"> <a href="../../index.html"
title="Home">Home</a>
+ |
+ <a href="../index.html" title="Server">Server</a>
+ |
+ <a href="../../hupa/index.html" title="Hupa">Hupa</a>
+ |
+ <a href="../../protocols/index.html"
title="Protocols">Protocols</a>
+ |
+ <a href="../../mailet/index.html"
title="Mailets">Mailets</a>
+ |
+ <a href="../../mailbox/index.html"
title="Mailbox">Mailbox</a>
+ |
+ <a href="../../mime4j/index.html"
title="Mime4J">Mime4J</a>
+ |
+ <a href="../../jsieve/index.html"
title="jSieve">jSieve</a>
+ |
+ <a href="../../jspf/index.html" title="jSPF">jSPF</a>
+ |
+ <a href="../../jdkim/index.html"
title="jDKIM">jDKIM</a>
+ |
+ <a href="../../mpt/index.html" title="MPT">MPT</a>
+ |
+ <a href="../../postage/index.html"
title="Postage">Postage</a>
+
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="leftColumn">
+ <div id="navcolumn">
+
+
+ <h5>Overview</h5>
+ <ul>
+ <li class="none">
+ <a href="index.html"
title="Introduction">Introduction</a>
+ </li>
+ <li class="none">
+ <a href="release-notes.html" title="Release
Notes">Release Notes</a>
+ </li>
+ </ul>
+ <h5>Features</h5>
+ <ul>
+ <li class="none">
+ <a href="feature-mailetcontainer.html" title="Mailet
Container">Mailet Container</a>
+ </li>
+ <li class="none">
+ <a href="feature-queue-priority.html" title="Queue
Priority">Queue Priority</a>
+ </li>
+ <li class="none">
+ <a href="feature-persistence.html"
title="Persistence">Persistence</a>
+ </li>
+ <li class="none">
+ <a href="feature-protocols.html"
title="Protocols">Protocols</a>
+ </li>
+ <li class="none">
+ <a href="feature-smtp-hooks.html" title="SMTP
Hooks">SMTP Hooks</a>
+ </li>
+ <li class="none">
+ <a href="feature-performance.html"
title="Performance">Performance</a>
+ </li>
+ <li class="none">
+ <a href="feature-security.html"
title="Security">Security</a>
+ </li>
+ </ul>
+ <h5>User Manual</h5>
+ <ul>
+ <li class="none">
+ <a href="quick-start.html" title="1. Quick Start">1.
Quick Start</a>
+ </li>
+ <li class="none">
+ <a href="install.html" title="2. Install James">2.
Install James</a>
+ </li>
+
<li class="collapsed">
+ <a href="config.html" title="3. Configure James">3.
Configure James</a>
+ </li>
+
<li class="collapsed">
+ <a href="manage.html" title="4. Manage">4. Manage</a>
+ </li>
+
<li class="collapsed">
+ <a href="monitor.html" title="5. Monitor">5.
Monitor</a>
+ </li>
+
<li class="collapsed">
+ <a href="upgrade.html" title="6. Upgrade">6.
Upgrade</a>
+ </li>
+ </ul>
+ <h5>Developers Corner</h5>
+ <ul>
+ <li class="none">
+ <a href="dev.html"
title="Architecture">Architecture</a>
+ </li>
+ <li class="none">
+ <strong>Build from source</strong>
+ </li>
+ <li class="none">
+ <a href="dev-database-schema.html" title="Database
Schema">Database Schema</a>
+ </li>
+
<li class="collapsed">
+ <a href="dev-extend.html" title="Develop
Extensions">Develop Extensions</a>
+ </li>
+
<li class="collapsed">
+ <a href="dev-provided.html" title="Provided
Extensions">Provided Extensions</a>
+ </li>
+ <li class="none">
+ <a
href="https://repository.apache.org/content/repositories/snapshots/org/apache/james/apache-james/"
title="Nightly builds">Nightly builds</a>
+ </li>
+ </ul>
+ <h5>References</h5>
+ <ul>
+ <li class="none">
+ <a href="apidocs/index.html"
title="Javadoc">Javadoc</a>
+ </li>
+ <li class="none">
+ <a
href="https://issues.apache.org/jira/browse/JAMES" title="Issue Tracker">Issue
Tracker</a>
+ </li>
+ </ul>
+ <h5>About James</h5>
+ <ul>
+ <li class="none">
+ <a href="../../index.html"
title="Overview">Overview</a>
+ </li>
+ <li class="none">
+ <a href="../../newsarchive.html"
title="News">News</a>
+ </li>
+ <li class="none">
+ <a href="../../mail.html" title="Mailing
Lists">Mailing Lists</a>
+ </li>
+ <li class="none">
+ <a href="../../contribute.html"
title="Contributing">Contributing</a>
+ </li>
+ <li class="none">
+ <a href="../../guidelines.html"
title="Guidelines">Guidelines</a>
+ </li>
+ <li class="none">
+ <a href="http://wiki.apache.org/james"
title="Wiki">Wiki</a>
+ </li>
+ <li class="none">
+ <a href="../../team-list.html" title="Who We
Are">Who We Are</a>
+ </li>
+ <li class="none">
+ <a href="../../license.html"
title="License">License</a>
+ </li>
+ </ul>
+ <h5>Download</h5>
+ <ul>
+ <li class="none">
+ <a href="../../download.cgi"
title="Releases">Releases</a>
+ </li>
+ <li class="none">
+ <a
href="https://repository.apache.org/content/repositories/snapshots/org/apache/james/"
title="Snapshots">Snapshots</a>
+ </li>
+ </ul>
+ <h5>Apache Software Foundation</h5>
+ <ul>
+ <li>
+ <strong>
+ <a title="ASF" href="http://www.apache.org/">ASF</a>
+ </strong>
+ </li>
+ <li>
+ <a title="Get Involved"
href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a>
+ </li>
+ <li>
+ <a title="FAQ" href="http://www.apache.org/foundation/faq.html">FAQ</a>
+ </li>
+ <li>
+ <a title="License" href="http://www.apache.org/licenses/" >License</a>
+ </li>
+ <li>
+ <a title="Sponsorship"
href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
+ </li>
+ <li>
+ <a title="Thanks"
href="http://www.apache.org/foundation/thanks.html">Thanks</a>
+ </li>
+ <li>
+ <a title="Security" href="http://www.apache.org/security/">Security</a>
+ </li>
+ </ul>
+ <a href="http://maven.apache.org/" title="Built by
Maven" class="poweredBy">
+ <img class="poweredBy" alt="Built by Maven"
src="./images/logos/maven-feather.png" />
+ </a>
+
+
+ </div>
+ </div>
+ <div id="bodyColumn">
+ <div id="contentBox">
+ <!-- Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License. -->
+
+
+
+ <div class="section"><h2>Why Build from Source?<a
name="Why_Build_from_Source"></a></h2>
+
+ <p>This step is not necessary to use the standard out of the box version
of James. A
+ pre-built binary version of James is available from the James download
directory.</p>
+
+ <p>But if you wish to customize the James source code, it will be
necessary for you to
+ build the distribution yourself.</p>
+
+ <p>You can read on this page how to build from the command line and from
eclipse IDE.</p>
+
+ </div>
+
+ <div class="section"><h2>Get Source Code<a name="Get_Source_Code"></a></h2>
+
+ <p>There are two ways to get the James source code.</p>
+
+ <ol style="list-style-type: decimal">
+ <li>Download the source distribution - the source is available from the
+ <a class="externalLink"
href="http://james.apache.org/download.cgi">James release mirrors</a>.
+ Simply choose the version of James you'd like to download, and pick
the source
+ distribution appropriate for your platform.</li>
+ <li>Get the source code using SVN - this method gives you access to the
cutting edge code
+ base. Instructions on how to use SVN to get the James source code
+ can be found <a class="externalLink"
href="http://www.apache.org/dev/version-control.html">here</a>.
+ Apache James Server beta4 repository is <a class="externalLink"
href="http://svn.apache.org/repos/asf/james/server/tags/james-server-3.0-beta4/">http://svn.apache.org/repos/asf/james/server/tags/james-server-3.0-beta4/</a>.</li>
+ <li>For information, you can download all Apache James sources (server,
mailbox, imap, mailet...) if you check out <a class="externalLink"
href="http://svn.apache.org/repos/asf/james/current">http://svn.apache.org/repos/asf/james/current/</a>.
+ Watch out!: you will get a release, but what we call a
"trunk", that is on constant development and debugging.</li>
+ </ol>
+
+ <p>We consider in this document that you have checked-out James source
code in JAMES_SRC_HOME directory.</p>
+
+ <p>Consult the <a href="dev.html">architecture</a> page if you want to
learn
+ more on the internal source structure.</p>
+
+ </div>
+
+ <div class="section"><h2>Required Tools<a name="Required_Tools"></a></h2>
+
+ <p>To run the build you need two third-party tools.</p>
+ <ol style="list-style-type: decimal">
+ <li>Java Development Kit - You must have a JDK of Java version 1.6 or
higher installed to build the
+ James distribution. The exact JDKs available depend on the
platform. A JDK must be downloaded and
+ installed before the build can run.</li>
+ <li>Maven 3.0.2 - This is a Java-tailored, XML-configured, extensible
build or make system. You need maven (3.0.2+) in order
+ to build James. You can get maven 3.0.2 from <a class="externalLink"
href="http://maven.apache.org/download.html">here</a>.
+ Installation instructions for maven are also available on the same
page <a class="externalLink"
href="http://maven.apache.org/download.html">http://maven.apache.org/download.html</a>.</li>
+ </ol>
+ <p>Set (on windows) or export (on Unix) MAVEN_OPTS to tune the memory
needed by maven with "MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=128m"</p>
+
+ </div>
+
+ <div class="section"><h2>Build James Source from Command Line<a
name="Build_James_Source_from_Command_Line"></a></h2>
+
+ <p>In the JAMES_SRC_HOME top level directory (where the parent pom.xml
resides), invoke maven with 'mvn' with any of the following command line
arguments:
+ </p><ul>
+ <li>clean - deletes the target directory, making the system ready for a
clean build.</li>
+ <li>compile - compiles the source code.</li>
+ <li>test - run unit tests for James.</li>
+ <li><b>package - generates all the James distributions, packed.
+ From the root directory, cd to 'container-spring/target' to have the
build distribution.
+ Notice, for the latest trunk(revision 1430655+), a specific profile
argument need to be set: '-Pwith-assembly'.
+ The location of final distributions is also changed to
'JAMES_SRC_HOME/server/app/target'.</b></li>
+ <li>javadocs:javadocs - builds the James javadocs.</li>
+ <li>site - builds the entirety of the James website.</li>
+ </ul>
+
+ <p>For example, invoke <tt>mvn package</tt> to get a zip/tar of James
distribution.</p>
+ <p>All built products are output in the <tt>container-spring/target</tt>
+ subdirectory of the James source directory.
+ This directory will be deleted if you run build with the clean
argument.</p>
+ <p><b>Warning!</b> Any changes you've made in the 'dist' directory
+ will be lost after a recompilation. If you are running James for this
directory
+ we recommend you backup to avoid losing work. </p>
+ <p>You can also invoke the command line from a shell. Go to the server
project cli folder and type mvn exec:java -Dexec.args="-h localhost -p
9999 help"</p>
+
+ </div>
+
+ <div class="section"><h2>Build James Source from Eclipse<a
name="Build_James_Source_from_Eclipse"></a></h2>
+
+ <div class="section"><h3>Import projects in Eclipse with m2eclipse<a
name="Import_projects_in_Eclipse_with_m2eclipse"></a></h3>
+
+ <p>You should have Eclipse IDE with <a class="externalLink"
href="http://m2eclipse.sonatype.org">m2eclipse</a> plugin installed.</p>
+ <p>You now need to import the maven projects in the Eclipse
workspace.</p>
+ <p>Therefore, click on the <tt>File</tt> menu and select <tt>Import</tt>.
+ Choose <tt>Existing Maven Project</tt> and click on <tt>Next</tt>
button.</p>
+ <img src="./images/eclipse/eclipse-import-maven-view-1.gif" alt="" />
+
+ </div>
+
+ <div class="section"><h3>Select Projects to Import<a
name="Select_Projects_to_Import"></a></h3>
+
+ <p>Select the JAMES_SRC_HOME directory where you have checked out the
source code.</p>
+ <p>Eclipse should present you with the list of James server modules.</p>
+ <p>Select the modules you want to import (by default, all) and click on
<tt>Finish</tt>
+ to execute the import.</p>
+
+ <img src="./images/eclipse/eclipse-import-maven-view-2.gif" alt="" />
+
+ <p>You can also import other projects from
+ <a class="externalLink"
href="http://james.apache.org/imap/source-code.html">imap</a>,
+ <a class="externalLink"
href="http://james.apache.org/mailbox/source-code.html">mailbox</a>
+ and <a class="externalLink"
href="http://james.apache.org/protocols/source-code.html">protocols</a> to have
a
+ more complete view on the used sources code.</p>
+
+ </div>
+
+ <div class="section"><h3>Enable Workspace Resolution<a
name="Enable_Workspace_Resolution"></a></h3>
+
+ <p>Check that 'Workspace resolution' is enable in m2eclipse plugin.</p>
+ <p>Your changes in code will be directly taken into account.</p>
+ <img src="./images/eclipse/eclipse-m2eclipse-project-dependencies.gif"
alt="" />
+
+ </div>
+
+ <div class="section"><h3>Prepare projects<a
name="Prepare_projects"></a></h3>
+
+ <p>Now you have James projects in Eclipse workspace.</p>
+ <p>You still have to prepare the following to be able to run from
Eclipse:</p>
+ <ol style="list-style-type: decimal">
+ <li>Copy the <tt>context</tt> folder, <tt>log4j.properties</tt>
+ and <tt>META-INF</tt> folder from
<tt>container-spring\src\main\config\james</tt>
+ directory to a source folder of <tt>container-spring</tt> project
(you can use for example a
+ new folder called <tt>stage</tt> as Eclipse source folder).</li>
+ <li>Copy all files (except context folder log4j.properties and
META-INF/persistence.xml)
+ from <tt>container-spring\src\main\config\james</tt> folder to a
<tt>conf</tt> folder
+ (<tt>conf</tt> folder must be a sub-folder of the JAMES_SRC_HOME
directory where you made the check-out).
+ As non-root privilege user, you may need to change the
SMTP/IMAP/POP3 ports to values higher than 1024.</li>
+ <li>For ease, you can also create 2 new eclipse projects to edit the
files and visualize the created mails/store/...:
+ james-server-container-spring-conf and
james-server-container-spring-var.</li>
+ </ol>
+ <img src="./images/eclipse/eclipse-m2eclipse-projects.gif" alt="" />
+
+ </div>
+
+ <div class="section"><h3>Run James from Eclipse<a
name="Run_James_from_Eclipse"></a></h3>
+
+ <p>That's it. Run or Debug James in Eclipse (right-click on the Main
class) and Have Fun!.</p>
+ <img src="./images/eclipse/eclipse-run-james.gif" alt="" />
+
+ <p>If you change a JPA Entity class, your will need to run 'mvn package'
+ or add the following option to the VM argument of your run
configuration
+
'-javaagent:my_home_folder/.m2/repository/org/apache/openjpa/openjpa/2.0.1/openjpa-2.0.1.jar'
+ </p>
+
+ </div>
+
+ </div>
+
+ <div class="section"><h2>Build James from NetBeans<a
name="Build_James_from_NetBeans"></a></h2>
+
+ <p>This was done using NetBeans 7, which comes bundeled with Maven 3,
needed to build James 3.
+ Older versions of NetBeans should be able to build James fine, provided
that you configure them to use an instance of Maven 3, if they do not have it.
+ I used james 3.0-beta1 release and it builded in 7:40 min on my notebook
running Debian Squeeze.
+ </p>
+
+ <div class="section"><h3>Getting the sources from the repository<a
name="Getting_the_sources_from_the_repository"></a></h3>
+ <p>Building James with NetBeans is very easy as it comes with
Subersion and Maven support already build in.
+ Maven is bundeled with the IDE, but Subverion is not, so you will
have to install Subversion yourself and NetBeans will be able to use it.
+ You can get more details on how to install and where to get
Subversion from the NetBeans Help menu by clicking on <b>Help Contents</b> and
from there go to the <b>IDE Basics->Version Control and File
Hierarchy->Subversion</b> topic.
+ </p>
+ <p>For Linux users, Subversion is probably packaged by your
distribution so use your distribution tools to install it (aptitude, yum,
etc.)</p>
+ <p>Once you have Subversion, go to
<b>Team->Subversion->Checkout</b> menu entry. <br />
+ You will see an dialog window used to enter the information about
the Subversion repository you are going to use. It looks like this:</p>
+ <img src="./images/netbeans/netbeans-svn-checkout1.png" alt="" />
+ <p>In the <tt>Repository URL</tt> field enter the location for James
repository and click <tt>Next</tt>.
+ You can use the following URL to get the trunk or development
version:
+ <a class="externalLink"
href="http://svn.apache.org/repos/asf/james/server/trunk">http://svn.apache.org/repos/asf/james/server/trunk</a>.<br
/>
+ After this you will be presented with another dialog window where
you can configure which folders to check out and where to save them on your
machine.</p>
+ <img src="./images/netbeans/netbeans-svn-checkout2.png" alt="" />
+ <p>If you supplied the above URL you can click <tt>Finish</tt> to
get trunk version and start hacking.
+ You can choose another folder by clicking <tt>Browse</tt>. A new
dialog window will open and from there you can browse
+ the whole subversion repository. I wanted to build James 3.0beta so
I choosed <tt>james-serve-3.0-beta1</tt> under james/server/tags/ folder. <br
/></p>
+ <img src="./images/netbeans/netbeans-svn-checkout-browse.png" alt=""
/>
+
+ <p>After you click <tt>Finish</tt> NetBeans will checkout the
sources. It will detect the Maven project and ask you if you wish to open the
project.
+ If you open the project you will see in the Projects Window
(<tt>CTRL+1</tt> if not visible) something similar to the next image:<br /></p>
+ <img src="./images/netbeans/netbeans-james-project.png" alt="" />
+
+ </div>
+
+ <div class="section"><h3>Building the project <a
name="Building_the_project"></a></h3>
+ <p> Building the project does not require too much work. Just go to
<tt>Run->Build Project</tt> menu option.
+ Make sure that James is the main project (if you have other projects
open) or NetBeans will build that project instead of James.
+ Once the build is finished you will find the binary distribution in
<tt>container-spring/target</tt> directory. <br /></p>
+ <img src="./images/netbeans/james-build-dir.png" alt="" />
+ </div>
+
+ </div>
+
+ <div class="section"><h2>Build James from IntelliJ IDEA<a
name="Build_James_from_IntelliJ_IDEA"></a></h2>
+
+ <p>This section has been created using IntelliJ IDEA 12 and Maven 3. And
downloading the trunk version of the server
+ from <tt>http://svn.apache.org/repos/asf/james/server/trunk/</tt>.
+ </p>
+
+ <div class="section"><h3>Getting the sources from the repository<a
name="Getting_the_sources_from_the_repository"></a></h3>
+ <p>To download the source code, you can use the Subversion support
that comes with IntelliJ IDEA following the next steps:</p>
+
+ <p>First, in the Welcome page, click on <b>Check out from Version
Control</b> and select <b>Subversion</b>.</p>
+ <img src="./images/intellij-idea/intellij-new-project.png" alt="" />
+ <p>In the pop-up window, press the <b>+</b> button to add the James
code repository in the next pop-up.</p>
+ <img src="./images/intellij-idea/intellij-svn-repo.png" alt="" />
<br />
+ <img src="./images/intellij-idea/intellij-svn-repo-add-repo.png"
alt="" /> <br />
+ <p>Then, choose the location for the project.</p>
+ <img
src="./images/intellij-idea/intellij-svn-repo-checkout-choose-folder.png"
alt="" />
+
+ <p>When this process is done, the project should look like this. <br
/></p>
+ <img src="./images/intellij-idea/intellij-james-project.png" alt=""
/>
+
+ </div>
+
+ <div class="section"><h3>Building the project<a
name="Building_the_project"></a></h3>
+ <p> To build the project, you must open the <b>Maven Projects</b>
panel. Then double click on the install goal to run this goal.<br /></p>
+ <img src="./images/intellij-idea/intellij-mvn.png" alt="" />
+ <p>Then you will find the James server zip in the <b>app/target</b>
folder.<br /></p>
+ <img src="./images/intellij-idea/intellij-james-zip.png" alt="" />
+ </div>
+ </div>
+
+
+ <div class="section"><h2>Build James Source from other IDEs<a
name="Build_James_Source_from_other_IDEs"></a></h2>
+
+ <p>We will be happy to include on this page any other tutorial you could
send
+ use about developing James with your favorite Integrated Development
Environment.</p>
+
+ </div>
+
+
+
+
+ </div>
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ <div id="footer">
+ <div class="xright">Copyright © 2002-2014
+ <a href="http://www.apache.org/">The Apache Software
Foundation</a>.
+ All Rights Reserved.
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ </body>
+</html>