<!--
  ~ 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.
  -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" />
<meta http-equiv="content-type" content="" />
<title>Releases</title>
<link href="css/axis-docs.css" rel="stylesheet" type="text/css"
media="all" />
</head>
<body>
<h2>Apache Axis2 Releases</h2>
<div align="left">
<p>This page provides links to the release versions of Axis2 Java.
For more information, please see <a href=
"http://www.apache.org/dev/release.html">Apache Release
FAQ</a>.</p>
</div>
<div align="center">
<table border="1" style="border-collapse: collapse" width="93%" id=
"table1">
<tbody>
<tr>
<th>Version</th>
<th>Date</th>
<th>Description</th>
</tr>
<tr>
<td><a href=
"download/1_4/download.cgi"><strong>1.4</strong></a></td>
<td>05 - 02 - 2008</td>
<td>1.4 Release (Mirrored)</td>
</tr>
<tr>
<td><a href=
"download/1_3/download.cgi"><strong>1.3</strong></a></td>
<td>06 - 07 - 2007</td>
<td>1.3 Release (Mirrored)</td>
</tr>
<tr>
<td><a href=
"download/1_2/download.cgi"><strong>1.2</strong></a></td>
<td>27 - 04 - 2007</td>
<td>1.2 Release (Mirrored)</td>
</tr>
<tr>
<td><a href=
"download/1_1_1/download.cgi"><strong>1.1.1</strong></a></td>
<td>09 - 01 - 2007</td>
<td>1.1.1 Release (Mirrored)</td>
</tr>
<tr>
<td><a href=
"download/1_1/download.cgi"><strong>1.1</strong></a></td>
<td>13 - 11 - 2006</td>
<td>1.1 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/1_0/download.cgi"><strong>1.0</strong></a></td>
<td>04 - 05 - 2006</td>
<td>1.0 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/0_95/download.cgi"><strong>0.95</strong></a></td>
<td>23 - 03 - 2006</td>
<td>0.95 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/0_94/download.cgi"><strong>0.94</strong></a></td>
<td>11- 01 -2006</td>
<td>0.94 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/0_93/download.cgi"><strong>0.93</strong></a></td>
<td>12- 02 - 2005</td>
<td>0.93 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/0_92/download.cgi"><strong>0.92</strong></a></td>
<td>26 -08 - 2005</td>
<td>0.92 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/0_91/download.cgi"><strong>0.91</strong></a></td>
<td>16 -08 - 2005</td>
<td>0.91 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/0_9/download.cgi"><strong>0.9</strong></a></td>
<td>05 - 07 - 2005</td>
<td>0.9 Release (Archived)</td>
</tr>
<tr>
<td><a href="download/M2/download.cgi"><strong>M2</strong></a></td>
<td>08 - 06 - 2005</td>
<td>Milestone Release #2 (Archived)</td>
</tr>
</tbody>
</table>
</div>
<p><strong>Axis2 Distributions : <a href=
"http://cvs.apache.org/dist/axis2/nightly">Nightly
builds</a></strong></p>
<p><strong>Axis2 Maven Repository: <a href=
"http://people.apache.org/repo/m1-ibiblio-rsync-repository/org.apache.axis2/">
Released Axis2 jars</a> | <a href=
"http://cvs.apache.org/repository/org.apache.axis2/jars/">Nightly
SNAPSHOT</a><a href=
"http://cvs.apache.org/repository/org.apache.axis2/jars/"></a></strong></p>
</body>
</html>
