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 release process (page edited)
Date Tue, 01 Jul 2008 20:55: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+release+process">Geronimo release process</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/GMOxPMGT/Geronimo+release+process">Geronimo release process</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~jbohn">Joe Bohn</a>
            <span class="smallfont">(Jul 01, 2008)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=78268&originalVersion=31&revisedVersion=32">(View changes)</a>
     </p>

    <span class="label">Content:</span><br/>
    <div class="greybox wiki-content"><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">Change Policy</b><br />
<p>Everyone is encouraged to update this documentation with clarifications, use of newer maven tooling, etc. Only major changes inconsistent with the spirit of this process need to be discussed on the dev list.</p></td></tr></table>

<h3><a name="Geronimoreleaseprocess-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="Geronimoreleaseprocess-releasing"></a></p>
<h2><a name="Geronimoreleaseprocess-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-java">&lt;settings&gt;
    &lt;profiles&gt;
        &lt;profile&gt;
            &lt;id&gt;release&lt;/id&gt;
            &lt;properties&gt;
                &lt;gpg.passphrase&gt;secretPhrase&lt;/gpg.passphrase&gt;
                &lt;deploy.altRepository&gt;apache.releases::<span class="code-keyword">default</span>::scp:<span class="code-comment">//people.apache.org/x1/home/[your apache id]/public_html/staging-repo/${siteId}&lt;/deploy.altRepository&gt;
</span>                &lt;staging.siteURL&gt;scp:<span class="code-comment">//people.apache.org/x1/home/[your apache id]/public_html/staging-site&lt;/staging.siteURL&gt;
</span>           &lt;/properties&gt;
        &lt;/profile&gt;
        &lt;profile&gt;
            &lt;!-- use <span class="code-keyword">for</span> local site deploy testing and local deploy testing --&gt;
            &lt;id&gt;local&lt;/id&gt;
            &lt;properties&gt;
                &lt;deploy.altRepository&gt;djencks::<span class="code-keyword">default</span>::file:<span class="code-comment">//[home directory]/staging-repo/${siteId}&lt;/deploy.altRepository&gt;
</span>                &lt;gpg.passphrase&gt;secretPhrase&lt;/gpg.passphrase&gt;
                &lt;staging.siteURL&gt;file:<span class="code-comment">//[home directory]/staging-site&lt;/staging.siteURL&gt;
</span>            &lt;/properties&gt;
        &lt;/profile&gt;
    &lt;/profiles&gt;
    
    &lt;servers&gt;
        &lt;server&gt;
            &lt;id&gt;apache.releases&lt;/id&gt;
            &lt;username&gt;[your apache id]&lt;/username&gt;
            &lt;passphrase&gt;[secret passphrase]&lt;/passphrase&gt;
            &lt;filePermissions&gt;664&lt;/filePermissions&gt;
            &lt;directoryPermissions&gt;775&lt;/directoryPermissions&gt;
        &lt;/server&gt;
        &lt;server&gt;
            &lt;id&gt;geronimo-website&lt;/id&gt;
            &lt;username&gt;[your apache id]&lt;/username&gt;
            &lt;passphrase&gt;[secret passphrase]&lt;/passphrase&gt;
            &lt;filePermissions&gt;664&lt;/filePermissions&gt;
            &lt;directoryPermissions&gt;775&lt;/directoryPermissions&gt;
        &lt;/server&gt;
    &lt;/servers&gt;
&lt;/settings&gt;</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-java">&lt;profile&gt;
            &lt;id&gt;release&lt;/id&gt;

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

                    &lt;!-- We want a source jar --&gt;
                    &lt;plugin&gt;
                        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
                        &lt;artifactId&gt;maven-source-plugin&lt;/artifactId&gt;
                        &lt;executions&gt;
                            &lt;execution&gt;
                                &lt;goals&gt;
                                    &lt;goal&gt;jar&lt;/goal&gt;
                                &lt;/goals&gt;
                            &lt;/execution&gt;
                        &lt;/executions&gt;
                    &lt;/plugin&gt;

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

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

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

<h2><a name="Geronimoreleaseprocess-ReleaseProcessforPartOfGeronimo"></a>Release Process for Part Of Geronimo</h2>

<p>1. Prepare your poms for release:<br/>
Genesis and the recommended settings.xml file above rely on the existence of some configuration in the top level pom in your project to parameterize where in your staging area the release will be located.  This makes it so you can have multiple independent releases under vote in your staging area at once, and clearly locates the maven generated site in the documentation once the release is completed.  You should only need to do this the first time these instructions are used.</p>
<div class="code"><div class="codeContent">
<pre class="code-java">&lt;properties&gt;
&lt;!-- siteId locates the staging repo and staging site via the settings.xml profiles --&gt;
    &lt;siteId&gt;plugins/directory&lt;/siteId&gt;
&lt;!--other properties your project may need --&gt;
&lt;/properties&gt;

&lt;!-- <span class="code-keyword">this</span> locates the eventual maven generated site --&gt;
&lt;url&gt;http:<span class="code-comment">//geronimo.apache.org/maven/${siteId}/${version}&lt;/url&gt;
</span>&lt;!-- <span class="code-keyword">this</span> locates the staging site <span class="code-keyword">for</span> the maven generated site --&gt;
&lt;distributionManagement&gt;
    &lt;site&gt;
        &lt;id&gt;geronimo-website&lt;/id&gt;
        &lt;url&gt;${staging.siteURL}/${siteId}/${version}&lt;/url&gt;
    &lt;/site&gt;
&lt;/distributionManagement&gt;</pre>
</div></div>
<ul>
	<li>Try out the release and look for anything strange such as incorrect target locations in the modified poms, missing licenses, etc.
<div class="preformatted"><div class="preformattedContent">
<pre>mvn release:prepare -Prelease -DdryRun=true
</pre>
</div></div></li>
	<li>Diff the original file <tt>pom.xml</tt> with the one called <tt>pom.xml.tag</tt> to see if the license or any other info has been removed. This has been known to happen if the starting &lt;project&gt; tag is not on a single line. The only things that should be different between these files are the <tt>&lt;version&gt;</tt> and <tt>&lt;scm&gt;</tt> elements. Any other changes, you must back-port yourself to the original <tt>pom.xml</tt> file and commit before proceeding with the release.</li>
	<li>Remember to do <tt>mvn release:clean</tt> before you start the real release process.<br/>
2. (optional) Publish a snapshot:</li>
</ul>


<div class="preformatted"><div class="preformattedContent">
<pre>mvn deploy
...
[INFO] [deploy:deploy]
[INFO] Retrieving previous build number from apache.snapshots
...
</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><b class="strong">Important</b><br />
<p>IMPORTANT NOTE: Be sure that the generated artifacts respect the Apache release rules : NOTICE and LICENSE files should be present in the META-INF directory within the jar. For -sources artifacts, be sure that your pom does NOT use the maven-source-plugin:2.0.3 which is broken. The recommended version at this time is 2.0.4.  All this should be automated <br/>
via the maven-remote-resources-plugin (installs legal files) and the tools-maven-plugin (checks for legal files).</p></td></tr></table>

<table cellpadding='5' width='85%' cellspacing='8px' class='tipMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>
<p>You could verify the deployment under Apache Snapshot repository.</p>

<div class="preformatted"><div class="preformattedContent">
<pre>http://people.apache.org/repo/m2-snapshot-repository/org/apache/geronimo/...
</pre>
</div></div></td></tr></table>

<p>3. Prepare the release</p>

<div class="preformatted"><div class="preformattedContent">
<pre>mvn release:prepare -Prelease
</pre>
</div></div>


<p>Preparing the release will create the new tag in SVN, automatically checking in on your behalf.  </p>

<p>4. Make a copy of the checked out project in this state in case you need to roll back the release</p>

<div class="code"><div class="codeContent">
<pre class="code-java">cd ..
cp -r trunk trunk-prepared
cd trunk</pre>
</div></div>

<p>AFAICT mvn release:rollback only works on a checkout on which mvn release:prepare has been run but not mvn release:perform.</p>

<p>5. Stage the release for a vote</p>

<div class="preformatted"><div class="preformattedContent">
<pre>mvn release:perform -Prelease
</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>If the project lists the default modules in a profile you MUST include that profile and the release profile in the command line!  For instance if the default profile id is "default" the command line would be</p>
<div class="preformatted"><div class="preformattedContent">
<pre>mvn release:perform -Pdefault,release
</pre>
</div></div></td></tr></table>

<p>6. Stage the latest documentation (if there is an actual maven generated site)</p>

<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>See the <span class="nobr"><a href="http://geronimo.apache.org/maven/genesis/1.4/config/project-config/index.html" title="Visit page outside Confluence" rel="nofollow">genesis project-config<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> site page for instructions on how to set up your project so site staging works.<br/>
Note that the -Prelease profile is needed to specify the profile in settings.xml that configures the staging location.<br/>
Build the site from the tag that release:perform checked out into target/checkout in step 5.</p></td></tr></table>

<div class="preformatted"><div class="preformattedContent">
<pre>cd target/checkout
mvn site site:deploy -Prelease
</pre>
</div></div>

<p>7. Propose a vote on the dev list with the closed issues, the issues left, the staging repository and the staging site. For instance:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>To: "Geronimo Developers List" &lt;dev@geronimo.apache.org&gt;
Subject: [VOTE] Release Geronimo xxx version yyy

Hi,
      
&lt;info about release&gt;

Staging repo:
http://people.apache.org/~YOUR_APACHE_USERNAME/staging-repo/[siteId]...

Staging site:
http://people.apache.org/~YOUR_APACHE_USERNAME/staging-site/[siteId]...

The svn location is here:
https://svn.apache.org/repos/asf/geronimo/...  

Vote open for 72 hours.

[ ] +1
[ ] +0
[ ] -1
</pre>
</div></div>

<p>Once a vote is successful, post the result to the dev list and cc the pmc.</p>

<p>In case the vote fails, rollback the release using the backup copy you made in step 4</p>

<div class="preformatted"><div class="preformattedContent">
<pre>mvn release:rollback
</pre>
</div></div>

<p>You also have to remove the tag from svn by hand.</p>

<p>8. 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.</p>

<p>Note: Current version of the stage plugin is 1.0-alpha-1. There's probably an easier way, but I added it to a pom and built to pull it down.</p>
<table cellpadding='5' width='85%' cellspacing='8px' class='warningMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>
<p>This version of the stage plugin does not work with maven 2.0.9.  Use a suitable path to maven so you run it using maven 2.0.8.  Note that the stage plugin does not use any info from the project so this should cause no problems</p></td></tr></table>
<p>Here is an example on how to use the stage plugin:</p>

<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.3 \
  -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>
<p>The version parameter is currently ignored and the entire staging repository is synced, not just the given version or the current project. It still needs to be provided, though.</p></td></tr></table>

<p>9. Deploy the current and versioned websites (if there is a reasonable maven generated site)</p>

<div class="preformatted"><div class="preformattedContent">
<pre>ssh [apacheId]@people.apache.org
chgrp -R geronimo public_html/staging-site/[siteId]
cp -r public_html/staging-site/[siteId] /www/geronimo.apache.org/maven
</pre>
</div></div>

<p>10. Review Website (if any)</p>

<p>Wait for the files to arrive at</p>

<p><span class="nobr"><a href="http://geronimo.apache.org/" title="Visit page outside Confluence" rel="nofollow">http://geronimo.apache.org/<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>...</p>

<p>11. Update the plugins page<br/>
If this is a plugin release, update the apache <tt>geronimo-plugins.xml</tt>.<br/>
PROPOSAL ON HOW TO DO THIS:</p>

<p>First, perform the release.  This process could be done as part of the release but that may be too confusing.  The important point is to build the new tag with a fresh copy of geronimo-plugins.xml.<br/>
The official <tt>geronimo-plugins.xml</tt> is located in svn under e.g. geronimo/site/trunk/docs/plugins/geronimo-2.1/geronimo-plugins.xml<br/>
copy this file to <tt>~/.m2/repository/geronimo-plugins.xml</tt><br/>
run <tt>mvn clean install</tt> on a fresh checkout of the new tag.<br/>
copy the merged geronimo-plugins.xml back your svn site checkout.<br/>
Put the apache license header back in to the merged file (the car-maven-plugin removes it)<br/>
Edit the source-repository elements in the new plugins if necessary.  They should contain </p>
<div class="code"><div class="codeContent">
<pre class="code-java">&lt;source-repository&gt;http:<span class="code-comment">//repo1.maven.org/maven2/&lt;/source-repository&gt;</span></pre>
</div></div>
<p>and most likely nothing else.<br/>
commit the svn revisions.</p>


<p>12. Update JIRA</p>

<p>Go to Admin section in JIRA and move the released version to released and make a new version.<br/>
13. Create an Announcement. For instance:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>From: YOUR_APACHE_EMAIL
To: dev@geronimo.apache.org, users@geronimo.apache.org
Subject: [ANN] Geronimo Foo Released

The Geronimo team is pleased to announce the release of the Geronimo Foo, version Y.Y

This foo (insert short description of the foo's purpose).

Release Notes - Geronimo Foo - Version Y.Y

(Copy Here Release Notes in Text Format from Jira)

Enjoy,

-The Geronimo team
</pre>
</div></div>

<table cellpadding='5' width='85%' cellspacing='8px' class='warningMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>
<p>we don't seem to have a "next board report" or a recent releases page in the wiki</p></td></tr></table>
<p>14. Add the release to the next board report, in the private subversion area. <br/>
15. Add the release to the wiki, under the Recent Releases section of the front page and on the Releases page.<br/>
16. Celebrate :o)</p>

<h3><a name="Geronimoreleaseprocess-NotesandGotchas"></a>Notes and Gotchas</h3>
<ul>
	<li>If the selection of modules for the default build is set in a default profile then more work will be necessary.  When genesis did not have the modules specified in the base pom this involved running mvn release:perform -Pdefault,release which only deploys the root, then running mvn deploy -Prelease in each of the 3 modules listed in the default profile.  For projects that are not expected to be used as parents of independently releasable projects (for instance server/trunk) including the list of modules in the release profile override should work.  Better still is just having the modules outside a profile.</li>
</ul>




<h2><a name="Geronimoreleaseprocess-Whenusingthemavenreleasepluginisimpossible%28thisshouldbealessfrequenteventasweprogress%29%3A"></a>When using the maven release plugin is impossible (this should be a less frequent event as we progress):</h2>
<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="Geronimoreleaseprocess-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.  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>1\.1\.1-SNAPSHOT</em></b>&lt;/version&gt;,<b><em>1.1.1</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>

<h3><a name="Geronimoreleaseprocess-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="Geronimoreleaseprocess-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>Create a "staging" profile in your <tt>~/.m2/settings.xml</tt>
<div class="code"><div class="codeContent">
<pre class="code-java">&lt;profile&gt;
    &lt;id&gt;staging&lt;/id&gt;
    &lt;properties&gt;
        &lt;!-- deploy.altRepository&gt;prasad::<span class="code-keyword">default</span>::scp:<span class="code-comment">//people.apache.org/x1/home/prasad/public_html/2.0-M1-rc1&lt;/deploy.altRepository --&gt;
</span>        &lt;deploy.altRepository&gt;prasad::<span class="code-keyword">default</span>::file:<span class="code-comment">//c:\cygwin\home\prasad\releases&lt;/deploy.altRepository&gt;
</span>        &lt;gpg.passphrase&gt;Your GPG Passphrase&lt;/gpg.passphrase&gt;
    &lt;/properties&gt;
&lt;/profile&gt;</pre>
</div></div></li>
	<li>Copy (or move as per situation, for eg specs) the trunk to branches 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-java">&lt;scm&gt;
     &lt;connection&gt;scm:svn:http:<span class="code-comment">//svn.apache.org/repos/asf/geronimo/specs/tags/geronimo-servlet_2.5_spec-1.1&lt;/connection&gt;
</span>     &lt;developerConnection&gt;scm:svn:https:<span class="code-comment">//svn.apache.org/repos/asf/geronimo/repos/asf/geronimo/specs/tags/geronimo-servlet_2.5_spec-1.1&lt;/developerConnection&gt;
</span>     &lt;url&gt;http:<span class="code-comment">//svn.apache.org/viewvc/geronimo/repos/asf/geronimo/specs/tags/geronimo-servlet_2.5_spec-1.1&lt;/url&gt;
</span>&lt;/scm&gt;</pre>
</div></div></li>
	<li>Build the new&nbsp;branches tree that will soon be released using the following command.
<div class="preformatted"><div class="preformattedContent">
<pre>mvn -Pdefault,staging deploy
</pre>
</div></div></li>
	<li>Go the temporary staging directory specified by <tt>deploy.altRepository</tt> element in the <em>staging</em> profile of your <tt>settings.xml</tt>. Delete all &#42;.asc.&#42; files under this directory tree. Tar the staging directory using the command
<div class="preformatted"><div class="preformattedContent">
<pre>find . -name *.asc.* | xargs rm -f
tar -zcvf release.tar.gz releases
</pre>
</div></div></li>
	<li>Copy the tar ball to a publicly accessible location. Put it for a vote. In the vote notice, please include the precise names and versions being voted on (e.g. geronimo-javamail_1.4_spec-1.1) and the svn urls to the current source and where the tag will be created.</li>
	<li>After it has been approved, untar the tar ball into the appropriate maven structure on people.apache.org under the directory /www/people.apache.org/repo/m2-ibiblio-rsync-repository. A cron job will rsync this with ibiblio and release it into the wild.
<div class="preformatted"><div class="preformattedContent">
<pre>gunzip foo.tar.gz
tar -xvf foo.tar
</pre>
</div></div>
<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>
<p>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.</p></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></li>
</ol>


<h2><a name="Geronimoreleaseprocess-ModifiedprocessusedforGeronimo2.1.1%3A"></a>Modified process used for Geronimo 2.1.1:</h2>
<p>This incorporates some aspects of the maven release process but stops short of actually using the maven release plugin.  Like the non-maven process 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="Geronimoreleaseprocess-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.  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>1\.1\.1-SNAPSHOT</em></b>&lt;/version&gt;,<b><em>1.1.1</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>

<h3><a name="Geronimoreleaseprocess-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="Geronimoreleaseprocess-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>~/.m2/settings.xml</tt> updated as specified above in <a href="#Geronimoreleaseprocess-releasing" title="releasing on Geronimo 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-java">&lt;scm&gt;
     &lt;connection&gt;scm:svn:http:<span class="code-comment">//svn.apache.org/repos/asf/geronimo/specs/tags/geronimo-servlet_2.5_spec-1.1&lt;/connection&gt;
</span>     &lt;developerConnection&gt;scm:svn:https:<span class="code-comment">//svn.apache.org/repos/asf/geronimo/repos/asf/geronimo/specs/tags/geronimo-servlet_2.5_spec-1.1&lt;/developerConnection&gt;
</span>     &lt;url&gt;http:<span class="code-comment">//svn.apache.org/viewvc/geronimo/repos/asf/geronimo/specs/tags/geronimo-servlet_2.5_spec-1.1&lt;/url&gt;
</span>&lt;/scm&gt;</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 above).  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-java">&lt;profile&gt;
          &lt;id&gt;release&lt;/id&gt;
            &lt;build&gt;
                &lt;plugins&gt;              
                    &lt;!-- We want to sign the artifact, the POM, and all attached artifacts --&gt;
                    &lt;plugin&gt;
                        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
                        &lt;artifactId&gt;maven-gpg-plugin&lt;/artifactId&gt;
                        &lt;inherited&gt;<span class="code-keyword">true</span>&lt;/inherited&gt;
                        &lt;configuration&gt;
                            &lt;passphrase&gt;${gpg.passphrase}&lt;/passphrase&gt;
                        &lt;/configuration&gt;
                        &lt;executions&gt;
                            &lt;execution&gt;
                                &lt;goals&gt;
                                    &lt;goal&gt;sign&lt;/goal&gt;
                                &lt;/goals&gt;
                            &lt;/execution&gt;
                        &lt;/executions&gt;
                    &lt;/plugin&gt;
                    &lt;!-- We want to deploy the artifact to a staging location <span class="code-keyword">for</span> perusal --&gt;
                    &lt;plugin&gt;
                        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
                        &lt;artifactId&gt;maven-deploy-plugin&lt;/artifactId&gt;
                        &lt;inherited&gt;<span class="code-keyword">true</span>&lt;/inherited&gt;
                        &lt;configuration&gt;
                            &lt;altDeploymentRepository&gt;${deploy.altRepository}&lt;/altDeploymentRepository&gt;
                            &lt;updateReleaseInfo&gt;<span class="code-keyword">true</span>&lt;/updateReleaseInfo&gt;
                        &lt;/configuration&gt;
                    &lt;/plugin&gt;
                &lt;/plugins&gt;
            &lt;/build&gt;
        &lt;/profile&gt;</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></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.1 geronimo-2.1.1-src
tar -zcvf geronimo-2.1.1.tar.gz geronimo-2.1.1-src
</pre>
</div></div></li>
	<li>Copy the tar ball 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-javamail_1.4_spec-1.1) 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.3 \
  -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>
<p>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. </p></td></tr></table>
<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>
<p>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.</p></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></li>
</ol>


<h3><a name="Geronimoreleaseprocess-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