<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <meta name="Date-Revision-yyyymmdd" content="20140918"/>
  <meta http-equiv="Content-Language" content="en"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

  <title>Source Code and Builds</title>

  <link href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic" rel="stylesheet" type="text/css">
  <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
  <link href="/css/main.css" rel="stylesheet">
  <link href="/css/custom.css" rel="stylesheet">
  <link href="/highlighter/github-theme.css" rel="stylesheet">

  <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
  <script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script>
  <script type="text/javascript" src="/js/community.js"></script>
</head>
<body>

<a href="http://github.com/apache/struts" class="github-ribbon">
  <img style="position: absolute; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub">
</a>

<header>
  <nav>
    <div role="navigation" class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" data-toggle="collapse" data-target="#struts-menu" class="navbar-toggle">
            Menu
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a href="/index.html" class="navbar-brand logo"><img src="/img/struts-logo.svg"></a>
        </div>
        <div id="struts-menu" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Home<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/index.html">Welcome</a></li>
                <li><a href="/download.cgi">Download</a></li>
                <li><a href="/releases.html">Releases</a></li>
                <li><a href="/announce-2021.html">Announcements</a></li>
                <li><a href="http://www.apache.org/licenses/">License</a></li>
                <li><a href="https://www.apache.org/foundation/thanks.html">Thanks!</a></li>
                <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Support<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/mail.html">User Mailing List</a></li>
                <li><a href="https://issues.apache.org/jira/browse/WW">Issue Tracker</a></li>
                <li><a href="/security.html">Reporting Security Issues</a></li>
                <li class="divider"></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Migration+Guide">Version Notes</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Security+Bulletins">Security Bulletins</a></li>
                <li class="divider"></li>
                <li><a href="/maven/project-info.html">Maven Project Info</a></li>
                <li><a href="/maven/struts2-core/dependencies.html">Struts Core Dependencies</a></li>
                <li><a href="/maven/struts2-plugins/modules.html">Plugin Dependencies</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Documentation<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/birdseye.html">Birds Eye</a></li>
                <li><a href="/primer.html">Key Technologies</a></li>
                <li><a href="/kickstart.html">Kickstart FAQ</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Home">Wiki</a></li>
                <li class="divider"></li>
                <li><a href="/getting-started/">Getting Started</a></li>
                <li><a href="/security/">Security Guide</a></li>
                <li><a href="/core-developers/">Core Developers Guide</a></li>
                <li><a href="/tag-developers/">Tag Developers Guide</a></li>
                <li><a href="/maven-archetypes/">Maven Archetypes</a></li>
                <li><a href="/plugins/">Plugins</a></li>
                <li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
                <li><a href="/tag-developers/tag-reference.html">Tag reference</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/FAQs">FAQs</a></li>
                <li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Contributing<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/youatstruts.html">You at Struts</a></li>
                <li><a href="/helping.html">How to Help FAQ</a></li>
                <li><a href="/dev-mail.html">Development Lists</a></li>
                <li><a href="/contributors/">Contributors Guide</a></li>
                <li class="divider"></li>
                <li><a href="/submitting-patches.html">Submitting patches</a></li>
                <li><a href="/builds.html">Source Code and Builds</a></li>
                <li><a href="/coding-standards.html">Coding standards</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Contributors+Guide">Contributors Guide</a></li>
                <li class="divider"></li>
                <li><a href="/release-guidelines.html">Release Guidelines</a></li>
                <li><a href="/bylaws.html">PMC Charter</a></li>
                <li><a href="/volunteers.html">Volunteers</a></li>
                <li><a href="https://gitbox.apache.org/repos/asf?p=struts.git">Source Repository</a></li>
                <li><a href="/updating-website.html">Updating the website</a></li>
              </ul>
            </li>
            <li class="apache"><a href="http://www.apache.org/"><img src="/img/apache.png"></a></li>
          </ul>
        </div>
      </div>
    </div>
  </nav>
</header>


<article class="container">
  <section class="col-md-12">
    <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/builds.md" title="Edit this page on GitHub">Edit on GitHub</a>
    
    <h1 class="no_toc" id="source-code-and-builds">Source Code and Builds</h1>

<ul id="markdown-toc">
  <li><a href="#building-apache-struts" id="markdown-toc-building-apache-struts">Building Apache Struts</a></li>
  <li><a href="#nightly-builds" id="markdown-toc-nightly-builds">Nightly Builds</a></li>
  <li><a href="#test-builds" id="markdown-toc-test-builds">Test Builds</a></li>
  <li><a href="#maven-snapshots" id="markdown-toc-maven-snapshots">Maven Snapshots</a></li>
  <li><a href="#licensing-of-apache-struts-builds" id="markdown-toc-licensing-of-apache-struts-builds">Licensing of Apache Struts Builds</a></li>
</ul>

<p>As a convenience to developers who are helping to create and maintain the Apache Struts framework,
public access to the live source code repository is available. This is our one-and-only development repository.
Accordingly, the source may not always compile or be in a release-ready state.</p>

<p><em>Access at your own risk!</em></p>

<p>NOTE: The full source code is provided with each <a href="/download.cgi">release</a>. If you simply want to build
your own copy of the product, use the source code provided with an approved release, rather than the development head.</p>

<p>Read-only access to the Apache Struts source repository is available through both
<a href="https://gitbox.apache.org/repos/asf?p=struts.git;a=summary">web browser</a> and
<a href="http://git-scm.com/">Git client</a> interfaces.</p>

<p>With the <a href="http://git-scm.com/">Git client</a> installed, obtaining a working copy of the Struts codebase is as simple as</p>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; git clone https://gitbox.apache.org/repos/asf/struts.git
</code></pre></div></div>

<p>or from GitHub</p>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; git clone https://github.com/apache/struts.git
</code></pre></div></div>

<p>For more about using version control systems at Apache, see the ASF’s
<a href="http://www.apache.org/dev/#version-control">Source Code Repositories</a> page.</p>

<h2 id="building-apache-struts">Building Apache Struts</h2>

<p>If you are building Apache Struts from source, we recommend that you install and use
<a href="http://maven.apache.org">Apache Maven 3.</a> During the build process, Maven will automatically acquire
whatever external JARs your system may need. (Of course, you can still use your build system of choice to build
your own applications!)</p>

<p>With Maven installed, building a Struts codebase is as simple as</p>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; mvn install
</code></pre></div></div>

<p>or</p>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; mvn -DskipAssembly=true install
</code></pre></div></div>

<p>Maven will automatically download any dependencies as needed.</p>

<p>For more about using Maven to build Struts 2, see
<a href="/docs/building-the-framework-from-source.html">Building the framework from source</a> in the
<a href="/docs/contributors-guide.html">Struts 2 Contributors Guide.</a></p>

<p>For more about using Maven to build Struts 1, see our <a href="http://wiki.apache.org/struts/StrutsMaintenanceMaven">Maven wiki page.</a></p>

<h2 id="nightly-builds">Nightly Builds</h2>

<p>As part of our continuous integration practice, we also make available each morning the
<a href="https://nightlies.apache.org/x1/dist/struts/">latest stable development build.</a></p>

<p><em>Again: Use at your own risk!</em></p>

<p>If you do <strong>not</strong> plan to contribute to the development of the framework, then you probably want to download a
<a href="releases.html">release</a></p>

<p>NOTE: The Struts 2 nightly build is not fully operational. We suggest that contributors checkout
the <a href="#SourceCode">source code</a> instead.</p>

<h2 id="test-builds">Test Builds</h2>

<p>As we prepare for a new release, the project group may create interim <em>test builds</em>. When test builds are available,
we post them <a href="https://dist.apache.org/repos/dist/dev/struts/">here</a> in binary, source and library distributions.
Library distributions include any external dependencies needed to use a product with your application.</p>

<p>A test build is made available so that it can be reviewed for quality by the Apache Struts development group.
When a build is judged “ready for prime time”, it is promoted to “General Availability” status and may be
made the “Best Available” release. If the group feels that a build requires more testing, then it may be marked
as “Beta” release. When a test build is upgraded to “Beta” or “GA” by a vote of the project members,
we make the distribution available as a formal <a href="releases.html">release</a>.</p>

<h2 id="maven-snapshots">Maven Snapshots</h2>

<p>When a distribution is first made available, it is rated as a development build or “snapshot”. Later, the quality
of the distribution may be upgraded to “Beta” or “General Availability”, based on feedback from the community,
and then made available through ibiblio and other public Maven repositories. To obtain an early distribution via Maven,
specify the ASF Snapshot repository in the project’s POM.</p>

<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;repositories&gt;</span>
    <span class="nt">&lt;repository&gt;</span>
        <span class="nt">&lt;id&gt;</span>apache.snapshots<span class="nt">&lt;/id&gt;</span>
        <span class="nt">&lt;name&gt;</span>ASF Maven 2 Snapshot<span class="nt">&lt;/name&gt;</span>
        <span class="nt">&lt;url&gt;</span>https://repository.apache.org/content/groups/snapshots/<span class="nt">&lt;/url&gt;</span>
    <span class="nt">&lt;/repository&gt;</span>
<span class="nt">&lt;/repositories&gt;</span>
</code></pre></div></div>

<h2 id="licensing-of-apache-struts-builds">Licensing of Apache Struts Builds</h2>

<p>Apache Struts 2 source code and documentation is licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file included in any distribution for additional information
regarding copyright ownership. The ASF licenses the source code and documentation files in our Apache Struts distribution
to you under the Apache License, Version 2.0 (the “License”); you may not use the Apache Struts product except in compliance
with the License.</p>

<p>You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0]</p>

<p>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.</p>

<p>Next: <a href="release-guidelines.html">Release Guidelines</a></p>

  </section>
</article>


<footer class="container">
  <div class="col-md-12">
    Copyright &copy; 2000-2018 <a href="http://www.apache.org/">The Apache Software Foundation </a>.
    All Rights Reserved.
  </div>
  <div class="col-md-12">
    Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project logos are
    trademarks of The Apache Software Foundation.
  </div>
  <div class="col-md-12">Logo and website design donated by <a href="https://softwaremill.com/">SoftwareMill</a>.</div>
</footer>

<script>!function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (!d.getElementById(id)) {
    js = d.createElement(s);
    js.id = id;
    js.src = "//platform.twitter.com/widgets.js";
    fjs.parentNode.insertBefore(js, fjs);
  }
}(document, "script", "twitter-wjs");</script>
<script src="https://apis.google.com/js/platform.js" async="async" defer="defer"></script>

<div id="fb-root"></div>

<script>(function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s);
  js.id = id;
  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>


</body>
</html>
