<!DOCTYPE html>
<html lang="en">
<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!-->
<head>
<meta charset="utf-8">
<title>The Apache OFBiz&reg; Project</title>
<meta name="description" content="Apache OFBiz (The Apache Open For Business
    Project) is an open source enterprise automation software project licensed
    under the Apache License Version 2.0. Being open source under the Apache 2.0
    license and driven by a community Apache OFBiz offers both flexibility by
    design and by access to code, and a solution where you're not alone but
    rather can work with many others to get things done.">
<meta name="keywords" content="Open Source ERP,Open Source CRM,
    Open Source E-Commerce,Open Source eCommerce,Open Source POS,Open Source SCM,
    Open Source MRP,Open Source CMMS,Open Source EAM,web services,workflow,
    ebusiness,e-business,ecommerce,e-commerce,automation,enterprise software,
    open source,entity engine,service engine,erp,crm,party,accounting,facility,
    supply,chain,management,catalog,order,project,task,work effort,financial,
    ledger,content management,customer,inventory"/>

<meta name="Robots" content="index,follow" />
<!-- Mobile Specific Metas
    ================================================== -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- CSS
    ================================================== -->
<!-- Bootstrap  -->
<link type="text/css" rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<!-- web font  -->
<link href="http://fonts.googleapis.com/css?family=Open+Sans:400,300,800" rel="stylesheet" type="text/css">
<!-- plugin css  -->
<link rel="stylesheet" type="text/css" href="js-plugin/pretty-photo/css/prettyPhoto.css" />
<link rel="stylesheet" type="text/css" href="js-plugin/rs-plugin/css/settings.css" media="screen" />
<link type="text/css" rel="stylesheet" href="js-plugin/hoverdir/css/style.css">
<!-- icon fonts -->
<link type="text/css" rel="stylesheet" href="font-icons/custom-icons/css/custom-icons.css">
<link type="text/css" rel="stylesheet" href="font-icons/custom-icons/css/custom-icons-ie7.css">
<!-- Custom css -->
<link type="text/css" rel="stylesheet" href="css/layout.css">
<link type="text/css" id="colors" rel="stylesheet" href="css/colors.css">
<!--[if lt IE 9]><script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<!--[if gte IE 9]><style type="text/css">.iconBig, .active, .hover a , .Shover a { filter: none !important; } </style> <![endif]-->
<script src="js/modernizr-2.6.1.min.js"></script>
<!-- Favicons
    ================================================== -->
<link rel="shortcut icon" href="images/favicon.ico">
<link rel="apple-touch-icon" href="images/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="144x144" href="images/apple-touch-icon-144x144.png">
</head>
<body>
<!-- header -->
<header id="mainHeader" class="clearfix">
  <div class="navbar navbar-fixed-top">
    <div class="navbar-inner">
      <div class="container"> <a href="index.html" class="brand"><img src="images/OFBiz-logoV3-apache.png" alt="Apache OFBiz Logo"/></a>
        <nav id="mainMenu" class="clearfix">
          <ul>
            <li><a href="index.html" class="firstLevel">Home</a></li>
            <li><a href="" class="firstLevel">Getting Started</a>
              <ul>
                <li><a href="developers.html" class="">Developers</a></li>
                <li><a href="business-users.html" class="last">Business Users</a></li>
              </ul>
            </li>
            <li><a href="" class="firstLevel">News</a>
              <ul>
                <li><a href="https://twitter.com/apacheofbiz" target="external">Twitter</a></li>
                <li><a href="https://blogs.apache.org/ofbiz/" target="external" class="last">Blog</a></li>                
              </ul>
            </li>
            <li><a href="" class="firstLevel">Documentation</a>
              <ul>
                <li><a href="https://cwiki.apache.org/confluence/display/OFBIZ/Documentation#Documentation-End-UserDocumentation" target="external" class="">User Documentation</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/OFBIZ/Technical+Documentation" target="external" class="">Technical Documentation</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/OFBIZ/Home" target="external" class="">Wiki</a></li>
                <li><a href="https://ci.apache.org/projects/ofbiz/site/javadocs/" target="external" class="last">API Reference</a></li>
              </ul>
            </li>
            <li><a href="" class="firstLevel">Community</a>
              <ul>
                <li><a href="getting-involved.html">Getting Involved</a></li>                
                <li><a href="mailing-lists.html">Mailing Lists</a></li>
                <li><a href="source-repositories.html">Source Repository</a></li>
     <li><a href="download.html">Downloads</a></li>
                <li><a href="https://issues.apache.org/jira/browse/OFBIZ/?selectedTab=com.atlassian.jira.jira-projects-plugin:summary-panel" target="external" >Issue Tracker</a></li>
                <li><a href="faqs.html" class="last">FAQ</a></li>
              </ul>
            </li>
            <li><a href="ofbiz-demos.html" class="firstLevel">Demos</a></li>            
            </li>
          </ul>
        </nav>
      </div>
    </div>
  </div>
</header>
<!-- header -->
<!-- globalWrapper -->
<div id="globalWrapper">
   
  <!-- page content -->
 <section id="content" class="fullWidth">
    <header class="headerPage">
      <div class="container clearfix">
        <div class="row">
          <h1 class="span8">Getting Started - Developers</h1>
          <div class="span4" id="navTrail"> <a href="index.html" class="homeLink">home</a><span>/</span><a href="">Getting Started</a><span>/</span><span class="current">Developers</span> </div>
        </div>
      </div>
    </header>
  <section id="content" class="features" >
    <div class="slice clearfix">
      <div class="container">
        <div class="row ">
          <aside class="span2 PortfolioStickyMenu" id="sidebar">
            <ul  id="subnav" class="nav nav-stacked sidenav scrollspyNav">
              <li> <a href="#DevPreq"> Pre-Requisites </a> </li>
              <li> <a href="#DevDownld"> Download </a> </li>
              <li> <a href="#DevBldRun"> Build and Run </a> </li>
        <li> <a href="#DevRepo"> Browse Repository </a> </li>
         <li> <a href="#DevTutorial"> Tutorial </a> </li>
         <li> <a href="#DevDocs"> Documentation and Help </a> </li>
        <li> <a href="#DevDemo"> Demo </a> </li>
            </ul>
          </aside>
          <div class="span10">
            <section  id="DevPreq" class="slice row clearfix">
              <div class="span10">
                <h2>Pre-Requisites</h2>
                <div class="divider"><span></span></div>
     <ul class="iconsList">
      <li><i class="icon-pin"></i> For 16.11, the ofbiz-framework trunk and ofbiz-plugins trunk the minimum requirement you need installed is Java 1.8 SDK.</li>
      <li><i class="icon-pin"></i> Apache OFBiz can be downloaded and run on both Unix based and Windows based systems</li>
    </ul>
                 <p><strong>NOTE:</strong> If you are running an older release or branch then please refer to <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Home" target="_blank" >our Wiki</a> for details</p>
                </div>
            </section>
       <section  id="DevDownld" class="slice row clearfix">
              <div class="span10">
                <h2>Download</h2>
                <div class="divider"><span></span></div>
                <p>There are two ways to download the OFBiz source code</p>
    <h3>1. Using a Download Mirror</h3>
    <p>Download your required version from one of our <a href="download.html">download mirrors</a> and extract the zip file </p>
    <h3>2. Checkout the Source Code</h3>
    <p>Checkout the source code from the repository</p>
    <p>Anyone can checkout or <a href="#DevRepo">browse the source code </a>in the OFBiz public Subversion (SVN) repository.</p>
    <p>To checkout the source code, simply use the following command (if you are using a GUI client, configure it appropriately).</p>
    <ul class="iconsList">
                  <li><i class="icon-pin"></i> <strong>ofbiz-framework trunk</strong> : <code>$ svn co http://svn.apache.org/repos/asf/ofbiz/ofbiz-framework/trunk ofbiz-framework</code></li>
      <li><i class="icon-pin"></i> <strong>ofbiz-plugins trunk</strong> : <code>$ svn co http://svn.apache.org/repos/asf/ofbiz/ofbiz-plugins/trunk ofbiz-plugins</code></li>
      <li><i class="icon-pin"></i> <strong>branch release16.11 (stable)</strong>: <code>$ svn co http://svn.apache.org/repos/asf/ofbiz/branches/release16.11 ofbiz.16.11</code></li>
               </ul>
    </div>
            </section>
      <section  id="DevBldRun" class="slice row clearfix">
              <div class="span10">
                <h2>Build and Run</h2>
                <div class="divider"><span></span></div>
                <p>Once you have downloaded the source code it will need to be built. The command to built.</p>
    <h3>Building Release 16.11</h3>
    <p>Release 16.11  and our ofbiz-framework trunk uses Gradle as it's build system so the commands to build and run it are different to the previous releases. </p>
    <p>To build 16.11 release,navigate to the OFBiz or framework-trunk directory and;</p>
    <p>Run the following command for Unix-like OS</p>
    <code>./gradlew cleanAll loadDefault</code><p></p>
    <p>Run the following command for MS Windows</p>
    <code>gradlew cleanAll loadDefault</code>
    <p></p>
    <h3>Building the Trunk</h3>
    <p>After the 16.11 release a minor change has been made to the Gradle build command for building OFBiz.</p>
    <p>To build the trunk, navigate to the framework-trunk directory and;</p>
    <p>Run the following command for Unix-like OS</p>
    <code>./gradlew cleanAll loadAll</code><p></p>
    <p>Run the following command for MS Windows</p>
    <code>gradlew cleanAll loadAll</code>
    <p></p>
    <h3>Starting and Running 16.11 or the ofbiz-framework trunk</h3>
    <p>To start OFBiz running locally, navigate to the trunk directory and;</p>
    <p>Run the following command for Unix-like OS</p>
    <code>./gradlew ofbiz</code><p></p>
    <p>Run the following command for MS Windows</p>
    <code>gradlew ofbiz</code>
    <p></p>
    <p>To log into OFBiz, navigate with your browser to </p>
    <p><code>https://localhost:8443/accounting</code></p>
    <p>and login with username <strong>"admin" </strong>and password <strong>"ofbiz"</strong></p>
    <h3>Stopping OFBiz</h3>
    <p>To stop OFBiz running locally, open a command line terminal window and navigate to the OFBiz directory and;</p>
    <p>Run the following command for Unix-like OS</p>
    <code>./gradlew 'ofbiz --shutdown'</code><p></p>
    <p>Run the following command for MS Windows</p>
    <code>gradlew ofbiz --shutdown</code>
    <p></p>
    <p><strong>NOTE</strong>: That quotes are needed for the Unix based command. For further details and a full list of all available OFBiz Gradle commands, please take a look at the readme.md file</p>
    <p></p>
            </div>
            </section>            
            <section  id="DevRepo" class="slice row clearfix">
              <div class="span10">
                <h2>Browse Repository</h2>
                <div class="divider"><span></span></div>
                <p>You can browse the repository using any of the following links.</p>
                <ul class="iconsList">
                   <li><i class="icon-pin"></i> <a href="http://svn.apache.org/repos/asf/ofbiz/" target="_blank"><strong>SVN - WebDAV</strong></a></li>
        <li><i class="icon-pin"></i> <a href="http://svn.apache.org/viewvc/ofbiz/" target="_blank"><strong>SVN - ViewVC</strong></a></li>
    </ul>
    <p></p>
    <p>Our ofbiz-framework trunk and ofbiz-plugins trunk are also available on Git at the links below:</p>
    <ul class="iconsList">
        <li><i class="icon-pin"></i> <a href="https://github.com/apache/ofbiz-framework" target="external"><strong>ofbiz-framework trunk on Github</strong></a></li>
       <li><i class="icon-pin"></i> <a href="https://github.com/apache/ofbiz-plugins" target="external"><strong>ofbiz-plugins trunk on Github</strong></a></li>
    </ul>
            </div>
            </section>
      <section  id="DevTutorial" class="slice row clearfix">
              <div class="span10">
                <h2>Development Tutorial</h2>
                <div class="divider"><span></span></div>
                <p>To help you getting started we have put together a beginners OFBiz development tutorial to get familiar with with OFBiz.</p>
    <p>It covers the fundamentals of the OFBiz application development process. The goal of this tutorial is to acquaint a developer with best practices, coding conventions. the control flow and things that the developer needs to know in order to modify OFBiz</p>
    <ul class="iconsList">
                  <li><i class="icon-pin"></i> <a href="https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Tutorial+-+A+Beginners+Development+Guide" target=_blank"><strong>Developer Tutorial</strong></a></li>
    </ul>
            </div>
            </section>
      <section  id="DevDocs" class="slice row clearfix">
              <div class="span10">
                <h2>Documentation and Help</h2>
                <div class="divider"><span></span></div>
                <p>We have a range of technical documenentation and help for developers. Please see the links below.</p>
    <ul class="iconsList">
                  <li><i class="icon-pin"></i> <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Technical+Documentation" target="_blank"><strong>OFBiz Technical Documentation</strong></a></li>
        <li><i class="icon-pin"></i> <a href="https://ci.apache.org/projects/ofbiz/site/javadocs/" target="_blank"><strong>OFBiz API Reference</strong></a></li>
        <li><i class="icon-pin"></i> <a href="https://cwiki.apache.org/confluence/display/OFBIZ/FAQ+-+Tips+-+Tricks+-+Cookbook+-+HowTo" target="_blank"><strong>Developer and Technical FAQs</strong></a></li>
    </ul>
    <p>After consulting the documentation you still have questions,please feel free to post questions on our development mailing list.</p>
            </div>
            </section>
      <section  id="DevDemo" class="slice row clearfix">
              <div class="span10">
                <h2>Demo</h2>
                <div class="divider"><span></span></div>
                <p>Try out our OFBiz demo - <a href="ofbiz-demos.html"><strong>OFBiz Demos</strong></a></p>
            </div>
            </section>
          </div>
        </div>
      </div>
    </div>
   </section>
 </section>
  <!-- page content -->
 
<!-- footer -->
<footer class="footer1">
  <div class="container" id="footer">
    <div class="row">
      <div class="span6 timelineWidget">
        <h2>Latest tweets</h2>
        <div class="divider"><span></span></div>
        <ul class="socialNetwork nav">
          <li>
            <a href="https://twitter.com/ApacheOfbiz" class="icon-twitter-bird socialIcon tips"
              target="_blank" title="follow us on Twitter"><span>twitter</span></a>
          </li>
   <li><a href="https://www.youtube.com/user/ofbiz" class="icon-play socialIcon tips"  title="follow us on Youtube"><span>Youtube</span></a></li>
    <li><a href="https://www.facebook.com/Apache-OFBiz-1478219232210477/?ref=page_internal" class="icon-facebook socialIcon tips"  title="follow us on Facebook"><span>facebook</span></a></li>
          <!--<li><a href="#" class="icon-rss socialIcon tips"  title="Our rss feed"><span>rss feed</span></a></li>         
          <li><a href="#" class="icon-gplus socialIcon tips"  title="follow us on Google +"><span>google +</span></a></li>
          <li><a href="#" class="icon-instagram socialIcon tips"  title="follow us on Instagram"><span>instagram</span></a></li>
          <li><a href="#" class="icon-linkedin socialIcon tips"  title="follow us on Linkedin"><span>linkedin</span></a></li>
          <li><a href="#" class="icon-pinterest-circled socialIcon tips"  title="follow us on Pinterest"><span>Pinterest</span></a></li>-->
        </ul>
        <div id="twitterFrame"> <a class="twitter-timeline" href="https://twitter.com/ApacheOfbiz?height=250" data-widget-id="588661945194192896"  data-tweet-limit="2" data-theme="dark" data-chrome="nofooter noheader transparent" >Tweets by @ApacheOfbiz</a>
          <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
        </div>
      </div>
      <div class="span3 contactWidget">
        <h2>Contact Community</h2>
        <div class="divider"><span></span></div>
        <ul>
          <li><a href="mailing-lists.html">Mailing Lists</a></li>
          <li><a href="source-repositories.html">Source Repository (SVN)</a></li>
          <li><a href="https://issues.apache.org/jira/browse/OFBIZ" target="external">Issue Tracker (Jira)</a></li>
          <li><a href="https://www.youtube.com/user/ofbiz" target="external">OFBiz Youtube Channel</a></li>
          <li><a href="https://vimeo.com/channels/apacheofbiz" target="external">OFBiz Vimeo Channel</a></li>
          <li><a href="https://www.hipchat.com/gGlwdXZZl" target="external">OFBiz HipChat Room</a></li>
        </ul>
      </div>
      <div class="span3 sociallWidget">
        <h2>ASF Information</h2>
        <div class="divider"><span></span></div>
        <ul>
          <li><a href="http://www.apache.org/foundation/" target="external">Apache Software Foundation</a></li>
          <li><a href="http://www.apache.org/foundation/sponsorship.html" target="external">Sponsorship</a></li>
          <li><a href="http://www.apache.org/foundation/thanks.html" target="external">Thanks</a></li>
          <li><a href="download.html">Security</a></li>
        </ul>
      </div>
    </div>
  </div>
</footer>
<footer class="footer2" id="footerRights">
  <div class="container">
    <div class="row">
      <div class="span12">
        <p>
          Copyright © 2017 The Apache Software Foundation. Licensed under the
          Apache License, Version 2.0. Apache OFBiz, OFBiz, the project logo
          and the Apache feather logo are trademarks of The Apache Software
          Foundation.
        </p>
      </div>
    </div>
  </div>
</footer>
<!-- footer -->
</div>
<!-- globalWrapper -->
<script type="text/javascript" src="js-plugin/respond/respond.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript" src="js-plugin/jquery-ui/jquery-ui-1.8.23.custom.min.js"></script>
<!-- third party plugins  -->
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap-carousel.js"></script>
<script type="text/javascript" src="js-plugin/easing/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js-plugin/pretty-photo/js/jquery.prettyPhoto.js"></script>
<script type="text/javascript" src="js-plugin/hoverdir/jquery.hoverdir.js"></script>
<!-- jQuery KenBurn Slider  -->
<script type="text/javascript" src="js-plugin/rs-plugin/js/jquery.themepunch.plugins.min.js"></script>
<script type="text/javascript" src="js-plugin/rs-plugin/js/jquery.themepunch.revolution.min.js"></script>
<!-- Custom  -->
<script type="text/javascript" src="js/custom.js"></script>
<script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', UA]);
    _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')[0]; s.parentNode.insertBefore(ga, s);
    })();
</script>
</body>
</html>
