blob: d908578de2ad62f50c260985fb33f47b84f56a04 [file] [log] [blame]
<h1><a name="Download-DownloadApacheShiro"></a>Download Apache Shiro</h1>
<table align="right" width="275" style="margin-left: 20px; margin-bottom: 20px; border-style: solid; border-width: 2px; border-color: navy" cellpadding="10px">
<tr>
<td>
<div id="border">
<h2>Related Content</h2>
<h3><a href="get-started.html">Getting Started</a></h3>
<p>Resources, guides and tutorials for new Shiro users. </br><span style="font-size:11"><a href="get-started.html">Read More &gt;&gt;</a></span></p>
<h3><a href="10-minute-tutorial.html">10-Minute Shiro Tutorial</a></h3>
<p>Try Apache Shiro for yourself in under 10 minutes. </br><span style="font-size:11"><a href="10-minute-tutorial.html">Read More &gt;&gt;</a></span></p>
<h3><a href="webapp-tutorial.html">Web App Tutorial</a></h3>
<p>Step-by-step tutorial for securing a web application with Shiro. </br><span style="font-size:11"><a href="webapp-tutorial.html">Read More &gt;&gt;</a></span></p>
<h3><a href="java-authentication-guide.html">Java Authentication Guide</a></h3>
<p>Learn how Authentication in Java is performed in Shiro. </br><span style="font-size:11"><a href="java-authentication-guide.html">Read More &gt;&gt;</a></span></p>
<h3><a href="java-authorization-guide.html">Java Authorization Guide</a></h3>
<p>Learn how Shiro handles access control in Java. </br><span style="font-size:11"><a href="java-authorization-guide.html">Read More &gt;&gt;</a></span></p>
</div>
</td>
</tr>
</table>
<p>Apache Shiro 1.2.5 is the current stable release (Java 1.6+ JVM).</p>
<p>To download Shiro please follow the instructions below.</p>
<h3>Code Signatures</h3>
<p>You may <a class="external-link" href="http://www.apache.org/dev/release-signing.html#verifying-signature">verify the
authenticity</a> of all artifacts below by using the PGP <a class="external-link"
href="http://www.apache.org/dist/shiro/KEYS">KEYS</a>
file. </p>
<h3>Releases</h3>
<div>
<ul>
<li>
<a href="#latest">Latest Stable Release (1.2.5)</a>
<ul>
<li><a href="#latestBinary">1.2.5 Binary Distribution</a></li>
<li><a href="#latestSource">1.2.5 Source Code Distribution</a></li>
<li><a href="#latestGit">1.2.5 Git Source repository</a></li>
</ul>
</li>
<li><a href="#previous">Previous Releases</a>
<ul>
<li><a href="#Download-1.1.0">1.1.0</a></li>
<ul>
<li><a href="#1.1.0Binary">1.1.0 Binary Distribution</a></li>
<li><a href="#1.1.0Source">1.1.0 Source Code Distribution</a></li>
<li><a href="#1.1.0Git">1.1.0 Git Source repository</a></li>
</ul>
</ul>
</li>
</ul>
</div>
<h2><a name="latest"></a>Latest Stable Release (1.2.5)</h2>
<h3><a name="latestBinary"></a>1.2.5 Binary Distribution</h3>
<p>Associated documentation can be found <a href="documentation.html" title="Documentation">here</a></p>
<p>To download the files directly as one .jar file just click the link in the "Artifact" column. If you would like
acquire Shiro through Maven, then please use the markup listed under "Maven Usage"</p>
<p>
</p>
<div class="table-wrap">
<table class="confluenceTable" id="TBL1365578679386">
<tbody>
<tr>
<th colspan="1" rowspan="1" class="confluenceTh"> Artifact</th>
<th colspan="1" rowspan="1" class="confluenceTh"> Maven Usage</th>
<th colspan="1" rowspan="1" class="confluenceTh"> Notes</th>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-all/1.2.5/shiro-all-1.2.5.jar"
rel="nofollow">shiro-all</a></td>
<td colspan="1" rowspan="1" class="confluenceTd"><b>Not Recommended</b></td>
<td colspan="1" rowspan="1" class="confluenceTd"> Includes all binary functionality for Shiro (without
dependencies), useful in certain build environments (e.g. Ant). However, this is <b>NOT</b>
recommended in Maven builds as it does not retain correct dependency metadata, which can lead to
Maven working incorrectly. For Maven builds, it is <b>highly</b> recommended to specify individual
modules listed below as you require them.
</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-core/1.2.5/shiro-core-1.2.5.jar"
rel="nofollow">shiro-core</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-core&lt;/artifactId&gt;
&lt;version&gt;1.2.5&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> Required in all environments. <a class="external-link"
href="http://slf4j.org/"
rel="nofollow">Slf4j</a>'s
<tt>slf4j-api</tt> jar and one of its binding jars is required. <tt>commons-beanutils</tt> is
required only if using INI config.
</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-web/1.2.5/shiro-web-1.2.5.jar"
rel="nofollow">shiro-web</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-web&lt;/artifactId&gt;
&lt;version&gt;1.2.5&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> Enables support for web-based applications.</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-aspectj/1.2.5/shiro-aspectj-1.2.5.jar"
rel="nofollow">shiro-aspectj</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-aspectj&lt;/artifactId&gt;
&lt;version&gt;1.2.5&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> Enables <a class="external-link"
href="http://www.eclipse.org/aspectj/"
rel="nofollow">AspectJ</a> support for
Shiro AOP and Annotations.
</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-cas/1.2.5/shiro-cas-1.2.5.jar"
rel="nofollow">shiro-cas</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-cas&lt;/artifactId&gt;
&lt;version&gt;1.2.5&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> Enables Jasig <a class="external-link"
href="http://www.jasig.org/cas"
rel="nofollow">CAS</a> support.
</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-ehcache/1.2.5/shiro-ehcache-1.2.5.jar"
rel="nofollow">shiro-ehcache</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-ehcache&lt;/artifactId&gt;
&lt;version&gt;1.2.5&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> Enables <a class="external-link"
href="http://ehcache.org" rel="nofollow">Ehcache</a>-based
famework caching.
</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-features/1.2.5/shiro-features-1.2.5-features.xml"
rel="nofollow">shiro-features</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-features&lt;/artifactId&gt;
&lt;version&gt;1.2.5&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> OSGi / <a class="external-link"
href="http://karaf.apache.org/">Apache
Karaf</a> integration.
</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-guice/1.2.5/shiro-guice-1.2.5.jar"
rel="nofollow">shiro-guice</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-guice&lt;/artifactId&gt;
&lt;version&gt;1.2.5&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> Enables <a class="external-link"
href="http://code.google.com/p/google-guice/"
rel="nofollow">Google Guice</a>
integration.
</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-quartz/1.2.5/shiro-quartz-1.2.5.jar"
rel="nofollow">shiro-quartz</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-quartz&lt;/artifactId&gt;
&lt;version&gt;1.2.5&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> Enables <a class="external-link"
href="http://www.quartz-scheduler.org/"
rel="nofollow">Quartz</a>-based scheduling
for Shiro native session validation.
</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-spring/1.2.5/shiro-spring-1.2.5.jar"
rel="nofollow">shiro-spring</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-spring&lt;/artifactId&gt;
&lt;version&gt;1.2.5&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> Enables <a class="external-link"
href="http://www.springsource.org/about"
rel="nofollow">Spring Framework</a>
integration.
</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/tools/shiro-tools-hasher/1.2.5/shiro-tools-hasher-1.2.5-cli.jar"
rel="nofollow">shiro-tools-hasher-cli</a></td>
<td colspan="1" rowspan="1" class="confluenceTd"><b>Not Relevant</b></td>
<td colspan="1" rowspan="1" class="confluenceTd"> A command-line program to perform hashing (MD5, SHA,
etc) for files, streams and passwords. Note that this is a command line program and not intended to
be <br clear="none">
used as a Maven/program dependency. It is intended to be downloaded and executed:
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">
java -jar shiro-tools-hasher-1.2.5-cli.jar
</pre>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<script type="text/javascript"> <!--
//Copyright(c)2005,2010 Bob Swift and other contributors. All rights reserved.
function getElementInnerText(element) {
var str = "";
for (var i = 0; i < element.childNodes.length; i++) {
switch (element.childNodes.item(i).nodeType) {
case 1:
str += getElementInnerText(element.childNodes.item(i));
break;
case 3:
str += element.childNodes.item(i).nodeValue;
break;
}
}
return str;
}
function trimSafe(v) {
return((v == undefined) || (v == null)) ? "" : v.Trim();
}
String.prototype.Trim = new Function("return this.replace(/^\\s+|\\s+$/g,'')");
function compareNumber(v1, v2) {
if (isNaN(v2)) {
if (isNaN(v1))return 0;
return-1;
}
if (v1 < v2)return-1;
if (v1 == v2)return 0;
return 1;
}
function compareSeparatedNumber(v1, v2) {
for (i = 0; (i < v1.length) && (i < v2.length); i++) {
var result = compareNumber(parseInt(v1[i]), parseInt(v2[i]));
if (result != 0)return result;
}
if (v1.length < v2.length)return-1;
if (v2.length < v1.length)return 1;
return 0;
}
function sortByCell(sortCell, firstDataRowIndex, footingCount) {
var compareFunction;
var valueParser;
compareFunction = compareNumber;
if (sortCell.columnType == "I") {
valueParser = function (value) {
return parseInt(getElementInnerText(value));
};
} else if (sortCell.columnType == "F") {
valueParser = function (value) {
return parseFloat(getElementInnerText(value));
};
} else if (sortCell.columnType == "C") {
valueParser = function (value) {
return parseFloat(getElementInnerText(value).replace(/[^\d\.\,\-]*([\d\.\,\-*]*).*/, '$1'));
};
} else if (sortCell.columnType.charAt(0) == 'D') {
if (Date.parseString) {
valueParser = function (value) {
var date = Date.parseString(trimSafe(getElementInnerText(value)), sortCell.columnType.substring(1));
return((date == null) ? NaN : date.getTime());
};
} else {
valueParser = function (value) {
return Date.parse(getElementInnerText(value));
};
}
} else if ((sortCell.columnType == "/") || (sortCell.columnType == ".") || (sortCell.columnType == "-") || (sortCell.columnType == ":")) {
compareFunction = compareSeparatedNumber;
valueParser = function (value) {
return getElementInnerText(value).split(sortCell.columnType);
};
} else if (sortCell.columnType == "A") {
valueParser = function (value) {
return 0;
};
} else {
compareFunction = function (v1, v2) {
if (v1 < v2)return-1;
if (v1 == v2)return 0;
return 1;
};
valueParser = function (value) {
return trimSafe(getElementInnerText(value)).toUpperCase();
};
}
var headRowCount = (sortCell.sortTable.tHead == null) ? 0 : sortCell.sortTable.tHead.rows.length;
firstDataRowIndex = firstDataRowIndex - headRowCount;
var table = sortCell.sortTable.tBodies[0];
var rowCount = table.rows.length - firstDataRowIndex - footingCount;
var map = Array(rowCount);
var values = Array(rowCount);
var compareTest = (sortCell.sortDescending ? -1 : 1);
sortCell.sortDescending = !sortCell.sortDescending;
var firstCell = (((sortCell.sortTable.tHead == null) || (sortCell.sortTable.tHead.rows.length == 0)) ? table.rows[0].cells[sortCell.columnIndex] : sortCell.sortTable.tHead.rows[0].cells[sortCell.columnIndex]);
if ((firstCell != null) && (firstCell.sortTable != null) && (firstCell.sortTable != undefined) && (firstCell.sortTable.sortImage != null) && (firstCell.sortTable.sortImage != undefined)) {
firstCell.sortTable.sortImage.setAttribute("src", firstCell.sortDescending ? firstCell.sortTable.sortAttributeDescending : firstCell.sortTable.sortAttributeAscending);
firstCell.appendChild(firstCell.sortTable.sortImage);
}
var i;
for (i = 0; i < rowCount; i++) {
map[i] = sortCell.sortFirstTime ? i : (rowCount - 1 - i);
var row = table.rows[i + firstDataRowIndex];
var cellValue = row.cells[sortCell.columnIndex];
values[i] = valueParser(cellValue);
}
sortCell.sortFirstTime = false;
var didSwap;
do {
didSwap = false;
for (i = 0; i < rowCount - 1; i++) {
if (compareFunction(values[map[i]], values[map[i + 1]]) == compareTest) {
saveIndex = map[i];
map[i] = map[i + 1];
map[i + 1] = saveIndex;
didSwap = true;
}
}
} while (didSwap);
var tableRows = new Array();
for (i = 0; i < rowCount + footingCount; i++) {
tableRows.push(table.rows[i + firstDataRowIndex]);
}
for (i = 0; i < rowCount + footingCount; i++) {
table.removeChild(tableRows[i]);
}
for (i = 0; i < rowCount; i++) {
var row = tableRows[map[i]];
table.appendChild(row);
if (row.autoNumber) {
row.cells[0].innerHTML = i + 1;
}
}
for (i = 0; i < footingCount; i++) {
table.appendChild(tableRows[i + rowCount]);
}
}
function enableSortOnCell(cell, columnIndex, table, columnTypes, customize) {
cell.style.cursor = "pointer";
cell.sortTable = table;
cell.sortFirstTime = true;
cell.sortDescending = false;
cell.columnIndex = (customize.autoNumber ? (columnIndex + 1) : columnIndex);
if (columnIndex == -1) {
cell.columnType = "I";
} else {
cell.columnType = (columnTypes && columnTypes[columnIndex]) ? columnTypes[columnIndex] : "S";
}
if (cell.columnType != "X") {
cell.onmouseover = function () {
this.saveTitle = this.getAttribute('title');
this.setAttribute('title', customize.sortTip + " " + ((this.saveTitle != null) && (this.saveTitle != undefined) ? this.saveTitle : ''));
};
cell.onmouseout = function () {
this.setAttribute('title', this.saveTitle);
};
cell.onclick = function () {
sortByCell(this, customize.firstDataRowIndex, customize.footingCount);
};
} else {
cell.columnType = cell.columnType.substring(1);
}
}
function sumColumn(table, index, firstDataRowIndex, columnType) {
var total = 0;
for (var i = firstDataRowIndex; i < table.rows.length; i++) {
var cell = table.rows[i].cells[index];
var value;
if (cell) {
if (columnType == 'C') {
value = parseFloat(getElementInnerText(cell).replace(/[^\d\.\,\-]*([\d\.\,\-*]*).*/, '$1'))
} else {
value = parseFloat(getElementInnerText(cell));
}
if (!isNaN(value)) {
total = total + value;
}
}
}
return total;
}
function appendTotalRow(table, columnTypes, firstDataRowIndex) {
var row = document.createElement('tr');
var table = table.tBodies[0];
var columnCount = (0 < table.rows.length) ? table.rows[table.rows.length - 1].cells.length : 0;
for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) {
var column = document.createElement('th');
column.className = 'confluenceTh';
column.innerHTML = (columnIndex < columnTypes.length && ((columnTypes[columnIndex] == 'I') || (columnTypes[columnIndex] == 'F') || (columnTypes[columnIndex] == 'C'))) ? sumColumn(table, columnIndex, firstDataRowIndex, columnTypes[columnIndex]) : '';
row.appendChild(column);
}
table.appendChild(row);
}
function handleRow(table, row, rowIndex, customize) {
var columnCount = row.cells.length;
for (var i = 0; i < columnCount; i++) {
if (customize.enableSorting && (rowIndex <= customize.lastClickableRow)) {
enableSortOnCell(row.cells[i], i, table, customize.columnTypes, customize);
}
if ((rowIndex == 0) && (customize.sortColumn != '') && (customize.sortCell == null) && (((i + 1).toString() == customize.sortColumn) || (trimSafe(getElementInnerText(row.cells[i])) == customize.sortColumn) || (trimSafe(row.cells[i].getAttribute('title')) == customize.sortColumn))) {
customize.sortCell = row.cells[i];
}
if (customize.firstDataRowIndex <= rowIndex) {
if ((customize.columnTypes[i] == "I") || (customize.columnTypes[i] == "F") || (customize.columnTypes[i] == "C")) {
row.cells[i].style.textAlign = "right";
}
}
if (customize.columnTypes[i] == "H") {
row.cells[i].style.display = "none";
}
if (customize.enableHeadingAttributes || (customize.firstDataRowIndex <= rowIndex)) {
if (i < customize.attrList.length) {
for (var j = 0; j < customize.attrList[i].length; j++) {
var attr = customize.attrList[i][j].Trim().split("=");
if (1 < attr.length) {
var aName = attr[0].Trim();
var aValue = attr[1].Trim();
if ((aName.toLowerCase() == "style") && (2 < aValue.length)) {
if ((aValue.charAt(0) == '"')) {
aValue = aValue.substring(1, aValue.length - 1);
}
row.cells[i].style.cssText = aValue;
} else {
row.cells[i].setAttribute(aName, aValue);
}
}
}
}
}
}
if (customize.autoNumber) {
var column = document.createElement(!customize.autoNumberSort || (rowIndex < customize.firstDataRowIndex) ? 'th' : 'td');
column.className = (!customize.autoNumberSort || (rowIndex < customize.firstDataRowIndex) ? 'confluenceTh' : 'confluenceTd');
column.innerHTML = ((rowIndex < customize.firstDataRowIndex) || (customize.totalRowCount - customize.firstDataRowIndex - customize.footingCount < rowIndex) ? '' : customize.dataRowCount++);
column.setAttribute('align', 'right');
row.autoNumber = !customize.autoNumberSort;
row.insertBefore(column, row.cells[0]);
if (customize.enableSorting && customize.autoNumberSort && (rowIndex <= customize.lastClickableRow)) {
enableSortOnCell(column, -1, table, null, customize);
}
}
if ((customize.highlightColor != "") && (customize.firstDataRowIndex <= rowIndex)) {
row.onmouseover = function () {
this.tableHighLightRowColor = this.bgColor;
this.bgColor = customize.highlightColor;
};
row.onmouseout = function () {
this.bgColor = this.tableHighLightRowColor;
this.tableHighLightRowColor = null;
};
}
}
function customizeMacroTable(tableId, columnTypes, firstDataRowIndex, highlightColor, enableSorting, sortTip, sortColumn, sortDescending, autoNumber, autoNumberSort, enableHeadingAttributes, footingCount, autoTotal, iconLocation) {
var customize = new Object;
customize.columnTypes = columnTypes;
customize.firstDataRowIndex = firstDataRowIndex;
customize.highlightColor = highlightColor;
customize.enableSorting = enableSorting;
customize.sortTip = sortTip;
customize.sortColumn = sortColumn;
customize.sortDescending = sortDescending;
customize.autoNumber = autoNumber;
customize.autoNumberSort = autoNumberSort;
customize.enableHeadingAttributes = enableHeadingAttributes;
customize.footingCount = footingCount;
customize.autoTotal = autoTotal;
customize.iconLocation = iconLocation;
var table = (typeof(tableId) == "string") ? document.getElementById(tableId) : null;
if (table) {
if (customize.autoTotal) {
appendTotalRow(table, customize.columnTypes, customize.firstDataRowIndex);
customize.footingCount++;
}
if (customize.iconLocation != "") {
table.sortAttributeAscending = contextPath + customize.iconLocation + "down.gif";
table.sortAttributeDescending = contextPath + customize.iconLocation + "up.gif";
table.sortImage = document.createElement("IMG");
}
customize.lastClickableRow = customize.firstDataRowIndex - 1;
if (customize.lastClickableRow < 0) {
customize.lastClickableRow = 0;
}
customize.sortCell = null;
customize.dataRowCount = 1;
var colAttrs = columnAttributes.split(",");
customize.attrList = Array(colAttrs.length);
for (var i = 0; i < colAttrs.length; i++) {
customize.attrList[i] = colAttrs[i].Trim().split(";;");
}
var rowIndex = 0;
var headRowCount = (table.tHead == null) ? 0 : table.tHead.rows.length;
var footRowCount = (table.tFoot == null) ? 0 : table.tFoot.rows.length;
var bodyRowCount = table.tBodies[0].rows.length;
customize.totalRowCount = headRowCount + footRowCount + bodyRowCount;
for (var i = 0; i < headRowCount; i++) {
var row = table.tHead.rows[i];
handleRow(table, row, rowIndex, customize);
rowIndex++;
}
for (var i = 0; i < bodyRowCount; i++) {
var row = table.tBodies[0].rows[i];
handleRow(table, row, rowIndex, customize);
rowIndex++;
}
for (var i = 0; i < footRowCount; i++) {
var row = table.tFoot.rows[i];
handleRow(table, row, rowIndex, customize);
rowIndex++;
}
if (customize.sortCell != null) {
customize.sortCell.sortDescending = customize.sortDescending;
sortByCell(customize.sortCell, customize.firstDataRowIndex, customize.footingCount);
}
}
return table;
}
var columnTypes = ['S'];
var columnAttributes = 'style=&quot;white-space:nowrap;&quot;,,';
customizeMacroTable('TBL1365578679386', columnTypes, 1, 'lightgoldenrodyellow', true, 'Click to sort', '', false, false, false, true, 0, false, '');
//-->
</script>
<h3><a name="latestSource"></a>1.2.5 Source Code Distribution</h3>
<p>The source bundle requires JDK 1.6 and Maven 3.0.3+ to build:</p>
<p><a class="external-link" href="http://www.apache.org/dyn/closer.cgi/shiro/1.2.5/shiro-root-1.2.5-source-release.zip">zip</a>
(<a class="external-link"
href="http://www.apache.org/dyn/closer.cgi/shiro/1.2.5/shiro-root-1.2.5-source-release.zip.asc">pgp</a>, <a
class="external-link"
href="http://www.apache.org/dyn/closer.cgi/shiro/1.2.5/shiro-root-1.2.5-source-release.zip.md5">md5</a>, <a
class="external-link"
href="http://www.apache.org/dyn/closer.cgi/shiro/1.2.5/shiro-root-1.2.5-source-release.zip.sha1">sha1</a>)
</p>
<h3><a name="latestGit"></a>1.2.5 Git Source repository</h3>
<p>The source can be cloned anonymously from Git with this command:</p>
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">
git clone https:<span class="code-comment">//github.com/apache/shiro.git</span>
git checkout shiro-root-1.2.5 -b shiro-root-1.2.5
</pre>
</div>
</div>
<h2><a name="previous"></a>Previous Releases</h2>
<h3><a name="1.1.0"></a>1.1.0</h3>
<h4><a name="1.1.0Binary"></a>1.1.0 Binary Distribution</h4>
<p>Associated documentation can be found <a href="documentation.html" title="Documentation">here</a></p>
<p>To download the files directly as one .jar file just click the link in the "Artifact" column. If you would like
acquire Shiro through Maven, then please use the markup listed under "Maven Usage"</p>
<p>
</p>
<div class="table-wrap">
<table class="confluenceTable" id="TBL1365578679388">
<tbody>
<tr>
<th colspan="1" rowspan="1" class="confluenceTh"> Artifact</th>
<th colspan="1" rowspan="1" class="confluenceTh"> Maven Usage</th>
<th colspan="1" rowspan="1" class="confluenceTh"> Notes</th>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-all/1.1.0/shiro-all-1.1.0.jar"
rel="nofollow">shiro-all</a></td>
<td colspan="1" rowspan="1" class="confluenceTd"><b>Not Recommended</b></td>
<td colspan="1" rowspan="1" class="confluenceTd"> Includes all binary functionality for Shiro (without
dependencies), useful in certain build environments (e.g. Ant). However, this is <b>NOT</b>
recommended in Maven builds as it does not retain correct dependency metadata, which can lead to
Maven working incorrectly. For Maven builds, it is <b>highly</b> recommended to specify individual
modules listed below as you require them.
</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-core/1.1.0/shiro-core-1.1.0.jar"
rel="nofollow">shiro-core</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-core&lt;/artifactId&gt;
&lt;version&gt;1.1.0&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> Required in all environments. <a class="external-link"
href="http://slf4j.org/"
rel="nofollow">Slf4j</a>'s
<tt>slf4j-api</tt> jar and one of its binding jars is required. <tt>commons-beanutils</tt> is
required only if using INI config.
</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-web/1.1.0/shiro-web-1.1.0.jar"
rel="nofollow">shiro-web</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-web&lt;/artifactId&gt;
&lt;version&gt;1.1.0&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> Enables support for web-based applications.</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-aspectj/1.1.0/shiro-aspectj-1.1.0.jar"
rel="nofollow">shiro-aspectj</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-aspectj&lt;/artifactId&gt;
&lt;version&gt;1.1.0&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> Enables <a class="external-link"
href="http://www.eclipse.org/aspectj/"
rel="nofollow">AspectJ</a> support for
Shiro AOP and Annotations.
</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-ehcache/1.1.0/shiro-ehcache-1.1.0.jar"
rel="nofollow">shiro-ehcache</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-ehcache&lt;/artifactId&gt;
&lt;version&gt;1.1.0&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> Enables <a class="external-link"
href="http://ehcache.org" rel="nofollow">Ehcache</a>-based
famework caching.
</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-quartz/1.1.0/shiro-quartz-1.1.0.jar"
rel="nofollow">shiro-quartz</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-quartz&lt;/artifactId&gt;
&lt;version&gt;1.1.0&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> Enables <a class="external-link"
href="http://www.quartz-scheduler.org/"
rel="nofollow">Quartz</a>-based scheduling
for Shiro native session validation.
</td>
</tr>
<tr>
<td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://repo1.maven.org/maven2/org/apache/shiro/shiro-spring/1.1.0/shiro-spring-1.1.0.jar"
rel="nofollow">shiro-spring</a></td>
<td colspan="1" rowspan="1" class="confluenceTd">
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">&lt;dependency&gt;
&lt;groupId&gt;org.apache.shiro&lt;/groupId&gt;
&lt;artifactId&gt;shiro-spring&lt;/artifactId&gt;
&lt;version&gt;1.1.0&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div>
</td>
<td colspan="1" rowspan="1" class="confluenceTd"> Enables <a class="external-link"
href="http://www.springsource.org/about"
rel="nofollow">Spring Framework</a>
integration.
</td>
</tr>
</tbody>
</table>
</div>
<script type="text/javascript"> <!--
var columnTypes = ['S'];
var columnAttributes = 'style=&quot;white-space:nowrap;&quot;,,';
customizeMacroTable('TBL1365578679388', columnTypes, 1, 'lightgoldenrodyellow', true, 'Click to sort', '', false, false, false, true, 0, false, '');
//-->
</script>
<h4><a name="1.1.0Source"></a>1.1.0 Source Code Distribution</h4>
<p>The 1.1.0 source bundle requires JDK 1.5+ and Maven 2.2+ to build:</p>
<p><a class="external-link"
href="http://archive.apache.org/dist/shiro/1.1.0/shiro-root-1.1.0-source-release.zip">zip</a> (<a
class="external-link" href="http://archive.apache.org/dist/shiro/1.1.0/shiro-root-1.1.0-source-release.zip.asc">pgp</a>,
<a class="external-link" href="http://archive.apache.org/dist/shiro/1.1.0/shiro-root-1.1.0-source-release.zip.md5">md5</a>,
<a class="external-link" href="http://archive.apache.org/dist/shiro/1.1.0/shiro-root-1.1.0-source-release.zip.sha1">sha1</a>)
</p>
<h4><a name="1.1.0Git"></a>1.1.0 Git Source repository</h4>
<p>The source can be cloned anonymously from Git with this command:</p>
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">
git clone https:<span class="code-comment">//github.com/apache/shiro.git</span>
git checkout shiro-root-1.1.0 -b shiro-root-1.1.0
</pre>
</div>
</div>