blob: b3c4e5fdcdda6891522fb46b8233b7636fcb3ab6 [file] [log] [blame]
------
Releasing Projects
------
------
2010-02-18
------
~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements. See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership. The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License. You may obtain a copy of the License at
~~
~~ http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied. See the License for the
~~ specific language governing permissions and limitations
~~ under the License.
Releasing Projects
The release process has two steps, {{{./prepare.html}Prepare}} and {{{./perform.html}Perform}}.
[[1]] First, it prepares your project for release by doing the following:
* Checks that your project is in a "releasable" state.
* Updates the POMs for the new development version.
* Runs a test build.
* Generates a tag for the release.
* Generates the artifact to be deployed, such as a JAR file.
* Generates the site and deploys it.
* Commits the new POMs with the new development version. It will do the commit to the SCM
connection URL you specify (explained later).
[]
[[2]] Then the release management system performs the release by checking out a clean copy
of the tagged release and deploying the artifacts and site.
[]
* Modifying POM for Release
The source code control system you use must be specified in your POM file in an <<<\<scm\>>>> entry
similar to the one shown here:
+----------------------------------------------------------------------------------+
<scm>
<connection>
scm:svn:http://svn.apache.org/repos/asf/maven/components/trunk
</connection>
<developerConnection>
scm:svn:https://svn.apache.org/repos/asf/maven/components/trunk
</developerConnection>
<url>http://svn.apache.org/viewcvs.cgi/maven/components/trunk</url>
</scm>
+---------------------------------------------------------------------------------+
To determine what to enter for your connection URL (the <<<\<connection\>>>> tag) go to the link
{{http://maven.apache.org/scm/scms-overview.html}} for a list of supported SCMs and click on your
source code control system to see the appropriate syntax for your particular software.
In general the format for an SCM URL is:
<<< scm:<scm_provider><delimiter><provider_specific_part> >>>
In the example above, the <<<scm_provider>>> is <<<svn>>> (Subversion). The <<<delimiter>>> is a colon.
And the rest of the line is the <<<provider_specific_part>>>.
It is important to prepare the release just before performing the release. The reason these
processes have been separated into two steps is to allow the user to confirm that everything has been
set correctly before the actual release. If between the prepare and performing of the release there is
a change to the SCM tree, an error will occur causing the prepare process to restart.
[]
* Releasing Projects with Flat Structure
In order to release projects with flat structure in Continuum, the project must be checked out in a single directory.
You can do this by checking the "Checkout multi-module project in single directory" field when you add your Maven Two
project in Continuum. See {{{../managing_project/addProject.html}Add a Project}} for more details.
Projects with flat structures are released in the same process described above.
* Releasing projects in a distributed build
Release will happen in the Build Agent where the last build of project occurred.
To view on-going releases from different build agents, click the <<Releases>> button under the <<Distributed Builds>> menu.