Apache Struts 2 Documentation > Home > Guides > Contributors Guide > Creating and Signing a Struts 2.3.x Distribution > Building Struts 2 - Normal release |
svn co https://svn.apache.org/repos/asf/struts/struts2/trunk STRUTS_#_#_#
Tag the release by using the "release:prepare" goal of Maven:
mvn release:prepare -Dusername=yourSvnUsername -Dpassword=yourSvnPassword -DautoVersionSubmodules=true
For a dry run, add '-DdryRun=true'. If you do a dry run, use 'mvn release:clean' to clean up after you have looked at the output.
When prompted for the SCM tag name, follow this pattern: STRUTS_2_3_[PATCH_VERSION]
![]() | For some reason, when using svn client 1.5, the release plugin might fail to tag the release, if it fails, run: svn up -r head mvn release:prepare -Dresume |
This step will (more information):
mvn release:perform -Dusername=yourSvnUsername
This step will (more information):
After this step the artifacts will be hosted by Nexus
If you need to run perform again, (or in a different box), do:
svn co http://svn.apache.org/repos/asf/struts/struts2/tags/$VERSION cd $VERSION mvn deploy site-deploy --no-plugin-updates -DperformRelease=true
In order to move the assemblies login to people.apache.org and execute the following code:
#!/bin/sh # create the destination directory mkdir $VERSION cd $VERSION wget -erobots=off -nv -l 1 --accept=zip,md5,sha1,asc -r --no-check-certificate -nd -nH https://repository.apache.org/content/groups/public/org/apache/struts/struts2-assembly/$VERSION for f in *2-assembly*.zip* do mv $f `echo $f | sed s/2-assembly//g` done for f in struts2-assembly-*.pom* do rm $f done
After that move the assemblies directory to the builds destination with
mv $VERSION /www/people.apache.org/builds/struts/
Post a release/quality vote to the dev list (and only the dev list).
After the vote, if the distribution is being mirrored (there was a favourable release vote) copy the Sources and Binaries:
ssh people.apache.org cd /www/people.apache.org/builds/struts/$VERSION cp struts-$VERSION-src.* /www/www.apache.org/dist/struts/source cp struts-$VERSION-docs.* /www/www.apache.org/dist/struts/documentation cp struts-$VERSION-lib.* /www/www.apache.org/dist/struts/library cp struts-$VERSION-apps.* /www/www.apache.org/dist/struts/examples cp struts-$VERSION-all.* /www/www.apache.org/dist/struts/binaries
![]() | The default setup on people.apache.org will leave the files and directories only changeable by the user who creates them. The last two steps will allow future releases to go smoothly. |
Log in again to Nexus and release the repository, it will be automatically replicated across Maven Repositories
See Releasing a Maven-based project for further details.
Remove the old files from under /www/www.apache.org/dist/struts/ to synchronize only the latest version with peers. All the files from /www/www.apache.org/dist/ are always mirrored to http://archive.apache.org/dist/struts/
Wait 24 hours before proceeding.
If the release will fix a - hopefully yet undisclosed - security issue, it's now time to update the Security Bulletins page and add a new announcement. For a template, just check former announcements
ssh people.apache.org export VERSION=2.#.# unzip /www/people.apache.org/builds/struts/$VERSION/struts-$VERSION-docs.zip -d ~/docs #now the docs are under ~/docs/struts-$VERSION/docs mkdir -p /www/struts.apache.org/$VERSION mv ~/docs/struts-$VERSION/docs /www/struts.apache.org/$VERSION chmod -R g+w /www/struts.apache.org/$VERSION
Edit /www/struts.apache.org/$VERSION/archetype-catalog.xml and update the version of artifacts
svn co https://svn.apache.org/repos/asf/struts/site/ struts-site
mvn site:site
mvn site-deploy
It takes a few hours for the site changes to go live
After updating the site, be sure that the permissions are set to group writeable ($ chmod -R g+w .)
We leave this as the last step, once the artifacts have had time to sync up on the mirrors. Target it to: user@struts.a.o and announcements@struts.a.o, samples are available at Sample announcements page