...
Since
...
we
...
are
...
using
...
Nexus
...
for
...
releases
...
the
...
release
...
process
...
is
...
as
...
follows
...
(see
...
also
...
http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven
...
).
...
0.
...
Verify
...
Your
...
Maven
...
Settings
...
Several
...
things
...
need
...
to
...
be
...
correctly
...
configured
...
in
...
your
...
'settings.xml'
...
file
...
located
...
at
...
'~/.m2/settings.xml'
...
.
...
Here's
...
a
...
sample
...
file:
No Format |
---|
} <settings> <servers> <!-- To publish a snapshot --> <server> <id>apache.snapshots.https</id> <username>[Your Apache ID]</username> <password>[Your Apache Password]</password> </server> <!-- To stage a release --> <server> <id>apache.releases.https</id> <username>[Your Apache ID]</username> <password>[Your Apache Password]</password> </server> </servers> <profiles> <profile> <id>apache-release</id> <properties> <!-- To sign a release --> <gpg.keyname>[Your Code Signing Key ID]</gpg.keyname> <gpg.passphrase>[Your Code Signing Key Password]</gpg.passphrase> </properties> </profile> </profiles> </settings> {noformat} h3. |
1.
...
Test
...
the
...
Project
No Format |
---|
} $ mvn release:prepare -DdryRun=true {noformat} |
Be
...
aware
...
that
...
this
...
phase
...
will
...
ask
...
you
...
about
...
the
...
release
...
version
...
of
...
Studio
...
modules.
...
We
...
use
...
a
...
release
...
number
...
scheme
...
that
...
combines
...
a
...
version
...
number
...
and
...
the
...
date
...
of
...
the
...
release:
No Format |
---|
} [Version using 'X.Y.Z' format].v[Date using 'YYYYMMDD' format] {noformat} |
An
...
example
...
of
...
this
...
release
...
number
...
scheme
...
is
...
'2.0.0.v20120111'
...
(notice
...
the
...
'.v'
...
string
...
between
...
the
...
version
...
and
...
the
...
date).
...
2.
...
Deploy
...
a
...
Snapshot
No Format |
---|
} $ mvn deploy {noformat} |
This
...
is
...
useful
...
to
...
verify
...
your
...
settings
...
in
...
~/.m2/settings.xml
...
(Nexus
...
password
...
and
...
GPG
...
key)
...
3.
...
Prepare
...
the
...
Release
...
First,
...
clean
...
the
...
previous
...
test
...
release
...
attempt
...
with:
No Format |
---|
} $ mvn release:clean {noformat} |
Next,
...
edit
...
the
...
root
...
'pom.xml'
...
file
...
to
...
comment
...
the
...
'repository'
...
and
...
'application'
...
profiles,
...
as
...
we
...
don't
...
want
...
these
...
modules
...
(and
...
their
...
sub-modules)
...
to
...
be
...
released
...
in
...
the
...
Maven
...
repository.
...
Also,
...
edit
...
the
...
'pom.xml'
...
file
...
of
...
the
...
'Apache
...
Directory
...
Studio
...
Libraries
...
Plugins'
...
module
...
and
...
remove
...
the
...
code
...
related
...
to
...
skipping
...
the
...
deployment
...
of
...
3rd
...
party
...
plugins:
No Format |
---|
} <build> <plugins> <!-- Skip deployment of 3rd party plugins. This causes problems when deploying snapshots because the 3rd party plugins don't have a snapshot version. --> <plugin> <artifactId>maven-deploy-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build> {noformat} |
Then,
...
prepare
...
the
...
release
...
with:
No Format |
---|
} $ mvn release:prepare {noformat} |
This
...
creates
...
a
...
tag
...
here:
...
http://svn.apache.org/viewvc/directory/studio/tags/
...
4.
...
Stage
...
the
...
Release
No Format |
---|
} $ mvn release:perform {noformat} |
This
...
deploys
...
the
...
release
...
to
...
a
...
staging
...
repository.
...
Go
...
to
...
https://repository.apache.org/index.html#stagingRepositories
...
and
...
close
...
the
...
staging
...
repository.
...
5.
...
Deploy
...
the
...
Site
No Format |
---|
} $ cd target/checkout $ mvn site-deploy {noformat} |
This
...
creates
...
and
...
deploys
...
the
...
site
...
via
...
ssh
...
to
...
people.apache.org/www/directory.apache.org/studio/gen-docs.
...
Edit
...
the
...
people.apache.org/www/directory.apache.org/studio/gen-docs/index.html
...
file
...
and
...
add
...
the
...
deployed
...
site
...
to
...
the
...
list.
...
6.
...
Generate
...
the
...
distribution
...
packages
...
Move
...
into
...
the
...
'application'
...
sub-module:
No Format |
---|
} $ cd application {noformat} |
Edit
...
the
...
'pom.xml'
...
files
...
of
...
this
...
sub-modules
...
and
...
all
...
other
...
(sub-)sub-modules
...
to
...
fix
...
the
...
parent
...
version
...
which
...
still
...
refers
...
to
...
the
...
old
...
version
...
number
...
(it
...
was
...
not
...
modified
...
during
...
the
...
release
...
process
...
because
...
the
...
'application'
...
profile
...
was
...
commented):
No Format |
---|
} $ text-editor-command pom.xml */pom.xml {noformat} |
Run
...
the
...
following
...
command
...
to
...
generate
...
all
...
the
...
distribution
...
packages:
No Format |
---|
} $ mvn clean install -Prelease {noformat} |
Now,
...
you
...
have
...
all
...
the
...
distribution
...
packages
...
available
...
at
...
'../target/release'
...
:
No Format |
---|
} $ ls -l ../target/release {noformat} h3. |
7.
...
Publish
...
Distribution
...
Packages
No Format |
---|
} $ cd ../target/release $ scp * people.apache.org:public_html/studio-<version>/ {noformat} h3. |
8.
...
Vote
...
Start
...
a
...
72h
...
vote
...
at
...
the
...
dev
...
mailing
...
list.
...
9.
...
Release
...
If
...
the
...
vote
...
succeeds
...
Studio
...
project
...
can
...
be
...
released.
...
Go
...
to
...
https://repository.apache.org/index.html#stagingRepositories
...
and
...
release
...
the
...
staging
...
repository
...
so
...
all
...
artifacts
...
are
...
published
...
to
...
Maven
...
central.
...
Move
...
the
...
distribution
...
packages
...
to
...
the
...
dist
...
SVN
...
repository:
...
https://dist.apache.org/repos/dist/release/directory/studio/dist/$
...
(version)
Move the sources releases to the dist SVN repository: https://dist.apache.org/repos/dist/release/directory/studio/$
...
...