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>