<!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="/css/syntax.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>

  <!-- Matomo -->
  <script>
    var _paq = window._paq = window._paq || [];
    /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
    /* We explicitly disable cookie tracking to avoid privacy issues */
    _paq.push(['disableCookies']);
    _paq.push(['trackPageView']);
    _paq.push(['enableLinkTracking']);
    (function() {
      var u="//analytics.apache.org/";
      _paq.push(['setTrackerUrl', u+'matomo.php']);
      _paq.push(['setSiteId', '41']);
      var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
    })();
  </script>
  <!-- End Matomo Code -->
</head>
<body>

<a href="https://github.com/apache/struts" class="github-ribbon">
  <img decoding="async" loading="lazy" style="position: absolute; right: 0; border: 0;" width="149" height="149" src="https://github.blog/wp-content/uploads/2008/12/forkme_right_red_aa0000.png?resize=149%2C149" class="attachment-full size-full" alt="Fork me on GitHub" data-recalc-dims="1">
</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-2024.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>
                <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</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><a href="/commercial-support.html">Commercial Support</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 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="/contributors/">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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt; mvn install
</code></pre></div></div>

<p>or</p>

<div class="language-plaintext 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="contributors/building-the-framework-from-source">Building the framework from source</a> in the
<a href="contributors/index">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/struts/snapshot/">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">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>You can also use Maven to test the builds, all you have to do is to configure a Staging repository in <code class="language-plaintext highlighter-rouge">~/.m2/settings.xml</code>
file like this:</p>

<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;settings&gt;</span>
    ...
    <span class="nt">&lt;profiles&gt;</span>
        <span class="nt">&lt;profile&gt;</span>
            <span class="nt">&lt;id&gt;</span>local<span class="nt">&lt;/id&gt;</span>
            <span class="nt">&lt;activation&gt;</span>
                <span class="nt">&lt;activeByDefault&gt;</span>true<span class="nt">&lt;/activeByDefault&gt;</span>
            <span class="nt">&lt;/activation&gt;</span>
            <span class="nt">&lt;repositories&gt;</span>
                <span class="nt">&lt;repository&gt;</span>
                    <span class="nt">&lt;id&gt;</span>apache-pre-release<span class="nt">&lt;/id&gt;</span>
                    <span class="nt">&lt;url&gt;</span>https://repository.apache.org/content/repositories/staging/<span class="nt">&lt;/url&gt;</span>
                    <span class="nt">&lt;layout&gt;</span>default<span class="nt">&lt;/layout&gt;</span>
                <span class="nt">&lt;/repository&gt;</span>
            <span class="nt">&lt;/repositories&gt;</span>
        <span class="nt">&lt;/profile&gt;</span>
    <span class="nt">&lt;/profiles&gt;</span>
<span class="nt">&lt;/settings&gt;</span>
</code></pre></div></div>

<p>or add the Staging 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-pre-release<span class="nt">&lt;/id&gt;</span>
        <span class="nt">&lt;url&gt;</span>https://repository.apache.org/content/repositories/staging/<span class="nt">&lt;/url&gt;</span>
        <span class="nt">&lt;layout&gt;</span>default<span class="nt">&lt;/layout&gt;</span>
    <span class="nt">&lt;/repository&gt;</span>
<span class="nt">&lt;/repositories&gt;</span>
</code></pre></div></div>

<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">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 the Maven Central 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">Release Guidelines</a></p>

  </section>
</article>


<footer class="container">
  <div class="col-md-12">
    Copyright &copy; 2000-2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
    Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project logos are
    trademarks of The Apache Software Foundation. All Rights Reserved.
  </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>
