<html>
<head>
<base href="http://cwiki.apache.org/confluence" />
<style type="text/css">
<!--
body, p, td, table, tr, .bodytext, .stepfield {
font-family: Verdana, arial, sans-serif;
font-size: 11px;
line-height: 16px;
color: #000000;
font-weight: normal;
}
#PageContent {
text-align: left;
background-color: #fff;
padding: 0px;
margin: 0px;
padding-bottom:20px;
}
/*
** when this stylesheet is used for the Tiny MCE Wysiwyg editor's edit area, we can't
** use an id=PageContent or class=wiki-content, so we must
** set the body style to that used for PageContent, and p to that used for wiki-content.
*/
body {
margin: 0px;
padding: 0px;
text-align: center;
background-color: #f0f0f0;
}
@media print {
body {
background-color: #fff;
}
}
.monospaceInput {
font:12px monospace
}
.wiki-content p, .commentblock p {
margin: 16px 0px 16px 0px;
padding: 0px;
}
.wiki-content-preview {
padding: 5px;
border-left: 1px solid #3c78b5;
border-right: 1px solid #3c78b5;
}
ul, ol {
margin-top: 2px;
margin-bottom: 2px;
padding-top: 0px;
padding-bottom: 0px;
}
pre {
padding: 0px;
margin-top: 5px;
margin-left: 15px;
margin-bottom: 5px;
margin-right: 5px;
text-align: left;
}
.helpheading {
font-weight: bold;
background-color: #D0D9BD;
border-bottom: 1px solid #3c78b5;
padding: 4px 4px 4px 4px;
margin: 0px;
margin-top: 10px;
}
.helpcontent {
padding: 4px 4px 20px 4px;
background-color: #f5f7f1;
}
.code {
border: 1px dashed #3c78b5;
font-size: 11px;
font-family: Courier;
margin: 10px;
line-height: 13px;
}
.focusedComment {
background: #ffffce;
}
.commentBox, .focusedComment {
padding: 10px;
margin: 5px 0 5px 0;
border: 1px #bbb solid;
}
.codeHeader {
background-color: #f0f0f0;
border-bottom: 1px dashed #3c78b5;
padding: 3px;
text-align: center;
}
.codeContent {
text-align: left;
background-color: #f0f0f0;
padding: 3px;
}
.preformatted {
border: 1px dashed #3c78b5;
font-size: 11px;
font-family: Courier;
margin: 10px;
line-height: 13px;
}
.preformattedHeader {
background-color: #f0f0f0;
border-bottom: 1px dashed #3c78b5;
padding: 3px;
text-align: center;
}
.preformattedContent {
background-color: #f0f0f0;
padding: 3px;
}
.panel {
border: 1px dashed #3c78b5;
margin: 10px;
margin-top: 0px;
}
.panelHeader {
background-color: #f0f0f0;
border-bottom: 1px dashed #3c78b5;
padding: 3px;
text-align: center;
}
.panelContent {
background-color: #f0f0f0;
padding: 5px;
}
.anonymousAlert {
background-color: #f0f0f0;
border: 1px dashed red;
font-size: 11px;
padding: 10px 5px 10px 5px;
margin: 4px;
line-height: 13px;
}
.lockAlert {
background-color: #f0f0f0;
width: 50%;
border: 1px dashed red;
font-size: 11px;
padding: 10px 5px 10px 5px;
margin: 4px;
line-height: 13px;
}
.code-keyword {
color: #000091;
background-color: inherit;
}
.code-object {
color: #910091;
background-color: inherit;
}
.code-quote {
color: #009100;
background-color: inherit;
}
.code-comment {
color: #808080;
background-color: inherit;
}
.code-xml .code-keyword {
color: inherit;
font-weight: bold;
}
.code-tag {
color: #000091;
background-color: inherit;
}
.breadcrumbs {
background-color: #f0f0f0;
border-color: #3c78b5;
border-width: 1px 0px 1px 0px;
border-style: solid;
font-size: 11px;
padding: 3px 0px 3px 0px;
}
.navmenu {
border: 1px solid #ccc;
}
.menuheading {
font-weight: bold;
background-color: #f0f0f0;
border-bottom: 1px solid #3c78b5;
padding: 4px 4px 2px 4px;
}
.menuitems {
padding: 4px 4px 20px 4px;
}
.rightpanel {
border-left: 1px solid #ccc;
border-bottom: 1px solid #ccc;
}
#helpheading {
text-align: left;
font-weight: bold;
background-color: #D0D9BD;
border-bottom: 1px solid #3c78b5;
padding: 4px 4px 4px 4px;
margin: 0px;
}
#helpcontent {
padding: 4px 4px 4px 4px;
background-color: #f5f7f1;
}
.helptab-unselected {
font-weight: bold;
padding: 5px;
background-color: #f5f7f1;
}
.helptab-selected {
font-weight: bold;
background-color: #D0D9BD;
padding: 5px;
}
.helptabs {
margin: 0px;
background-color: #f5f7f1;
padding: 5px;
}
.infopanel-heading {
font-weight: bold;
padding: 4px 0px 2px 0px;
}
.pagebody {
}
.pageheader {
padding: 5px 5px 5px 0px;
border-bottom: 1px solid #3c78b5;
}
.pagetitle {
font-size: 22px;
font-weight: bold;
font-family: Arial, sans-serif;
color: #003366;
}
.newpagetitle {
color: #ccc !important;
}
.steptitle {
font-size: 18px;
font-weight: bold;
font-family: Arial, sans-serif;
color: #003366;
margin-bottom: 7px;
}
.substeptitle {
font-size: 12px;
font-weight: bold;
font-family: Arial, sans-serif;
color: #003366;
margin: 2px 4px 4px 4px;
padding: 2px 4px 1px 4px;
}
.stepdesc {
font-family: Verdana, arial, sans-serif;
font-size: 11px;
line-height: 16px;
font-weight: normal;
color: #666666;
margin-top: 7px;
margin-bottom: 7px;
}
.steplabel {
font-weight: bold;
margin-right: 4px;
color: black;
float: left;
width: 15%;
text-align: right;
}
.stepfield {
background: #f0f0f0;
padding: 5px;
}
.submitButtons{
margin-top:5px;
text-align:right;
}
.formtitle {
font-size: 12px;
font-weight: bold;
font-family: Arial, sans-serif;
color: #003366;
}
.sectionbottom {
border-bottom: 1px solid #3c78b5;
}
.topRow {
border-top: 2px solid #3c78b5;
}
.tabletitle {
font-size: 14px;
font-weight: bold;
font-family: Arial, sans-serif;
padding: 3px 0px 2px 0px;
margin: 8px 4px 2px 0px;
color: #003366;
border-bottom: 2px solid #3c78b5;
}
.pagesubheading {
color: #666666;
font-size: 10px;
padding: 0px 0px 5px 0px;
}
HR {
color: 3c78b5;
height: 1;
}
A:link, A:visited, A:active, A:hover {
color: #003366;
}
h1 A:link, h1 A:visited, h1 A:active {
text-decoration: none;
}
h1 A:hover {
border-bottom: 1px dotted #003366;
}
.wiki-content > :first-child, .commentblock > :first-child {
margin-top: 3px;
}
.logocell {
padding: 10px;
}
input {
font-family: verdana, geneva, arial, sans-serif;
font-size: 11px;
color: #000000;
}
textarea, textarea.editor {
font-family: verdana, geneva, arial, sans-serif;
font-size: 11px;
color: #333333;
}
/* use logoSpaceLink instead.
.spacenametitle {
font: 21px/31px Impact, Arial, Helvetica;
font-weight: 100;
color: #999999;
margin: 0px;
}
.spacenametitle img {
margin: 0 0 -4px 0;
}
.spacenametitle a {
text-decoration: none;
color: #999999;
}
.spacenametitle a:visited {
text-decoration: none;
color: #999999;
}*/
.spacenametitle-printable {
font: 20px/25px Impact, Arial, Helvetica;
font-weight: 100;
color: #999999;
margin: 0px;
}
.spacenametitle-printable a {
text-decoration: none;
color: #999999;
}
.spacenametitle-printable a:visited {
text-decoration: none;
color: #999999;
}
.blogDate {
font-weight: bold;
text-decoration: none;
color: black;
}
.blogSurtitle {
background: #f0f0f0;
border: 1px solid #ddd;
padding: 3px;
margin: 1px 1px 10px 1px;
}
.blogHeading {
font-size: 20px;
line-height: normal;
font-weight: bold;
padding: 0px;
margin: 0px;
}
.blogHeading a {
text-decoration: none;
color: black;
}
.endsection {
align: right;
color: #666666;
margin-top: 10px;
}
.endsectionleftnav {
align: right;
color: #666666;
margin-top: 10px;
}
h1 {
font-size: 24px;
line-height: normal;
font-weight: bold;
background-color: #f0f0f0;
color: #003366;
border-bottom: 1px solid #3c78b5;
padding: 2px;
margin: 36px 0px 4px 0px;
}
h2 {
font-size: 18px;
line-height: normal;
font-weight: bold;
background-color: #f0f0f0;
border-bottom: 1px solid #3c78b5;
padding: 2px;
margin: 27px 0px 4px 0px;
}
h3 {
font-size: 14px;
line-height: normal;
font-weight: bold;
background-color: #f0f0f0;
padding: 2px;
margin: 21px 0px 4px 0px;
}
h4 {
font-size: 12px;
line-height: normal;
font-weight: bold;
background-color: #f0f0f0;
padding: 2px;
margin: 18px 0px 4px 0px;
}
h4.search {
font-size: 12px;
line-height: normal;
font-weight: normal;
background-color: #f0f0f0;
padding: 4px;
margin: 18px 0px 4px 0px;
}
h5 {
font-size: 10px;
line-height: normal;
font-weight: bold;
background-color: #f0f0f0;
padding: 2px;
margin: 14px 0px 4px 0px;
}
h6 {
font-size: 8px;
line-height: normal;
font-weight: bold;
background-color: #f0f0f0;
padding: 2px;
margin: 14px 0px 4px 0px;
}
.smallfont {
font-size: 10px;
}
.descfont {
font-size: 10px;
color: #666666;
}
.smallerfont {
font-size: 9px;
}
.smalltext {
color: #666666;
font-size: 10px;
}
.smalltext a {
color: #666666;
}
.smalltext-blue {
color: #3c78b5;
font-size: 10px;
}
.surtitle {
margin-left: 1px;
margin-bottom: 5px;
font-size: 14px;
color: #666666;
}
/* css hack found here: http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */
.navItemOver { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #003366; cursor: hand; voice-family: '\'}\''; voice-family:inherit; cursor: pointer;}
.navItemOver a { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:visited { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:hover { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItem { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; }
.navItem a { color: #ffffff; text-decoration: none; }
.navItem a:hover { color: #ffffff; text-decoration: none; }
.navItem a:visited { color: #ffffff; text-decoration: none; }
div.padded { padding: 4px; }
div.thickPadded { padding: 10px; }
h3.macrolibrariestitle {
margin: 0px 0px 0px 0px;
}
div.centered { text-align: center; margin: 10px; }
div.centered table {margin: 0px auto; text-align: left; }
.tableview table {
margin: 0;
}
.tableview th {
text-align: left;
color: #003366;
font-size: 12px;
padding: 5px 0px 0px 5px;
border-bottom: 2px solid #3c78b5;
}
.tableview td {
text-align: left;
border-color: #ccc;
border-width: 0px 0px 1px 0px;
border-style: solid;
margin: 0;
padding: 4px 10px 4px 5px;
}
.grid {
margin: 2px 0px 5px 0px;
border-collapse: collapse;
}
.grid th {
border: 1px solid #ccc;
padding: 2px 4px 2px 4px;
background: #f0f0f0;
text-align: center;
}
.grid td {
border: 1px solid #ccc;
padding: 3px 4px 3px 4px;
}
.gridHover {
background-color: #f9f9f9;
}
td.infocell {
background-color: #f0f0f0;
}
.label {
font-weight: bold;
color: #003366;
}
label {
font-weight: bold;
color: #003366;
}
.error {
background-color: #fcc;
}
.errorBox {
background-color: #fcc;
border: 1px solid #c00;
padding: 5px;
margin: 5px;
}
.errorMessage {
color: #c00;
}
.success {
background-color: #dfd;
}
.successBox {
background-color: #dfd;
border: 1px solid #090;
padding: 5px;
margin-top:5px;
margin-bottom:5px;
}
blockquote {
padding-left: 10px;
padding-right: 10px;
margin-left: 5px;
margin-right: 0px;
border-left: 1px solid #3c78b5;
}
table.confluenceTable
{
margin: 5px;
border-collapse: collapse;
}
/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable td.confluenceTd
{
border-width: 1px;
border-style: solid;
border-color: #ccc;
padding: 3px 4px 3px 4px;
}
/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable th.confluenceTh
{
border-width: 1px;
border-style: solid;
border-color: #ccc;
padding: 3px 4px 3px 4px;
background-color: #f0f0f0;
text-align: center;
}
td.confluenceTd
{
border-width: 1px;
border-style: solid;
border-color: #ccc;
padding: 3px 4px 3px 4px;
}
th.confluenceTh
{
border-width: 1px;
border-style: solid;
border-color: #ccc;
padding: 3px 4px 3px 4px;
background-color: #f0f0f0;
text-align: center;
}
DIV.small {
font-size: 9px;
}
H1.pagename {
margin-top: 0px;
}
IMG.inline {}
.loginform {
margin: 5px;
border: 1px solid #ccc;
}
/* The text how the "This is a preview" comment should be shown. */
.previewnote { text-align: center;
font-size: 11px;
color: red; }
/* How the preview content should be shown */
.previewcontent { background: #E0E0E0; }
/* How the system messages should be shown (DisplayMessage.jsp) */
.messagecontent { background: #E0E0E0; }
/* How the "This page has been modified..." -comment should be shown. */
.conflictnote { }
.createlink {
color: maroon;
}
a.createlink {
color: maroon;
}
.templateparameter {
font-size: 9px;
color: darkblue;
}
.diffadded {
background: #ddffdd;
padding: 1px 1px 1px 4px;
border-left: 4px solid darkgreen;
}
.diffdeleted {
color: #999;
background: #ffdddd;
padding: 1px 1px 1px 4px;
border-left: 4px solid darkred;
}
.diffnochange {
padding: 1px 1px 1px 4px;
border-left: 4px solid lightgrey;
}
.differror {
background: brown;
}
.diff {
font-family: lucida console, courier new, fixed-width;
font-size: 12px;
line-height: 14px;
}
.diffaddedchars {
background-color:#99ff99;
font-weight:bolder;
}
.diffremovedchars {
background-color:#ff9999;
text-decoration: line-through;
font-weight:bolder;
}
.greybackground {
background: #f0f0f0
}
.greybox {
border: 1px solid #ddd;
padding: 3px;
margin: 1px 1px 10px 1px;
}
.borderedGreyBox {
border: 1px solid #cccccc;
background-color: #f0f0f0;
padding: 10px;
}
.greyboxfilled {
border: 1px solid #ddd;
background: #f0f0f0;
padding: 3px;
margin: 1px 1px 10px 1px;
}
.navBackgroundBox {
padding: 5px 5px 5px 5px;
font-size: 22px;
font-weight: bold;
font-family: Arial, sans-serif;
color: white;
background: #3c78b5;
text-decoration: none;
}
.previewBoxTop {
background-color: #f0f0f0;
border-width: 1px 1px 0px 1px;
border-style: solid;
border-color: #3c78b5;
padding: 5px;
margin: 5px 0px 0px 0px;
text-align: center;
}
.previewContent {
background-color: #fff;
border-color: #3c78b5;
border-width: 0px 1px 0px 1px;
border-style: solid;
padding: 10px;
margin: 0px;
}
.previewBoxBottom {
background-color: #f0f0f0;
border-width: 0px 1px 1px 1px;
border-style: solid;
border-color: #3c78b5;
padding: 5px;
margin: 0px 0px 5px 0px;
text-align: center;
}
.functionbox {
background-color: #f0f0f0;
border: 1px solid #3c78b5;
padding: 3px;
margin: 1px 1px 10px 1px;
}
.functionbox-greyborder {
background-color: #f0f0f0;
border: 1px solid #ddd;
padding: 3px;
margin: 1px 1px 10px 1px;
}
.search-highlight {
background-color: #ffffcc;
}
/* normal (white) background */
.rowNormal {
background-color: #ffffff;
}
/* alternate (pale yellow) background */
.rowAlternate {
background-color: #f7f7f7;
}
/* used in the list attachments table */
.rowAlternateNoBottomColor {
background-color: #f7f7f7;
}
.rowAlternateNoBottomNoColor {
}
.rowAlternateNoBottomColor td {
border-bottom: 0px;
}
.rowAlternateNoBottomNoColor td {
border-bottom: 0px;
}
/* row highlight (grey) background */
.rowHighlight {
background-color: #f0f0f0;
}
TD.greenbar {FONT-SIZE: 2px; BACKGROUND: #00df00; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.redbar {FONT-SIZE: 2px; BACKGROUND: #df0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.darkredbar {FONT-SIZE: 2px; BACKGROUND: #af0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TR.testpassed {FONT-SIZE: 2px; BACKGROUND: #ddffdd; PADDING: 0px; }
TR.testfailed {FONT-SIZE: 2px; BACKGROUND: #ffdddd; PADDING: 0px; }
.toolbar {
margin: 0px;
border-collapse: collapse;
}
.toolbar td {
border: 1px solid #ccc;
padding: 2px 2px 2px 2px;
color: #ccc;
}
td.noformatting {
border-width: 0px;
border-style: none;
text-align: center;
padding: 0px;
}
.commentblock {
margin: 12px 0 12px 0;
}
/*
* Divs displaying the license information, if necessary.
*/
.license-eval, .license-none, .license-nonprofit {
border-top: 1px solid #bbbbbb;
text-align: center;
font-size: 10px;
font-family: Verdana, Arial, Helvetica, sans-serif;
}
.license-eval, .license-none {
background-color: #ffcccc;
}
.license-eval b, .license-none b {
color: #990000
}
.license-nonprofit {
background-color: #ffffff;
}
/*
* The shadow at the bottom of the page between the main content and the
* "powered by" section.
*/
.bottomshadow {
height: 12px;
background-image: url("$req.contextPath/images/border/border_bottom.gif");
background-repeat: repeat-x;
}
/*
* Styling of the operations box
*/
.navmenu .operations li, .navmenu .operations ul {
list-style: none;
margin-left: 0;
padding-left: 0;
}
.navmenu .operations ul {
margin-bottom: 9px;
}
.navmenu .label {
font-weight: inherit;
}
/*
* Styling of ops as a toolbar
*/
.toolbar div {
display: none;
}
.toolbar .label {
display: none;
}
.toolbar .operations {
display: block;
}
.toolbar .operations ul {
display: inline;
list-style: none;
margin-left: 10px;
padding-left: 0;
}
.toolbar .operations li {
list-style: none;
display: inline;
}
/* list page navigational tabs */
#foldertab {
padding: 3px 0px 3px 8px;
margin-left: 0;
border-bottom: 1px solid #3c78b5;
font: bold 11px Verdana, sans-serif;
}
#foldertab li {
list-style: none;
margin: 0;
display: inline;
}
#foldertab li a {
padding: 3px 0.5em;
margin-left: 3px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
text-decoration: none;
}
#foldertab li a:link { color: #ffffff; }
#foldertab li a:visited { color: #ffffff; }
#foldertab li a:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}
#foldertab li a.current {
background: white;
border-bottom: 1px solid white;
color: black;
}
#foldertab li a.current:link { color: black; }
#foldertab li a.current:visited { color: black; }
#foldertab li a.current:hover {
background: white;
border-bottom: 1px solid white;
color: black;
}
/* alphabet list */
ul#squaretab {
margin-left: 0;
padding-left: 0;
white-space: nowrap;
font: bold 8px Verdana, sans-serif;
}
#squaretab li {
display: inline;
list-style-type: none;
}
#squaretab a {
padding: 2px 6px;
border: 1px solid #3c78b5;
}
#squaretab a:link, #squaretab a:visited {
color: #fff;
background-color: #3c78b5;
text-decoration: none;
}
#squaretab a:hover {
color: #ffffff;
background-color: #003366;
border-color: #003366;
text-decoration: none;
}
#squaretab li a#current {
background: white;
color: black;
}
.blogcalendar * {
font-family:verdana, arial, sans-serif;
font-size:x-small;
font-weight:normal;
line-height:140%;
padding:2px;
}
table.blogcalendar {
border: 1px solid #3c78b5;
}
.blogcalendar th.calendarhead, a.calendarhead {
font-size:x-small;
font-weight:bold;
padding:2px;
text-transform:uppercase;
background-color: #3c78b5;
color: #ffffff;
letter-spacing: .3em;
text-transform: uppercase;
}
.calendarhead:visited {color: white;}
.calendarhead:active {color: white;}
.calendarhead:hover {color: white;}
.blogcalendar th {
font-size:x-small;
font-weight:bold;
padding:2px;
background-color:#f0f0f0;
}
.blogcalendar td {
font-size:x-small;
font-weight:normal;
}
.searchGroup { padding: 0 0 10px 0; background: #f0f0f0; }
.searchGroupHeading { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; padding: 2px 4px 1px 4px; }
.searchItem { padding: 1px 4px 1px 4px; }
.searchItemSelected { padding: 1px 4px 1px 4px; font-weight: bold; background: #ddd; }
/* permissions page styles */
.permissionHeading {
border-bottom: #bbb; border-width: 0 0 1px 0; border-style: solid; font-size: 16px; text-align: left;
}
.permissionTab {
border-width: 0 0 0 1px; border-style: solid; background: #3c78b5; color: #ffffff; font-size: 10px;
}
.permissionSuperTab {
border-width: 0 0 0 1px; border-style: solid; background: #003366; color: #ffffff;
}
.permissionCell {
border-left: #bbb; border-width: 0 0 0 1px; border-style: solid;
}
/* warning panel */
.warningPanel { background: #FFFFCE; border:#F0C000 1px solid; padding: 8px; margin: 10px; }
/* alert panel */
.alertPanel { background: #FFCCCC; border:#C00 1px solid; padding: 8px; margin: 10px; }
/* info panel */
.infoPanel { background: #D8E4F1; border:#3c78b5 1px solid; padding: 8px; margin: 10px; }
/* side menu highlighting (e.g. space content screen) */
.optionPadded { padding: 2px; }
.optionSelected { background-color: #ffffcc; padding: 2px; border: 1px solid #ddd; margin: -1px; }
.optionSelected a { font-weight: bold; text-decoration: none; color: black; }
/* information macros */
.noteMacro { border-style: solid; border-width: 1px; border-color: #F0C000; background-color: #FFFFCE; text-align:left; margin-top: 5px; margin-bottom: 5px}
.warningMacro { border-style: solid; border-width: 1px; border-color: #c00; background-color: #fcc; text-align:left; margin-top: 5px; margin-bottom: 5px}
.infoMacro { border-style: solid; border-width: 1px; border-color: #3c78b5; background-color: #D8E4F1; text-align:left; margin-top: 5px; margin-bottom: 5px}
.tipMacro { border-style: solid; border-width: 1px; border-color: #090; background-color: #dfd; text-align:left; margin-top: 5px; margin-bottom: 5px}
.informationMacroPadding { padding: 5px 0 0 5px; }
table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
border: none;
}
table.sectionMacroWithBorder td.columnMacro { border-style: dashed; border-width: 1px; border-color: #cccccc;}
.pagecontent
{
padding: 10px;
text-align: left;
}
/* styles for links in the top bar */
.topBarDiv a:link {color: #ffffff;}
.topBarDiv a:visited {color: #ffffff;}
.topBarDiv a:active {color: #ffffff;}
.topBarDiv a:hover {color: #ffffff;}
.topBarDiv {color: #ffffff;}
.topBar {
background-color: #003366;
}
/* styles for extended operations */
.greyLinks a:link {color: #666666; text-decoration:underline;}
.greyLinks a:visited {color: #666666; text-decoration:underline;}
.greyLinks a:active {color: #666666; text-decoration:underline;}
.greyLinks a:hover {color: #666666; text-decoration:underline;}
.greyLinks {color: #666666; display:block; padding: 10px}
.logoSpaceLink {color: #999999; text-decoration: none}
.logoSpaceLink a:link {color: #999999; text-decoration: none}
.logoSpaceLink a:visited {color: #999999; text-decoration: none}
.logoSpaceLink a:active {color: #999999; text-decoration: none}
.logoSpaceLink a:hover {color: #003366; text-decoration: none}
/* basic panel (basicpanel.vmd) style */
.basicPanelContainer {border: 1px solid #3c78b5; margin-top: 2px; margin-bottom: 8px; width: 100%}
.basicPanelTitle {padding: 5px; margin: 0px; background-color: #f0f0f0; color: black; font-weight: bold;}
.basicPanelBody {padding: 5px; margin: 0px}
.separatorLinks a:link {color: white}
.separatorLinks a:visited {color: white}
.separatorLinks a:active {color: white}
.greynavbar {background-color: #f0f0f0; border-top: 1px solid #3c78b5; margin-top: 2px}
div.headerField {
float: left;
width: auto;
height: 100%;
}
.headerFloat {
margin-left: auto;
width: 50%;
}
.headerFloatLeft {
float: left;
margin-right: 20px;
margin-bottom: 10px;
}
#headerRow {
padding: 10px;
}
div.license-personal {
background-color: #003366;
color: #ffffff;
}
div.license-personal a {
color: #ffffff;
}
.greyFormBox {
border: 1px solid #cccccc;
padding: 5px;
}
/* IE automatically adds a margin before and after form tags. Use this style to remove that */
.marginlessForm {
margin: 0px;
}
.openPageHighlight {
background-color: #ffffcc;
padding: 2px;
border: 1px solid #ddd;
}
.editPageInsertLinks, .editPageInsertLinks a
{
color: #666666;
font-weight: bold;
font-size: 10px;
}
/* Style for label heatmap. */
.top10 a {
font-weight: bold;
font-size: 2em;
color: #003366;
}
.top25 a {
font-weight: bold;
font-size: 1.6em;
color: #003366;
}
.top50 a {
font-size: 1.4em;
color: #003366;
}
.top100 a {
font-size: 1.2em;
color: #003366;
}
.heatmap {
list-style:none;
width: 95%;
margin: 0px auto;
}
.heatmap a {
text-decoration:none;
}
.heatmap a:hover {
text-decoration:underline;
}
.heatmap li {
display: inline;
}
.minitab {
padding: 3px 0px 3px 8px;
margin-left: 0;
margin-top: 1px;
margin-bottom: 0px;
border-bottom: 1px solid #3c78b5;
font: bold 9px Verdana, sans-serif;
text-decoration: none;
float:none;
}
.selectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
background: white;
border-bottom: 1px solid white;
color: #000000;
text-decoration: none;
}
.unselectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
color: #ffffff;
text-decoration: none;
}
a.unselectedminitab:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}
a.unselectedminitab:link { color: white; }
a.unselectedminitab:visited { color: white; }
a.selectedminitab:link { color: black; }
a.selectedminitab:visited { color: black; }
.linkerror { background-color: #fcc;}
a.labelOperationLink:link {text-decoration: underline}
a.labelOperationLink:active {text-decoration: underline}
a.labelOperationLink:visited {text-decoration: underline}
a.labelOperationLink:hover {text-decoration: underline}
a.newLabel:link {background-color: #ddffdd}
a.newLabel:active {background-color: #ddffdd}
a.newLabel:visited {background-color: #ddffdd}
a.newLabel:hover {background-color: #ddffdd}
ul.square {list-style-type: square}
.inline-control-link {
background: #ffc;
font-size: 9px;
color: #666;
padding: 2px;
text-transform: uppercase;
text-decoration: none;
}
.inline-control-link a:link {text-decoration: none}
.inline-control-link a:active {text-decoration: none}
.inline-control-link a:visited {text-decoration: none}
.inline-control-link a:hover {text-decoration: none}
.inline-control-link {
background: #ffc;
font-size: 9px;
color: #666;
padding: 2px;
text-transform: uppercase;
text-decoration: none;
cursor: pointer;
}
div.auto_complete {
width: 350px;
background: #fff;
}
div.auto_complete ul {
border: 1px solid #888;
margin: 0;
padding: 0;
width: 100%;
list-style-type: none;
}
div.auto_complete ul li {
margin: 0;
padding: 3px;
}
div.auto_complete ul li.selected {
background-color: #ffb;
}
div.auto_complete ul strong.highlight {
color: #800;
margin: 0;
padding: 0;
}
/******* Edit Page Styles *******/
.toogleFormDiv{
border:1px solid #A7A6AA;
background-color:white;
padding:5px;
margin-top: 5px;
}
.toogleInfoDiv{
border:1px solid #A7A6AA;
background-color:white;
display:none;
padding:5px;
margin-top: 10px;
}
.inputSection{
margin-bottom:20px;
}
#editBox{
border:1px solid lightgray;
background-color:#F0F0F0;
}
/******* Left Navigation Theme Styles ********/
.leftnav li a {
text-decoration:none;
color:white;
margin:0px;
display:block;
padding:2px;
padding-left:5px;
background-color: #3c78b5;
border-top:1px solid #3c78b5;
}
.leftnav li a:active {color:white;}
.leftnav li a:visited {color:white;}
.leftnav li a:hover {background-color: #003366; color:white;}
/* Added by Shaun during i18n */
.replaced
{
background-color: #33CC66;
}
.topPadding
{
margin-top: 20px;
}
/* new form style */
.form-block {
padding: 6px;
}
.form-error-block {
padding: 6px;
background: #fcc;
border-top: #f0f0f0 1px solid;
border-bottom: #f0f0f0 1px solid;
margin-bottom: 6px;
padding: 0 12px 0 12px;
}
.form-element-large {
font-size: 16px;
font-weight: bold;
font-family: Arial, sans-serif;
color: #003366;
}
.form-element-small {
font-size: 12px;
font-weight: bold;
font-family: Arial, sans-serif;
color: #003366;
}
.form-header {
background: lightyellow;
border-top: #f0f0f0 1px solid;
border-bottom: #f0f0f0 1px solid;
margin-bottom: 6px;
padding: 0 12px 0 12px;
}
.form-header p, .form-block p, .form-error-block p {
line-height: normal;
margin: 12px 0 12px 0;
}
.form-example {
color: #888;
font-size: 11px;
}
.form-divider {
border-bottom: #ccc 1px solid;
margin-bottom: 6px;
}
.form-buttons {
margin-top: 6px;
border-top: #ccc 1px solid;
border-bottom: #ccc 1px solid;
background: #f0f0f0;
padding: 10px;
text-align: center;
}
.form-buttons input {
width: 100px;
}
.form-block .error {
padding: 6px;
margin-bottom: 6px;
}
-->
</style>
</head>
<body>
<div id="PageContent">
<table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%"><tr>
<td valign="top" class="pagebody">
<div class="pageheader">
<span class="pagetitle">
Page Edited :
<a href="http://cwiki.apache.org/confluence/display/openjpa">openjpa</a> :
<a href="http://cwiki.apache.org/confluence/display/openjpa/Releasing+OpenJPA">Releasing OpenJPA</a>
</span>
</div>
<p>
<a href="http://cwiki.apache.org/confluence/display/openjpa/Releasing+OpenJPA">Releasing OpenJPA</a>
has been edited by <a href="http://cwiki.apache.org/confluence/display/~mprudhom">Marc Prud'hommeaux</a>
<span class="smallfont">(Nov 10, 2006)</span>.
</p>
<p>
<a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=29127&originalVersion=9&revisedVersion=10">(View changes)</a>
</p>
<span class="label">Content:</span><br/>
<div class="greybox wiki-content"><h1><a name="ReleasingOpenJPA-MakinganOpenJPARelease"></a>Making an OpenJPA Release</h1>
<p>These instructions guide through the steps of making an official OpenJPA release.</p>
<h2><a name="ReleasingOpenJPA-Prerequisites"></a>Prerequisites</h2>
<ol>
<li>You should have read the Apache <span class="nobr"><a href="http://incubator.apache.org/guides/releasemanagement.html" title="Visit page outside Confluence" rel="nofollow">Guide To Release Management During Incubation<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
<li>You must have shell access to people.apache.org</li>
<li>You must have the following utilities installed on your local machine and available in your path:</li>
</ol>
<ul>
<li><span class="nobr"><a href="http://java.sun.com/" title="Visit page outside Confluence" rel="nofollow">JDK 1.5<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
<li><span class="nobr"><a href="http://www.openssh.com/" title="Visit page outside Confluence" rel="nofollow">ssh 2<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
<li><span class="nobr"><a href="http://maven.apache.org/" title="Visit page outside Confluence" rel="nofollow">maven 2<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
<li><span class="nobr"><a href="http://www.gnupg.org/" title="Visit page outside Confluence" rel="nofollow">gpg<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
</ul>
<h2><a name="ReleasingOpenJPA-Tasksthatneedtobeperformedforeachrelease"></a>Tasks that need to be performed for each release</h2>
<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>In the examples below, it is assumed that the current committed version of OpenJPA is <b>0.9.6-incubating-SNAPSHOT</b>, and the version of the official release will be <b>0.9.6-incubating</b></td></tr></table>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'>1</th>
<td class='confluenceTd'> Make sure the <a href="#ReleasingOpenJPA-Onetimesetup" title="One time setup on Releasing OpenJPA">One time setup</a> steps have been performed </td>
</tr>
<tr>
<th class='confluenceTh'>2</th>
<td class='confluenceTd'> Update the POMs to remove "-SNAPSHOT" from the version. If you have perl installed, you can easily do it with a single command:</td>
</tr>
<tr>
<th class='confluenceTh'> </th>
<td class='confluenceTd'><div class="code"><div class="codeContent">
<pre class="code-none">perl -pi -e 's;<version>0.9.6-incubating-SNAPSHOT</version>;<version>0.9.6-incubating</version>;g' pom.xml */pom.xml</pre>
</div></div> </td>
</tr>
<tr>
<th class='confluenceTh'>3</th>
<td class='confluenceTd'> Commit the POM changes </td>
</tr>
<tr>
<th class='confluenceTh'> </th>
<td class='confluenceTd'><div class="code"><div class="codeContent">
<pre class="code-none">svn commit -m "Updated to version 0.9.6-incubating"</pre>
</div></div></td>
</tr>
<tr>
<th class='confluenceTh'>4</th>
<td class='confluenceTd'> Perform the build with documentation and install it in the local repository (this step is required because there is a bug in Maven's javadoc generation aggregated between multiple modules):</td>
</tr>
<tr>
<th class='confluenceTh'> </th>
<td class='confluenceTd'><div class="code"><div class="codeContent">
<pre class="code-none">mvn clean install -Pdocbook-profile,sign-release</pre>
</div></div></td>
</tr>
<tr>
<th class='confluenceTh'> </th>
<td class='confluenceTd'><table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>This operation will also sign the release files with the <b>gpg</b> utility using the <username>@apache.org key. If your code signing key is under a different address, specify it by appending the following argument to the command above: -Dopenjpa.release.keyAlias=mysigningalias@somedomain.org</td></tr></table></td>
</tr>
<tr>
<th class='confluenceTh'>5</th>
<td class='confluenceTd'> Verify the signatures:</td>
</tr>
<tr>
<th class='confluenceTh'> </th>
<td class='confluenceTd'><div class="code"><div class="codeContent">
<pre class="code-none">gpg --multifile --verify openjpa-project/target/assembly/*.asc</pre>
</div></div></td>
</tr>
<tr>
<th class='confluenceTh'>6</th>
<td class='confluenceTd'> Now actually build the javadocs and perform the deploy upload:</td>
</tr>
<tr>
<th class='confluenceTh'> </th>
<td class='confluenceTd'><div class="code"><div class="codeContent">
<pre class="code-none">mvn verify deploy -Pjavadoc-profile,sign-release</pre>
</div></div></td>
</tr>
<tr>
<th class='confluenceTh'>7</th>
<td class='confluenceTd'> Tag the view with the release number:</td>
</tr>
<tr>
<th class='confluenceTh'> </th>
<td class='confluenceTd'><div class="code"><div class="codeContent">
<pre class="code-none">svn copy -m "OpenJPA Release 0.9.6-incubating"
https://svn.apache.org/repos/asf/incubator/openjpa/trunk
https://svn.apache.org/repos/asf/incubator/openjpa/tags/0.9.6-incubating</pre>
</div></div></td>
</tr>
<tr>
<th class='confluenceTh'>8</th>
<td class='confluenceTd'> Update the pom.xml files to the subsequent version with the -SNAPSHOT suffix:</td>
</tr>
<tr>
<th class='confluenceTh'> </th>
<td class='confluenceTd'><div class="code"><div class="codeContent">
<pre class="code-none">perl -pi -e "s;<version>0.9.6-incubating</version>;<version>0.9.7-incubating-SNAPSHOT</version>;g" pom.xml */pom.xml</pre>
</div></div></td>
</tr>
<tr>
<th class='confluenceTh'>9</th>
<td class='confluenceTd'> Commit the POM changes </td>
</tr>
<tr>
<th class='confluenceTh'> </th>
<td class='confluenceTd'><div class="code"><div class="codeContent">
<pre class="code-none">svn commit -m "Updated to version 0.9.7-incubating-SNAPSHOT"</pre>
</div></div></td>
</tr>
<tr>
<th class='confluenceTh'>10</th>
<td class='confluenceTd'> Start a vote for the release on the <span class="nobr"><a href="mailto:open-jpa-dev@incubator.apache.org" title="Send mail to open-jpa-dev@incubator.apache.org" rel="nofollow">open-jpa-dev@incubator.apache.org<sup><img class="rendericon" src="/confluence/images/icons/mail_small.gif" height="12" width="13" align="absmiddle" alt="" border="0"/></sup></a></span> mailing list. For an example of the mail, see <span class="nobr"><a href="http://mail-archives.apache.org/mod_mbox/incubator-open-jpa-dev/200611.mbox/%3c07C7A237-DE80-4BC5-B33D-2B8CDFEF21B7@apache.org%3e" title="Visit page outside Confluence" rel="nofollow">this archived vote<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></td>
</tr>
<tr>
<th class='confluenceTh'>11</th>
<td class='confluenceTd'> If the vote is successful after 3 days, mail <span class="nobr"><a href="mailto:general@incubator.apache.org" title="Send mail to general@incubator.apache.org" rel="nofollow">general@incubator.apache.org<sup><img class="rendericon" src="/confluence/images/icons/mail_small.gif" height="12" width="13" align="absmiddle" alt="" border="0"/></sup></a></span> starting a vote for authorization to release</td>
</tr>
<tr>
<th class='confluenceTh'>12</th>
<td class='confluenceTd'> Once that vote is successful, update the <span class="nobr"><a href="http://cwiki.apache.org/openjpa/downloads.html" title="Visit page outside Confluence" rel="nofollow">http://cwiki.apache.org/openjpa/downloads.html<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> page with information about the download</td>
</tr>
</tbody></table>
<h2><a name="ReleasingOpenJPA-Onetimesetup"></a>One time setup</h2>
<p>These setup steps only need to be performed on a particular machine once.</p>
<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>Developers using Linux workstations can skip over the references to PuTTY and Cygwin</td></tr></table>
<h3><a name="ReleasingOpenJPA-CreateandinstallaSSHkey"></a>Create and install a SSH key</h3>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'>1</th>
<td class='confluenceTd'> Install PuTTY </td>
</tr>
<tr>
<th class='confluenceTh'>2</th>
<td class='confluenceTd'> Use PuttyGen to create a SSH key (see Putty help for details) </td>
</tr>
<tr>
<th class='confluenceTh'>3</th>
<td class='confluenceTd'> Use PuTTY to ssh to people.apache.org </td>
</tr>
<tr>
<th class='confluenceTh'>4</th>
<td class='confluenceTd'> Create a ~/.ssh folder </td>
</tr>
<tr>
<th class='confluenceTh'>5</th>
<td class='confluenceTd'> <tt>pscp</tt> your SSH public key to <tt>~/authorized_keys</tt> </td>
</tr>
<tr>
<th class='confluenceTh'>6</th>
<td class='confluenceTd'> ssh to p.a.o </td>
</tr>
<tr>
<th class='confluenceTh'>7</th>
<td class='confluenceTd'> Create a <tt>~\.ssh</tt> folder and move authorized_keys there</td>
</tr>
<tr>
<th class='confluenceTh'>8</th>
<td class='confluenceTd'> Configure putty to use your private key and save the session </td>
</tr>
</tbody></table>
<h3><a name="ReleasingOpenJPA-CreateaPGPkey"></a>Create a PGP key</h3>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'>1</th>
<td class='confluenceTd'> Install cgywin, including utils/gpg </td>
</tr>
<tr>
<th class='confluenceTh'>2</th>
<td class='confluenceTd'> Generate a key with <tt>$ gpg --gen-key</tt> </td>
</tr>
<tr>
<th class='confluenceTh'>3</th>
<td class='confluenceTd'> Backup your cygwin home directory to another media </td>
</tr>
<tr>
<th class='confluenceTh'>4</th>
<td class='confluenceTd'> Add your key to <tt><span class="nobr"><a href="https://svn.apache.org/repos/asf/incubator/openjpa/site/docs/KEYS" title="Visit page outside Confluence" rel="nofollow">https://svn.apache.org/repos/asf/incubator/openjpa/site/docs/KEYS<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></tt> </td>
</tr>
</tbody></table>
<h3><a name="ReleasingOpenJPA-UpdateMavensettingsforourservers"></a>Update Maven settings for our servers</h3>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'>1</th>
<td class='confluenceTd'> Create a settings.xml under .m2 (in your Document and Settings folder in Windows) </td>
</tr>
<tr>
<td class='confluenceTd'> </td>
<td class='confluenceTd'><div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>settings.xml</b></div><div class="codeContent">
<pre class="code-xml"><settings xmlns=<span class="code-quote">"http://maven.apache.org/POM/4.0.0"</span>
<span class="code-keyword">xmlns:xsi</span>=<span class="code-quote">"http://www.w3.org/2001/XMLSchema-instance"</span>
xsi:schemaLocation=<span class="code-quote">"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"</span>>
<span class="code-tag"><servers></span>
<span class="code-tag"><server></span>
<span class="code-tag"><id></span>people.apache.org<span class="code-tag"></id></span>
<span class="code-tag"><username></span>$USERNAME<span class="code-tag"></username></span>
<span class="code-tag"><privateKey></span>$PATH_TO_PRIVATE_KEY<span class="code-tag"></privateKey></span>
<span class="code-tag"><directoryPermissions></span>775<span class="code-tag"></directoryPermissions></span>
<span class="code-tag"><filePermissions></span>644<span class="code-tag"></filePermissions></span>
<span class="code-tag"></server></span>
<span class="code-tag"></servers></span>
<span class="code-tag"></settings></span></pre>
</div></div></td>
</tr>
</tbody></table>
<h3><a name="ReleasingOpenJPA-ExposeacopyofknownhoststoMaven"></a>Expose a copy of known hosts to Maven</h3>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'>1</th>
<td class='confluenceTd'> From cygwin, ssh to people.apache.org, save the public key if prompted, and exit</td>
</tr>
<tr>
<td class='confluenceTd'> </td>
<td class='confluenceTd'> cygwin will save the known hosts to your <tt>~/.ssh</tt> folder, but the script cannot access it there (from Windows) </td>
</tr>
<tr>
<th class='confluenceTh'>2</th>
<td class='confluenceTd'> From cygwin (not Windows) create another <tt>.ssh</tt> folder at <img class="emoticon" src="/confluence/images/icons/emoticons/help_16.gif" height="16" width="16" align="absmiddle" alt="" border="0"/> </td>
</tr>
<tr>
<th class='confluenceTh'>3</th>
<td class='confluenceTd'> Copy the <tt>known_hosts</tt> file to the new <tt>.ssh</tt> folder </td>
</tr>
</tbody></table>
<h2><a name="ReleasingOpenJPA-Resources"></a>Resources</h2>
<ul>
<li>Apache <span class="nobr"><a href="http://incubator.apache.org/guides/releasemanagement.html" title="Visit page outside Confluence" rel="nofollow">Guide To Release Management During Incubation<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
<li><span class="nobr"><a href="http://apache.org/dev/release-signing.html" title="Visit page outside Confluence" rel="nofollow">Signing Releases<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
<li><span class="nobr"><a href="http://wiki.wsmoak.net/cgi-bin/wiki.pl?ReleaseSigning" title="Visit page outside Confluence" rel="nofollow">Wendy's notes on Release Signing<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
<li>Apache <span class="nobr"><a href="http://apache.org/dev/mirrors.html" title="Visit page outside Confluence" rel="nofollow">Mirroring Guidelines<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
<li>Struts <span class="nobr"><a href="http://cwiki.apache.org/WW/creating-and-signing-a-distribution.html" title="Visit page outside Confluence" rel="nofollow">Release Instructions<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> (upon which these instructions are based)</li>
</ul>
</div>
</td></tr></table></div>
<p>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td height="12" background="http://cwiki.apache.org/confluence/images/border/border_bottom.gif"><img src="http://cwiki.apache.org/confluence/images/border/spacer.gif" width="1" height="1" border="0"/></td>
</tr>
</table>
<div class="smalltext">
Powered by
<a href="http://www.atlassian.com/software/confluence/default.jsp?clicked=footer" class="smalltext">Atlassian Confluence</a>
(Version: 2.2.9 Build:#527 Sep 07, 2006)
-
<a href="http://jira.atlassian.com/secure/BrowseProject.jspa?id=10470" class="smalltext">Bug/feature request</a><br/>
<br>
<a href="http://cwiki.apache.org/confluence/users/viewnotifications.action">Unsubscribe or edit your notifications preferences</a>
</div>
</body>
</html>
|