geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Geronimo Project Management: Geronimo Server Release Process (page edited)
Date Sun, 31 Aug 2008 16:16:00 GMT
<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/GMOxPMGT">GMOxPMGT</a> :
            <a href="http://cwiki.apache.org/confluence/display/GMOxPMGT/Geronimo+Server+Release+Process">Geronimo Server Release Process</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/GMOxPMGT/Geronimo+Server+Release+Process">Geronimo Server Release Process</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~tedkirby">Ted Kirby</a>
            <span class="smallfont">(Aug 31, 2008)</span>.
     </p>
    <p>
      Change summary:
      <div class="greybox wiki-content"><p>add :xml to code tags for xml, so they render as xml, not the default java.</p></div>
    </p>
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=93168&originalVersion=6&revisedVersion=7">(View changes)</a>
     </p>

    <span class="label">Content:</span><br/>
    <div class="greybox wiki-content"><h3><a name="GeronimoServerReleaseProcess-Procedure"></a>Procedure</h3>

<ol>
	<li>Whenever possible, use the maven release plugin. If something doesn't work file a bug against it.</li>
	<li>Use extreme caution in creating branches as opposed to releasing from trunk. While "core" geronimo may need to keep branches, most smaller projects such as specs, plugins, components, and most likely tools should avoid the complexity of branches unless clearly necessary and agreed upon.</li>
	<li>When branches are needed, branches/x.y would be the branch for all x.y.z releases</li>
</ol>


<p>The next sections are copied from <span class="nobr"><a href="http://maven.apache.org/developers/release/releasing.html" title="Visit page outside Confluence" rel="nofollow">http://maven.apache.org/developers/release/releasing.html<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> with modifications for Geronimo.</p>

<p><a name="GeronimoServerReleaseProcess-staging"></a></p>

<h2><a name="GeronimoServerReleaseProcess-ReleasingaGeronimoProject"></a>Releasing a Geronimo Project</h2>

<p>What follows is a description of releasing a Geronimo project to a staging repository, whereupon it is scrutinized by the community, approved, and transfered to a production repository.<br/>
Prerequisite</p>

<p>Be sure that:</p>
<ul>
	<li>you have all Maven servers defined in your <tt>settings.xml</tt>. For more information, please refer to <span class="nobr"><a href="http://maven.apache.org/developers/committer-settings.html" title="Visit page outside Confluence" rel="nofollow">Maven Committer settings<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> which also apply for Geronimo committers.</li>
	<li>you have created your GPG keys. For more information, please refer to <span class="nobr"><a href="http://maven.apache.org/developers/release/pmc-gpg-keys.html" title="Visit page outside Confluence" rel="nofollow">Making GPG Keys<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.</li>
</ul>


<p>In order to release a project you must also have the following setup in your <tt>$HOME/.m2/settings.xml</tt> which is a profile that defines the staging repository.</p>

<p>Here's what your release profile might look like in your <tt>$HOME/.m2/settings.xml</tt> :</p>
<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;settings&gt;</span>
    <span class="code-tag">&lt;profiles&gt;</span>
        <span class="code-tag">&lt;profile&gt;</span>
            <span class="code-tag">&lt;id&gt;</span>release<span class="code-tag">&lt;/id&gt;</span>
            <span class="code-tag">&lt;properties&gt;</span>
                <span class="code-tag">&lt;gpg.passphrase&gt;</span>secretPhrase<span class="code-tag">&lt;/gpg.passphrase&gt;</span>
                <span class="code-tag">&lt;deploy.altRepository&gt;</span>apache.releases::default::scp://people.apache.org/x1/home/[your apache id]/public_html/staging-repo/${siteId}<span class="code-tag">&lt;/deploy.altRepository&gt;</span>
                <span class="code-tag">&lt;staging.siteURL&gt;</span>scp://people.apache.org/x1/home/[your apache id]/public_html/staging-site<span class="code-tag">&lt;/staging.siteURL&gt;</span>
           <span class="code-tag">&lt;/properties&gt;</span>
        <span class="code-tag">&lt;/profile&gt;</span>
        <span class="code-tag">&lt;profile&gt;</span>
            <span class="code-tag"><span class="code-comment">&lt;!-- use for local site deploy testing and local deploy testing --&gt;</span></span>
            <span class="code-tag">&lt;id&gt;</span>local<span class="code-tag">&lt;/id&gt;</span>
            <span class="code-tag">&lt;properties&gt;</span>
                <span class="code-tag">&lt;deploy.altRepository&gt;</span>djencks::default::file://[home directory]/staging-repo/${siteId}<span class="code-tag">&lt;/deploy.altRepository&gt;</span>
                <span class="code-tag">&lt;gpg.passphrase&gt;</span>secretPhrase<span class="code-tag">&lt;/gpg.passphrase&gt;</span>
                <span class="code-tag">&lt;staging.siteURL&gt;</span>file://[home directory]/staging-site<span class="code-tag">&lt;/staging.siteURL&gt;</span>
            <span class="code-tag">&lt;/properties&gt;</span>
        <span class="code-tag">&lt;/profile&gt;</span>
    <span class="code-tag">&lt;/profiles&gt;</span>

    <span class="code-tag">&lt;servers&gt;</span>
        <span class="code-tag">&lt;server&gt;</span>
            <span class="code-tag">&lt;id&gt;</span>apache.releases<span class="code-tag">&lt;/id&gt;</span>
            <span class="code-tag">&lt;username&gt;</span>[your apache id]<span class="code-tag">&lt;/username&gt;</span>
            <span class="code-tag">&lt;passphrase&gt;</span>[secret passphrase]<span class="code-tag">&lt;/passphrase&gt;</span>
            <span class="code-tag">&lt;filePermissions&gt;</span>664<span class="code-tag">&lt;/filePermissions&gt;</span>
            <span class="code-tag">&lt;directoryPermissions&gt;</span>775<span class="code-tag">&lt;/directoryPermissions&gt;</span>
        <span class="code-tag">&lt;/server&gt;</span>
        <span class="code-tag">&lt;server&gt;</span>
            <span class="code-tag">&lt;id&gt;</span>geronimo-website<span class="code-tag">&lt;/id&gt;</span>
            <span class="code-tag">&lt;username&gt;</span>[your apache id]<span class="code-tag">&lt;/username&gt;</span>
            <span class="code-tag">&lt;passphrase&gt;</span>[secret passphrase]<span class="code-tag">&lt;/passphrase&gt;</span>
            <span class="code-tag">&lt;filePermissions&gt;</span>664<span class="code-tag">&lt;/filePermissions&gt;</span>
            <span class="code-tag">&lt;directoryPermissions&gt;</span>775<span class="code-tag">&lt;/directoryPermissions&gt;</span>
        <span class="code-tag">&lt;/server&gt;</span>
    <span class="code-tag">&lt;/servers&gt;</span>
<span class="code-tag">&lt;/settings&gt;</span></pre>
</div></div>
<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>
<p>The server name apache.releases at the start of deploy.altRepository must correspond to the apache.releases server definition.<br/>
Also that your apache id does not start with "~".</p></td></tr></table>
<p>Everything that you need to release has (will have, actually) been configured in the genesis root pom all Geronimo projects inherit from.</p>

<p>Your project should adhere to standard trunk,branches,tags svn layout in which case no further release profile configuration should be needed.  Some slight deviation such as our specs project still works without extra configuration.  Avoid more complex layouts that require special configuration.</p>

<p>This is the base release configuration in the genesis root pom:</p>
<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;profile&gt;</span>
            <span class="code-tag">&lt;id&gt;</span>release<span class="code-tag">&lt;/id&gt;</span>

            <span class="code-tag">&lt;build&gt;</span>
                <span class="code-tag">&lt;plugins&gt;</span>

                    <span class="code-tag">&lt;plugin&gt;</span>
                        <span class="code-tag">&lt;groupId&gt;</span>org.apache.maven.plugins<span class="code-tag">&lt;/groupId&gt;</span>
                        <span class="code-tag">&lt;artifactId&gt;</span>maven-release-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
                        <span class="code-tag">&lt;configuration&gt;</span>
                            <span class="code-tag">&lt;useReleaseProfile&gt;</span>false<span class="code-tag">&lt;/useReleaseProfile&gt;</span>
                            <span class="code-tag">&lt;goals&gt;</span>deploy<span class="code-tag">&lt;/goals&gt;</span>
                            <span class="code-tag">&lt;arguments&gt;</span>-Prelease<span class="code-tag">&lt;/arguments&gt;</span>
                        <span class="code-tag">&lt;/configuration&gt;</span>
                    <span class="code-tag">&lt;/plugin&gt;</span>

                    <span class="code-tag"><span class="code-comment">&lt;!-- We want a source jar --&gt;</span></span>
                    <span class="code-tag">&lt;plugin&gt;</span>
                        <span class="code-tag">&lt;groupId&gt;</span>org.apache.maven.plugins<span class="code-tag">&lt;/groupId&gt;</span>
                        <span class="code-tag">&lt;artifactId&gt;</span>maven-source-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
                        <span class="code-tag">&lt;executions&gt;</span>
                            <span class="code-tag">&lt;execution&gt;</span>
                                <span class="code-tag">&lt;goals&gt;</span>
                                    <span class="code-tag">&lt;goal&gt;</span>jar<span class="code-tag">&lt;/goal&gt;</span>
                                <span class="code-tag">&lt;/goals&gt;</span>
                            <span class="code-tag">&lt;/execution&gt;</span>
                        <span class="code-tag">&lt;/executions&gt;</span>
                    <span class="code-tag">&lt;/plugin&gt;</span>

                    <span class="code-tag"><span class="code-comment">&lt;!-- We want to sign the artifact, the POM, and all attached artifacts --&gt;</span></span>
                    <span class="code-tag">&lt;plugin&gt;</span>
                        <span class="code-tag">&lt;groupId&gt;</span>org.apache.maven.plugins<span class="code-tag">&lt;/groupId&gt;</span>
                        <span class="code-tag">&lt;artifactId&gt;</span>maven-gpg-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
                        <span class="code-tag">&lt;inherited&gt;</span>true<span class="code-tag">&lt;/inherited&gt;</span>
                        <span class="code-tag">&lt;configuration&gt;</span>
                            <span class="code-tag">&lt;passphrase&gt;</span>${gpg.passphrase}<span class="code-tag">&lt;/passphrase&gt;</span>
                        <span class="code-tag">&lt;/configuration&gt;</span>
                        <span class="code-tag">&lt;executions&gt;</span>
                            <span class="code-tag">&lt;execution&gt;</span>
                                <span class="code-tag">&lt;goals&gt;</span>
                                    <span class="code-tag">&lt;goal&gt;</span>sign<span class="code-tag">&lt;/goal&gt;</span>
                                <span class="code-tag">&lt;/goals&gt;</span>
                            <span class="code-tag">&lt;/execution&gt;</span>
                        <span class="code-tag">&lt;/executions&gt;</span>
                    <span class="code-tag">&lt;/plugin&gt;</span>

                    <span class="code-tag"><span class="code-comment">&lt;!-- We want to deploy the artifact to a staging location for perusal --&gt;</span></span>
                    <span class="code-tag">&lt;plugin&gt;</span>
                        <span class="code-tag">&lt;groupId&gt;</span>org.apache.maven.plugins<span class="code-tag">&lt;/groupId&gt;</span>
                        <span class="code-tag">&lt;artifactId&gt;</span>maven-deploy-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
                        <span class="code-tag">&lt;inherited&gt;</span>true<span class="code-tag">&lt;/inherited&gt;</span>
                        <span class="code-tag">&lt;configuration&gt;</span>
                            <span class="code-tag">&lt;altDeploymentRepository&gt;</span>${deploy.altRepository}<span class="code-tag">&lt;/altDeploymentRepository&gt;</span>
                            <span class="code-tag">&lt;updateReleaseInfo&gt;</span>true<span class="code-tag">&lt;/updateReleaseInfo&gt;</span>
                        <span class="code-tag">&lt;/configuration&gt;</span>
                    <span class="code-tag">&lt;/plugin&gt;</span>

                    <span class="code-tag"><span class="code-comment">&lt;!-- We want the JavaDoc JAR published with the release --&gt;</span></span>
                    <span class="code-tag">&lt;plugin&gt;</span>
                        <span class="code-tag">&lt;groupId&gt;</span>org.apache.maven.plugins<span class="code-tag">&lt;/groupId&gt;</span>
                        <span class="code-tag">&lt;artifactId&gt;</span>maven-javadoc-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
                        <span class="code-tag">&lt;inherited&gt;</span>true<span class="code-tag">&lt;/inherited&gt;</span>
                        <span class="code-tag">&lt;configuration&gt;</span>
                            <span class="code-tag">&lt;source&gt;</span>1.5<span class="code-tag">&lt;/source&gt;</span>
                        <span class="code-tag">&lt;/configuration&gt;</span>
                        <span class="code-tag">&lt;executions&gt;</span>
                            <span class="code-tag">&lt;execution&gt;</span>
                                <span class="code-tag">&lt;id&gt;</span>attach-javadocs<span class="code-tag">&lt;/id&gt;</span>
                                <span class="code-tag">&lt;goals&gt;</span>
                                    <span class="code-tag">&lt;goal&gt;</span>jar<span class="code-tag">&lt;/goal&gt;</span>
                                <span class="code-tag">&lt;/goals&gt;</span>
                            <span class="code-tag">&lt;/execution&gt;</span>
                        <span class="code-tag">&lt;/executions&gt;</span>
                    <span class="code-tag">&lt;/plugin&gt;</span>
                <span class="code-tag">&lt;/plugins&gt;</span>
            <span class="code-tag">&lt;/build&gt;</span>
        <span class="code-tag">&lt;/profile&gt;</span></pre>
</div></div>

<h2><a name="GeronimoServerReleaseProcess-ReleaseProcessasusedforGeronimo2.1.x%3A"></a>Release Process as used for Geronimo 2.1.x:</h2>

<p>This incorporates some aspects of the maven release process but stops short of actually using the maven release plugin.  It utilizes a branch for the release process.</p>
<ol>
	<li>when a release is frozen, we spin off a branch with that <b>exact</b> name, as in branches/x.y.z, where z starts at zero and increments by one.</li>
	<li>at that time branches/x.y is immediately updated to version x.y.(z+1)-SNAPSHOT</li>
	<li>We cut releases from the frozen branch</li>
	<li>When a release passes final tck testing and final vote, the frozen branch is moved to tags</li>
</ol>


<h3><a name="GeronimoServerReleaseProcess-Updatingthepomsaftermakinganewbranch"></a>Updating the poms after making a new branch</h3>

<p>Once a new branch is created you will generally need to manage the version number in the poms for parent entries.  The following Perl scripts will assist in that task.  It could use some polishing but given the relatively infrequent use.</p>
<div class="panel" style="border-style: solid; "><div class="panelHeader" style="border-bottom-style: solid; "><b>Pom Version Changer</b></div><div class="panelContent">
<p>perl &#45;i.orig &#45;pe '<br/>
 $done = 0 if /&lt;?xml/;<br/>
 $inParent = 1 if not $done and /&lt;parent&gt;/;<br/>
 s,<b><em>oldVersion</em></b>&lt;/version&gt;,<b><em>newVersion</em></b>&lt;/version&gt;, if $inParent and not $done;<br/>
 $done = $inParent = 1 if /&lt;\/parent&gt;/;<br/>
 ' $(find <b><em>GeronimoDirectory</em></b> &#45;name pom.xml &#124; grep &#45;v "<b><em>GeronimoDirectory</em></b>/pom.xml")</p>
</div></div>
<p>Remember to properly escape periods in the <b><em>oldVersion</em></b>.  For instance, to change 1.1.1-SNAPSHOT to 1.1.1 you would have</p>
<div class="panel" style="border-style: solid; "><div class="panelHeader" style="border-bottom-style: solid; "><b>Example</b></div><div class="panelContent">
<p>perl &#45;i.orig &#45;pe '<br/>
 $done = 0 if /&lt;?xml/;<br/>
 $inParent = 1 if not $done and /&lt;parent&gt;/;<br/>
 s,<b><em>2\.1\.2-SNAPSHOT</em></b>&lt;/version&gt;,<b><em>2.1.2</em></b>&lt;/version&gt;, if $inParent and not $done;<br/>
 $done = $inParent = 1 if /&lt;\/parent&gt;/;<br/>
 ' $(find <b><em>GeronimoDirectory</em></b> &#45;name pom.xml &#124; grep &#45;v "<b><em>GeronimoDirectory</em></b>/pom.xml")</p>
</div></div>
<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><b class="strong">making the above script work</b><br />
<p>You must replace <b><em>GeronimoDirectory</em></b> above with the fully qualified path to the directory (using "~" will not work).<br/>
Also Note: there are references to versions outside of the pom parent entries updated by the script which will also need to be updated with the new version.</p></td></tr></table>
<p>In addition to the pom version changes there are several other places where version updates are necessary.  To be certain all have been updated you should <b>grep</b> the source for old version references to ensure that those remaining are correct.  Here is an attempt to capture other version changes necessary:</p>
<ol>
	<li>scm entried in root pom.xml</li>
	<li>assemblies/geronimo-boilerplate-minimal/src/main/underlay/etc/gsh-classworlds.conf</li>
	<li>framework/configs/geronimo-gbean-deployer/src/it/j2ee-system-2/src/test/resources/META-INF/geronimo-plugin.xml</li>
	<li>framework/configs/geronimo-gbean-deployer/src/it/j2ee-system-2/src/test/resources/META-INF/plan.xml</li>
	<li>framework/configs/geronimo-gbean-deployer/src/it/j2ee-system/src/test/resources/META-INF/geronimo-plugin.xml</li>
	<li>framework/configs/geronimo-gbean-deployer/src/it/j2ee-system/src/test/resources/META-INF/plan.xml</li>
	<li>framework/configs/geronimo-gbean-deployer/src/it/metadatageneration-2/src/test/resources/META-INF/geronimo-plugin.xml</li>
	<li>framework/configs/geronimo-gbean-deployer/src/it/metadatageneration/src/test/resources/META-INF/geronimo-plugin.xml</li>
	<li>framework/configs/plugin/src/main/plan/plan.xml</li>
	<li>framework/modules/geronimo-plugin/src/test/resources/geronimo-plugins.xml</li>
	<li>framework/modules/geronimo-upgrade/src/test/data/gbean_1.xml</li>
	<li>framework/modules/geronimo-upgrade/src/test/data/gbean_1_result.xml</li>
	<li>plugins/remote-deploy/geronimo-remote-deploy/src/main/webapp/WEB-INF/geronimo-web.xml</li>
	<li>plugins/welcome/geronimo-welcome/src/main/webapp/WEB-INF/geronimo-web.xml</li>
	<li>testsuite/webservices-testsuite/jaxrpc-tests/jaxrpc-war/src/main/webapp/WEB-INF/geronimo-web.xml</li>
</ol>


<p>In addition, there are some special version updates required in some pom.xml files beyond those addressed by the script:</p>
<ol>
	<li>assemblies/geronimo-boilerplate-minimal/pom.xml</li>
	<li>framework/configs/geronimo-gbean-deployer/src/it/j2ee-system/pom.xml</li>
	<li>framework/configs/plugin/pom.xml</li>
	<li>framework/configs/pom.xml</li>
	<li>plugins/j2ee/j2ee-deployer/pom.xml</li>
	<li>plugins/client/pom.xml</li>
	<li>plugins/corba/client-corba-yoko/pom.xml</li>
	<li>plugins/j2ee/j2ee-server/pom.xml</li>
	<li>plugins/pom.xml</li>
	<li>root pom ... pom.xml</li>
	<li>README.txt</li>
	<li>RELEASE_NOTES-*.txt</li>
</ol>


<h4><a name="GeronimoServerReleaseProcess-Updatetheongoingmaintenancebranch"></a>Update the on-going maintenance branch</h4>
<p>Make similar changes in the branch that will continue on for the next release.</p>
<ol>
	<li>Update poms to the next snapshot version</li>
	<li>Update the same files referenced above</li>
	<li>rename RELEASE_NOTES-x.y.z.txt as appropriate</li>
	<li>Some of the "special" updates required are really just applicable here (when creating a new version rather than just removing the snapshot from an existing version).  This is especially true for reference to the geronimo plugin repository (which normally named without the snapshot even when the release is still a snapshot release).</li>
</ol>


<p>In addition, there are special updates for references to release notes and the plugin website:</p>
<ol>
	<li>assemblies/geronimo-boilerplate-minimal/pom.xml</li>
	<li>framework/configs/plugin/pom.xml</li>
	<li>framework/configs/plugin/src/main/plan/plan.xml</li>
</ol>


<p>In addition, there are special updates for artifact-alias entries:</p>
<ol>
	<li>framework/configs/pom.xml</li>
	<li>plugins/client/pom.xml</li>
</ol>


<ol>
	<li>plugins/corba/client-corba-yoko/pom.xml</li>
	<li>plugins/pom.xml</li>
</ol>



<h3><a name="GeronimoServerReleaseProcess-Rationale"></a>Rationale</h3>

<p>We create a branch at freeze time for the following reasons:</p>
<ol>
	<li>it takes at least one week from freeze to ship due to voting, tck testing and potential repeats of that process (re-cut, re-certify, re-vote). There is no reason why work on x.y.z+1 needs to be delayed - only 52 weeks a year.</li>
	<li>stronger guarantee no one is updating the branch once frozen</li>
	<li>less likely that people and ci systems (continuum) will checkout and build pre-release versions of x.y.z (not x.y.z-SNAPSHOT) which would need to be removed manually and may accidentally be distributed.</li>
	<li>it is currently very difficult to roll version numbers forward, entries here and there are often missed. Far better to have branches/x.y have a few straggling old x.y.z-SNAPSHOT versions than a few overlooked x.y.z final numbers that needed to go back to SNAPSHOT - they never leave SNAPSHOT and need to be reverted back later if that process happens in the frozen branch.</li>
</ol>


<h3><a name="GeronimoServerReleaseProcess-Steps"></a>Steps</h3>

<ol>
	<li>Download and install the Gnu Privacy Guard (GPG) from <span class="nobr"><a href="http://www.gnupg.org" title="Visit page outside Confluence" rel="nofollow">http://www.gnupg.org<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. Read the documentation on that site and create a key. Have the key signed and verified by others. Submit your public key to <span class="nobr"><a href="http://pgp.mit.edu/" title="Visit page outside Confluence" rel="nofollow">http://pgp.mit.edu/<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. This is a one time process.</li>
	<li>Be sure that you have your <tt>&#126;/.m2/settings.xml</tt> updated as specified above in <a href="#GeronimoServerReleaseProcess-staging" title="staging on Geronimo Server Release Process">Releasing a Geronimo Project</a></li>
	<li>Copy (or move as per situation, for eg specs) the trunk/branch to the new branch using the following command.
<div class="preformatted"><div class="preformattedContent">
<pre>svn mv SRC-URL DEST-URL -m "Reason for this commit".
</pre>
</div></div></li>
	<li>Checkout or update this branches tree on your machine.</li>
	<li>Update the &lt;scm&gt; urls in the <tt>pom.xml</tt> to point to the final url in tags. Eg:
<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;scm&gt;</span>
     <span class="code-tag">&lt;connection&gt;</span>scm:svn:http://svn.apache.org/repos/asf/geronimo/specs/tags/geronimo-servlet_2.5_spec-1.1<span class="code-tag">&lt;/connection&gt;</span>
     <span class="code-tag">&lt;developerConnection&gt;</span>scm:svn:https://svn.apache.org/repos/asf/geronimo/repos/asf/geronimo/specs/tags/geronimo-servlet_2.5_spec-1.1<span class="code-tag">&lt;/developerConnection&gt;</span>
     <span class="code-tag">&lt;url&gt;</span>http://svn.apache.org/viewvc/geronimo/repos/asf/geronimo/specs/tags/geronimo-servlet_2.5_spec-1.1<span class="code-tag">&lt;/url&gt;</span>
<span class="code-tag">&lt;/scm&gt;</span></pre>
</div></div></li>
	<li>Add the following release profile to the root pom.xml (Note: This is a subset of the profile included in the maven release process).  This will utilize the maven gpg plugin to sign the artifacts produced and the maven deploy plugin to stage the release to your people.apache staging location but will not utilize the maven release plugin to create the tag, rename versions, etc...
<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;profile&gt;</span>
          <span class="code-tag">&lt;id&gt;</span>release<span class="code-tag">&lt;/id&gt;</span>
            <span class="code-tag">&lt;build&gt;</span>
                <span class="code-tag">&lt;plugins&gt;</span>
                    <span class="code-tag"><span class="code-comment">&lt;!-- We want to sign the artifact, the POM, and all attached artifacts --&gt;</span></span>
                    <span class="code-tag">&lt;plugin&gt;</span>
                        <span class="code-tag">&lt;groupId&gt;</span>org.apache.maven.plugins<span class="code-tag">&lt;/groupId&gt;</span>
                        <span class="code-tag">&lt;artifactId&gt;</span>maven-gpg-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
                        <span class="code-tag">&lt;inherited&gt;</span>true<span class="code-tag">&lt;/inherited&gt;</span>
                        <span class="code-tag">&lt;configuration&gt;</span>
                            <span class="code-tag">&lt;passphrase&gt;</span>${gpg.passphrase}<span class="code-tag">&lt;/passphrase&gt;</span>
                        <span class="code-tag">&lt;/configuration&gt;</span>
                        <span class="code-tag">&lt;executions&gt;</span>
                            <span class="code-tag">&lt;execution&gt;</span>
                                <span class="code-tag">&lt;goals&gt;</span>
                                    <span class="code-tag">&lt;goal&gt;</span>sign<span class="code-tag">&lt;/goal&gt;</span>
                                <span class="code-tag">&lt;/goals&gt;</span>
                            <span class="code-tag">&lt;/execution&gt;</span>
                        <span class="code-tag">&lt;/executions&gt;</span>
                    <span class="code-tag">&lt;/plugin&gt;</span>
                    <span class="code-tag"><span class="code-comment">&lt;!-- We want to deploy the artifact to a staging location for perusal --&gt;</span></span>
                    <span class="code-tag">&lt;plugin&gt;</span>
                        <span class="code-tag">&lt;groupId&gt;</span>org.apache.maven.plugins<span class="code-tag">&lt;/groupId&gt;</span>
                        <span class="code-tag">&lt;artifactId&gt;</span>maven-deploy-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
                        <span class="code-tag">&lt;inherited&gt;</span>true<span class="code-tag">&lt;/inherited&gt;</span>
                        <span class="code-tag">&lt;configuration&gt;</span>
                            <span class="code-tag">&lt;altDeploymentRepository&gt;</span>${deploy.altRepository}<span class="code-tag">&lt;/altDeploymentRepository&gt;</span>
                            <span class="code-tag">&lt;updateReleaseInfo&gt;</span>true<span class="code-tag">&lt;/updateReleaseInfo&gt;</span>
                        <span class="code-tag">&lt;/configuration&gt;</span>
                    <span class="code-tag">&lt;/plugin&gt;</span>
                <span class="code-tag">&lt;/plugins&gt;</span>
            <span class="code-tag">&lt;/build&gt;</span>
        <span class="code-tag">&lt;/profile&gt;</span></pre>
</div></div></li>
	<li>Build the new&nbsp;branches tree as you normally would to ensure that it is correct.</li>
	<li>Stage the release for a vote.<br/>
When you are ready to create a release candidate, build the  new&nbsp;branches tree that will soon be released using the following command.
<div class="preformatted"><div class="preformattedContent">
<pre>mvn -Prelease,default deploy
</pre>
</div></div>
<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>Be extremely careful with this step.  There have been times when a slight modification in the above command will result in items being deployed directly to the rsync location rather than to the staging location.<br/>
If there are issues/problems with the deploy to the staging location you may have to stage to a local repository and then scp the content to an apache staging location.</td></tr></table></li>
	<li>Export and tar/zip the source to be voted on for the release using the following commands:
<div class="preformatted"><div class="preformattedContent">
<pre>svn export https://svn.apache.org/repos/asf/geronimo/server/branches/2.1.2 geronimo-2.1.2-src
tar -zcvf geronimo-2.1.2-src.tar.gz geronimo-2.1.2-src
</pre>
</div></div>
<p>Also create a zip of the source image.</p></li>
	<li>Create a distribution directory.  It should contain the following artifacts for the vote:
	<ol>
		<li>Source tar &amp; zip</li>
		<li>All assembly images that are part of the vote.  This is bot for convenience of the voters and to serve as a distribution location once the vote is complete.</li>
		<li>Release notes, README, LICENSE, NOTICE, and DISCLAIMER</li>
	</ol>
	</li>
	<li>Create appropriate md5, sha1, and signatures (asc) for the artifacts added manually.  A script similar to this can be used to create the checksums and signature:
<div class="panel" style="border-style: solid; "><div class="panelHeader" style="border-bottom-style: solid; "><b>signDist.sh</b></div><div class="panelContent">
<p>gpg &#45;-print-md MD5 ./geronimo-2.1.2-src.tar.gz &gt; ./geronimo-2.1.2-src.tar.gz.md5<br/>
gpg &#45;-print-md MD5 ./geronimo-2.1.2-src.zip &gt; ./geronimo-2.1.2-src.zip.md5<br/>
gpg &#45;-print-md MD5 ./RELEASE_NOTES-2.1.2.txt &gt; ./RELEASE_NOTES-2.1.2.txt.md5<br/>
gpg &#45;-print-md MD5 ./README.txt &gt; ./README.txt.md5<br/>
gpg &#45;-print-md MD5 ./NOTICE.txt &gt; ./NOTICE.txt.md5<br/>
gpg &#45;-print-md MD5 ./LICENSE.txt &gt; ./LICENSE.txt.md5<br/>
gpg &#45;-print-md MD5 ./DISCLAIMER.txt &gt; ./DISCLAIMER.txt.md5<br clear="all" />
gpg &#45;-print-md SHA1 ./geronimo-2.1.2-src.tar.gz &gt; ./geronimo-2.1.2-src.tar.gz.sha1<br/>
gpg &#45;-print-md SHA1 ./geronimo-2.1.2-src.zip &gt; ./geronimo-2.1.2-src.zip.sha1<br/>
gpg &#45;-print-md SHA1 ./RELEASE_NOTES-2.1.2.txt &gt; ./RELEASE_NOTES-2.1.2.txt.sha1<br/>
gpg &#45;-print-md SHA1 ./README.txt &gt; ./README.txt.sha1<br/>
gpg &#45;-print-md SHA1 ./NOTICE.txt &gt; ./NOTICE.txt.sha1<br/>
gpg &#45;-print-md SHA1 ./LICENSE.txt &gt; ./LICENSE.txt.sha1<br/>
gpg &#45;-print-md SHA1 ./DISCLAIMER.txt &gt; ./DISCLAIMER.txt.sha1<br clear="all" />
gpg &#45;-armor &#45;-output ./geronimo-2.1.2-src.tar.gz.asc &#45;-detach-sig ./geronimo-2.1.2-src.tar.gz<br/>
gpg &#45;-armor &#45;-output ./geronimo-2.1.2-src.zip.asc &#45;-detach-sig ./geronimo-2.1.2-src.zip<br/>
gpg &#45;-armor &#45;-output ./RELEASE_NOTES-2.1.2.txt.asc &#45;-detach-sig ./RELEASE_NOTES-2.1.2.txt<br/>
gpg &#45;-armor &#45;-output ./README.txt.asc &#45;-detach-sig ./README.txt<br/>
gpg &#45;-armor &#45;-output ./NOTICE.txt.asc &#45;-detach-sig ./NOTICE.txt<br/>
gpg &#45;-armor &#45;-output ./LICENSE.txt.asc &#45;-detach-sig ./LICENSE.txt<br/>
gpg &#45;-armor &#45;-output ./DISCLAIMER.txt.asc &#45;-detach-sig ./DISCLAIMER.txt</p>
</div></div>
<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>Ensure that your public PGP key is in appropriate public locations (esp. /www/www.apache.org/dist/geronimo/KEYS on people and <span class="nobr"><a href="http://pgp.mit.edu/" title="Visit page outside Confluence" rel="nofollow">http://pgp.mit.edu/<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>) and that your pgp key has been signed by several other apache committers to create a web of trust.</td></tr></table></li>
	<li>Copy the entire distribution directory to a publicly accessible location. Put it for a vote along with the staging release you created earlier. In the vote notice, please include the precise names and versions being voted on (e.g. geronimo-jetty6-javaee5-2.1.2) and the svn urls to the current source and where the tag will be created.</li>
	<li>Copy from the staging repo to the production repo.<br/>
Once the release is deemed fit for public consumption it can be transfered to a production repository where it will be available to all users. Note: Current version of the stage plugin is 1.0-alpha-1.<br/>
Here is an example on how to use the stage plugin:
<div class="preformatted"><div class="preformattedContent">
<pre>mvn stage:copy -Dsource="http://people.apache.org/&lt;your apache id&gt;/staging-repo/&lt;siteId&gt;" \
  -Dtarget="scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository" \
  -Dversion=2.1.2 \
  -DtargetRepositoryId=apache.releases
</pre>
</div></div>
<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>The version parameter is currently ignored but specify the correct version anyway.  The entire staging repository is synced, not just the given version or the current project.</td></tr></table>
<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>Also note, this process has been known to have problems at times if a maven version other than 2.0.8 is used.</td></tr></table></li>
	<li>Copy the distribution content from the staging location to the production repo.<br/>
>From your people apache account copy the distribution content to the appropriate location under /www/www.apache.org/dist/geronimo/
<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>Ensure that the files you copy to the rsync directory have <tt>0775</tt> dir permission and a <tt>0664</tt> file permission set on them.</td></tr></table></li>
	<li>Move the branches to tags using the following command.
<div class="preformatted"><div class="preformattedContent">
<pre>svn mv SRC-URL DEST-URL -m "Reason for this commit".
</pre>
</div></div>
<p><br clear="all" />
<br clear="all" /></p></li>
	<li>Update the Geronimo site download pages with a new page for the release <span class="nobr"><a href="http://geronimo.apache.org/downloads.html" title="Visit page outside Confluence" rel="nofollow">Geronimo Downloads <sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.  Include the list JIRA for know issues by first generating a JIRA query for the release, right clicking on the XML format and saving the url to inclusion in the download page.
<br clear="all" />
<br clear="all" /></li>
	<li>Administer the <span class="nobr"><a href="https://issues.apache.org/jira/browse/GERONIMO" title="Visit page outside Confluence" rel="nofollow">GERONIMO JIRA project<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> to update the released and unreleased versions
<br clear="all" />
<br clear="all" /></li>
	<li>Update the <span class="nobr"><a href="http://geronimo.apache.org" title="Visit page outside Confluence" rel="nofollow">Geronimo Home Page<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> with a News item that a new Geronimo Server release is available
<br clear="all" />
<br clear="all" /></li>
	<li>Final step is to update the <span class="nobr"><a href="http://cwiki.apache.org/confluence/display/GMOxPMGT/Apache+Geronimo+Release+Roadmaps" title="Visit page outside Confluence" rel="nofollow">Geronimo Release Roadmaps<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> with the release date.</li>
</ol>


<h3><a name="GeronimoServerReleaseProcess-Notice"></a>Notice</h3>

<p>The original process in this document was voted on by the Geronimo community. Please formally propose all changes to dev@geronimo.apache.org.</p>

<p>See:</p>
<ol>
	<li><span class="nobr"><a href="http://marc.theaimsgroup.com/?l=geronimo-dev&amp;m=115094116905426&amp;w=4" title="Visit page outside Confluence" rel="nofollow">http://marc.theaimsgroup.com/?l=geronimo-dev&amp;m=115094116905426&amp;w=4<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></li>
</ol>


<p>Revised process using maven tools voted on in March 2008.  Only major structural changes now require votes.</p>

<p>See: (not yet in archive)</p></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>


Mime
View raw message