<div id="midcolumn">
	<h2>Downloads</h2>
	<p>
		All downloads are provided under the terms and conditions of the <a href="/legal/epl/notice.php">Eclipse Foundation Software User Agreement</a> 
		unless otherwise specified.
	</p>
    <h2>Latest version - 2.1.0.M1</h2>

    As of 2.1.0.M1, the gemini blueprint artifacts are available directly from <a href="http://search.maven.org/#search|ga|1|g%3Aorg.eclipse.gemini.blueprint">maven central</a>.
    You may reference them in a maven pom, like so:

    <pre>
        &lt;dependency&gt;
            &lt;groupId&gt;org.eclipse.gemini.blueprint&lt;/groupId&gt;
            &lt;artifactId&gt;gemini-blueprint-io&lt;/artifactId&gt;
            &lt;version&gt;2.1.0.M1&lt;/version&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.eclipse.gemini.blueprint&lt;/groupId&gt;
            &lt;artifactId&gt;gemini-blueprint-extender&lt;/artifactId&gt;
            &lt;version&gt;2.1.0.M1&lt;/version&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.eclipse.gemini.blueprint&lt;/groupId&gt;
            &lt;artifactId&gt;gemini-blueprint-core&lt;/artifactId&gt;
            &lt;version&gt;2.1.0.M1&lt;/version&gt;
        &lt;/dependency&gt;
    </pre>

    <p>The additional mock and test dependencies are available via</p>

    <pre>
        &lt;dependency&gt;
            &lt;groupId&gt;org.eclipse.gemini.blueprint&lt;/groupId&gt;
            &lt;artifactId&gt;gemini-blueprint-mock&lt;/artifactId&gt;
            &lt;version&gt;2.1.0.M1&lt;/version&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.eclipse.gemini.blueprint&lt;/groupId&gt;
            &lt;artifactId&gt;gemini-blueprint-test&lt;/artifactId&gt;
            &lt;version&gt;2.1.0.M1&lt;/version&gt;
        &lt;/dependency&gt;
    </pre>

  <h2>Previous release</h2>
  <a href="http://www.eclipse.org/downloads/download.php?file=/blueprint/gemini-blueprint-2.0.0.zip">Gemini Blueprint 2.0.0.0</a>

  <h3>Maven Repository</h3>
  As of release 2.0.0, the gemini artifacts are available from maven central - no additional repository configuration is required.
</div>



