---
title: Releases
---
<!-- 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. -->

<section class="bf-releases">
    <div class="container">
    	<div class="row">
    	    <div class="col-md-12" id="events">
    	    	<h2><span class="icon-releases"></span></h2>
			</div>
		</div>
	</div>
</section>

<section class="bf-releases">
    <div class="container">
      <div class="row">
    		<div class="col-md-9">
    			<p>
				Releases of Geode are made available to the general public at no charge, under the <a href="http://apache.org/licenses/">Apache License</a>, in both binary and source distributions.
				  </p>
      <!-- RELEASES -->
      <div class="container">
        <!-- START OF 1.1.1 -->
        <h3><span class="icon-flag-checkered"> 1.1.1</span></h3>
        <!-- BINARY -->
        <ul>
            <span class="icon-cloud-download"> <strong>Binaries </strong>
              [ <a href="http://apache.org/dyn/closer.cgi/geode/1.1.1/apache-geode-1.1.1.zip">ZIP</a>, <a href="https://dist.apache.org/repos/dist/release/geode/1.1.1/apache-geode-1.1.1.zip.sha256">SHA-256</a>,
              <a href="https://dist.apache.org/repos/dist/release/geode/1.1.1/apache-geode-1.1.1.zip.asc">PGP</a> ] -
              [<a href="http://apache.org/dyn/closer.cgi/geode/1.1.1/apache-geode-1.1.1.tar.gz">TAR.GZ</a>, <a href="https://dist.apache.org/repos/dist/release/geode/1.1.1/apache-geode-1.1.1.tar.gz.sha256">SHA-256</a>,
              <a href="https://dist.apache.org/repos/dist/release/geode/1.1.1/apache-geode-1.1.1.tar.gz.asc">PGP</a> ]
              </span>

              <blockquote>Binary downloads are provided for the convenience of our users and are not official Apache Geode releases. </blockquote>
            </li>
        </ul>
        <!-- SOURCE -->
        <ul>
            <span class="icon-cloud-download"> <strong>Source</strong>
               [ <a href="http://apache.org/dyn/closer.cgi/geode/1.1.1/apache-geode-src-1.1.1.zip">ZIP</a>, <a href="https://dist.apache.org/repos/dist/release/geode/1.1.1/apache-geode-src-1.1.1.zip.sha256">SHA-256</a>,
               <a href="https://dist.apache.org/repos/dist/release/geode/1.1.1/apache-geode-src-1.1.1.zip.asc">PGP</a>
                ] -
               [<a href="http://apache.org/dyn/closer.cgi/geode/1.1.1/apache-geode-src-1.1.1.tar.gz">TAR.GZ</a>, <a href="https://dist.apache.org/repos/dist/release/geode/1.1.1/apache-geode-src-1.1.1.tar.gz.sha256">SHA-256</a>,
               <a href="https://dist.apache.org/repos/dist/release/geode/1.1.1/apache-geode-src-1.1.1.tar.gz.asc">PGP</a>
               ]
             </span>
            </li>
        </ul>

        <!-- RELEASE NOTES -->
        <ul>
            <strong><a href="https://cwiki.apache.org/confluence/display/GEODE/Release+Notes#ReleaseNotes-1.1.1">Release Notes</a></strong>
        </ul>

        <!-- DEPENDENCY MANAGERS -->
        <div class="container">
          <h4><span class="icon-archive"> Dependency Managers</span></h4>
          <ul>
              <li> <strong>Gradle</strong>
                <pre class="prettyprint">
  dependencies {
      compile 'org.apache.geode:geode-core:1.1.1'
  }</pre>
              </li>
              <li> <strong>Maven</strong>
                <pre class="prettyprint">
  &lt;dependencies&gt;
     &lt;dependency&gt;
        &lt;groupId&gt;org.apache.geode&lt;/groupId&gt;
        &lt;artifactId&gt;geode-core&lt;/artifactId&gt;
        &lt;version&gt;1.1.1&lt;/version&gt;
     &lt;/dependency&gt;
  &lt;/dependencies&gt;</pre>
              </li>
          </ul>
        </div>
        <!-- END OF 1.1.1 -->
        <!-- START OF 1.1 -->
        <h3><span class="icon-flag-checkered"> 1.1.0</span></h3>
        <!-- BINARY -->
        <ul>
            <span class="icon-cloud-download"> <strong>Binaries </strong>
              [ <a href="http://apache.org/dyn/closer.cgi/geode/1.1.0/apache-geode-1.1.0.zip">ZIP</a>, <a href="https://dist.apache.org/repos/dist/release/geode/1.1.0/apache-geode-1.1.0.zip.sha256">SHA-256</a>,
              <a href="https://dist.apache.org/repos/dist/release/geode/1.1.0/apache-geode-1.1.0.zip.asc">PGP</a> ] -
              [<a href="http://apache.org/dyn/closer.cgi/geode/1.1.0/apache-geode-1.1.0.tar.gz">TAR.GZ</a>, <a href="https://dist.apache.org/repos/dist/release/geode/1.1.0/apache-geode-1.1.0.tar.gz.sha256">SHA-256</a>,
              <a href="https://dist.apache.org/repos/dist/release/geode/1.1.0/apache-geode-1.1.0.tar.gz.asc">PGP</a> ]
              </span>

              <blockquote>Binary downloads are provided for the convenience of our users and are not official Apache Geode releases. </blockquote>
            </li>
        </ul>
        <!-- SOURCE -->
        <ul>
            <span class="icon-cloud-download"> <strong>Source</strong>
               [ <a href="http://apache.org/dyn/closer.cgi/geode/1.1.0/apache-geode-src-1.1.0.zip">ZIP</a>, <a href="https://dist.apache.org/repos/dist/release/geode/1.1.0/apache-geode-src-1.1.0.zip.sha256">SHA-256</a>,
               <a href="https://dist.apache.org/repos/dist/release/geode/1.1.0/apache-geode-src-1.1.0.zip.asc">PGP</a>
                ] -
               [<a href="http://apache.org/dyn/closer.cgi/geode/1.1.0/apache-geode-src-1.1.0.tar.gz">TAR.GZ</a>, <a href="https://dist.apache.org/repos/dist/release/geode/1.1.0/apache-geode-src-1.1.0.tar.gz.sha256">SHA-256</a>,
               <a href="https://dist.apache.org/repos/dist/release/geode/1.1.0/apache-geode-src-1.1.0.tar.gz.asc">PGP</a>
               ]
             </span>
            </li>
        </ul>

        <!-- RELEASE NOTES -->
        <ul>
            <strong><a href="https://cwiki.apache.org/confluence/display/GEODE/Release+Notes#ReleaseNotes-1.1.0">Release Notes</a></strong>
        </ul>

        <!-- DEPENDENCY MANAGERS -->
        <div class="container">
          <h4><span class="icon-archive"> Dependency Managers</span></h4>
          <ul>
              <li> <strong>Gradle</strong>
                <pre class="prettyprint">
  dependencies {
      compile 'org.apache.geode:geode-core:1.1.0'
  }</pre>
              </li>
              <li> <strong>Maven</strong>
                <pre class="prettyprint">
  &lt;dependencies&gt;
     &lt;dependency&gt;
        &lt;groupId&gt;org.apache.geode&lt;/groupId&gt;
        &lt;artifactId&gt;geode-core&lt;/artifactId&gt;
        &lt;version&gt;1.1.0&lt;/version&gt;
     &lt;/dependency&gt;
  &lt;/dependencies&gt;</pre>
              </li>
          </ul>
        </div>
        <!-- END OF 1.1 -->
        <!-- START OF 1.0 -->
        <h3><span class="icon-flag-checkered"> 1.0.0-incubating</span></h3>
        <!-- BINARY -->
        <ul>
            <span class="icon-cloud-download"> <strong>Binaries </strong>
              [ <a href="http://apache.org/dyn/closer.cgi/geode/1.0.0-incubating/apache-geode-1.0.0-incubating.zip">ZIP</a>, <a href="https://dist.apache.org/repos/dist/release/geode/1.0.0-incubating/apache-geode-1.0.0-incubating.zip.sha256">SHA-256</a>,
              <a href="https://dist.apache.org/repos/dist/release/geode/1.0.0-incubating/apache-geode-1.0.0-incubating.zip.asc">PGP</a> ] -
              [<a href="http://apache.org/dyn/closer.cgi/geode/1.0.0-incubating/apache-geode-1.0.0-incubating.tar.gz">TAR.GZ</a>, <a href="https://dist.apache.org/repos/dist/release/geode/1.0.0-incubating/apache-geode-1.0.0-incubating.tar.gz.sha256">SHA-256</a>,
              <a href="https://dist.apache.org/repos/dist/release/geode/1.0.0-incubating/apache-geode-1.0.0-incubating.tar.gz.asc">PGP</a> ]
              </span>

              <blockquote>Binary downloads are provided for the convenience of our users and are not official Apache Geode releases. </blockquote>
            </li>
        </ul>
        <!-- SOURCE -->
        <ul>
            <span class="icon-cloud-download"> <strong>Source</strong>
               [ <a href="http://apache.org/dyn/closer.cgi/geode/1.0.0-incubating/apache-geode-src-1.0.0-incubating.zip">ZIP</a>, <a href="https://dist.apache.org/repos/dist/release/geode/1.0.0-incubating/apache-geode-src-1.0.0-incubating.zip.sha256">SHA-256</a>,
               <a href="https://dist.apache.org/repos/dist/release/geode/1.0.0-incubating/apache-geode-src-1.0.0-incubating.zip.asc">PGP</a>
                ] -
               [<a href="http://apache.org/dyn/closer.cgi/geode/1.0.0-incubating/apache-geode-src-1.0.0-incubating.tar.gz">TAR.GZ</a>, <a href="https://dist.apache.org/repos/dist/release/geode/1.0.0-incubating/apache-geode-src-1.0.0-incubating.tar.gz.sha256">SHA-256</a>,
               <a href="https://dist.apache.org/repos/dist/release/geode/1.0.0-incubating/apache-geode-src-1.0.0-incubating.tar.gz.asc">PGP</a>
               ]
             </span>
            </li>
        </ul>

        <!-- RELEASE NOTES -->
        <ul>
            <strong><a href="https://cwiki.apache.org/confluence/display/GEODE/Release+Notes#ReleaseNotes-1.0.0-incubating">Release Notes</a></strong>
        </ul>

        <!-- DEPENDENCY MANAGERS -->
        <div class="container">
          <h4><span class="icon-archive"> Dependency Managers</span></h4>
          <ul>
              <li> <strong>Gradle</strong>
                <pre class="prettyprint">
  dependencies {
      compile 'org.apache.geode:geode-core:1.0.0-incubating'
  }</pre>
                <!-- ><script src="https://gist.github.com/markito/b7796cafef4bd273bd07.js"></script>-->
              </li>
              <li> <strong>Maven</strong>
                <pre class="prettyprint">
  &lt;dependencies&gt;
     &lt;dependency&gt;
        &lt;groupId&gt;org.apache.geode&lt;/groupId&gt;
        &lt;artifactId&gt;geode-core&lt;/artifactId&gt;
        &lt;version&gt;1.0.0-incubating&lt;/version&gt;
     &lt;/dependency&gt;
  &lt;/dependencies&gt;</pre>
              </li>
          </ul>
        </div>
        <!-- END OF 1.0 -->
      </div>
      <p>If you need access to older releases they can be found in the <a href="https://archive.apache.org/dist/incubator/geode/">release archives</a>.</p>
      <!-- END OF RELEASE -->
      <hr/>
        <p>
					Project releases are approved by vote of the Apache Geode Project Management Committee (PMC). Support for a release is provided by project volunteers on the project <a href="http://geode.apache.org/community/#mailing-lists">mailing lists</a>. Bugs found in a release may be discussed on the list and reported through the <a href="https://issues.apache.org/jira/browse/GEODE">issue tracker</a>. The user mailing list and issue tracker are the only support options hosted by the Apache Geode project.
				</p>
				<p>
					<strong>Note</strong>: When downloading from a mirror, please be sure to verify that checksums and signatures are correct. To do so, use the checksum and signature files from the main Apache site at <a href="https://dist.apache.org/repos/dist/release/geode/">https://dist.apache.org/repos/dist/release/geode/</a>. Find here the KEYS file, which contains all OpenPGP keys we use to sign releases here: <a href="https://git-wip-us.apache.org/repos/asf?p=geode.git;a=blob;f=KEYS;h=9d13f70a9ce8f8d6a7c3feb1e194ccec123b5868;hb=c26334542fa9e90daff5f58467d6e174b3e0f3e2">KEYS</a>
				</p>
				<p>
					The PGP signatures can be verified using PGP or GPG. First download the <a href="https://git-wip-us.apache.org/repos/asf?p=geode.git;a=blob;f=KEYS;h=9d13f70a9ce8f8d6a7c3feb1e194ccec123b5868;hb=c26334542fa9e90daff5f58467d6e174b3e0f3e2">KEYS</a> as well as the <em>asc signature</em> file for the particular distribution. Then verify the signatures using:
				</p>
				<p>
       				% pgpk -a KEYS
					</br></br>
        			% pgpv ${filename}.tar.gz.asc
        			</br></br>
    				or
    				</br></br>
        			% pgp -ka KEYS
        			</br></br>
        			% pgp ${filename}.tar.gz.asc
        			</br></br>
    				or
    				</br></br>
        			% gpg --import KEYS
        			</br></br>
        			% gpg --verify ${filename}.tar.gz.asc
        			</br></br>
        		</p>
    			<p>
					Alternatively, you can verify the MD5 signature on the files. A Unix program called md5 or md5sum is included in many Unix distributions. It is also available as part of <a href="http://www.gnu.org/software/textutils/textutils.html">GNU Textutils</a>. Windows users can get binary md5 programs from <a href="http://www.fourmilab.ch/md5/">here</a>, <a href="http://www.pc-tools.net/win32/md5sums/">here</a>, or <a href="http://www.slavasoft.com/fsum/">here</a>.
				<p>
					If you want to build directly from source, instructions are within the User Documentation in the <a href="http://geode.apache.org/docs/guide/getting_started/installation/install_standalone.html">How to Install</a> subsection.
				</p>
			</div>
		</div>
	</div>
</section>
