Version 2
    While releasing the jboss-ejb-api:1.0-alpha-1, jboss-transaction-api:1.0-alpha-1 and jboss-javaee-parent:6.0.0-alpha-1, i ran into numerous issues with the release process. This wiki lists the issues encountered.  
    
    Following are some of the issues that currently exist with respect to using the Maven release plugin for JBoss projects:
    
    h3. Multiple ways to release through the Maven release plugin
    
    Depending on which version of "jboss-parent" is used, the release process will vary. Post jboss-parent-5-beta-1 the release plugin uses Maven Wagon SCM to directly upload the releases to the Maven repo. In earlier version of jboss-parent, the release plugin releases the artifacts to a local checked out version of the maven repo. The artifacts are then manually commited.
    
    This difference in approach can lead to confusion, since the person releasing the artifact has to first check which version of the jboss-parent is being used.
    
    h3. Extremely slow release through Maven Wagon SCM
    
    While releasing a simple artifact, which uses jboss-parent-5-beta-5, it was observed that the release took 24 minutes to complete. This was just a single module which was being released. This is extremely slow.
    
    h3. jboss-parent-5-beta-5 doesn't work with Maven 2.0.9
    
    While releasing a artifact, which uses jboss-parent-5-beta-5, with Maven 2.0.9, the release failed with the following exception:
    
    {code}
    [INFO] WAGON_VERSION: 1.0-beta-2
    [INFO] [INFO] ------------------------------------------------------------------------
    [INFO] [INFO] Building JBoss JavaEE 6.0 Parent
    [INFO] [INFO]    task-segment: [deploy]
    [INFO] [INFO] ------------------------------------------------------------------------
    [INFO] [INFO] [enforcer:enforce {execution: enforce-plugin-versions}]
    [INFO] [INFO] [enforcer:enforce {execution: enforce-java-version}]
    [INFO] [INFO] [enforcer:enforce {execution: enforce-maven-version}]
    [INFO] [INFO] [site:attach-descriptor]
    [INFO] [INFO] [source:jar-no-fork {execution: attach-sources}]
    [INFO] [INFO] [install:install]
    [INFO] [INFO] Installing /NotBackedUp/me/business/jboss/wc/jbossas/projects/javaee/trunk/build/target/checkout/build/pom.xml to /opt/maven/repository/org/jboss/javaee/jboss-javaee-parent/6.0.0-alpha-1/jboss-javaee-parent-6.0.0-alpha-1.pom
    [INFO] [INFO] [deploy:deploy]
    [INFO] [FATAL ERROR] org.apache.maven.plugin.deploy.DeployMojo#execute() caused a linkage error (java.lang.AbstractMethodError) and may be out-of-date. Check the realms:
    [INFO] [FATAL ERROR] Plugin realm = app0.child-container[org.apache.maven.plugins:maven-deploy-plugin]
    [INFO] urls[0] = file:/opt/maven/repository/org/apache/maven/plugins/maven-deploy-plugin/2.4/maven-deploy-plugin-2.4.jar
    [INFO] urls[1] = file:/opt/maven/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
    [INFO] [FATAL ERROR] Container realm = plexus.core
    [INFO] urls[0] = file:/home/me/Maven/apache-maven-2.0.9/lib/maven-2.0.9-uber.jar
    [INFO] [INFO] ------------------------------------------------------------------------
    [INFO] [ERROR] FATAL ERROR
    [INFO] [INFO] ------------------------------------------------------------------------
    [INFO] [INFO] org.apache.maven.wagon.providers.scm.ScmWagon.openConnection()V
    [INFO] [INFO] ------------------------------------------------------------------------
    [INFO] [INFO] Trace
    [INFO] java.lang.AbstractMethodError: org.apache.maven.wagon.providers.scm.ScmWagon.openConnection()V
    [INFO]  at org.apache.maven.wagon.AbstractWagon.connect(AbstractWagon.java:143)
    [INFO]  at org.apache.maven.artifact.manager.DefaultWagonManager.putRemoteFile(DefaultWagonManager.java:242)
    [INFO]  at org.apache.maven.artifact.manager.DefaultWagonManager.putArtifact(DefaultWagonManager.java:160)
    [INFO]  at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:80)
    [INFO]  at org.apache.maven.plugin.deploy.DeployMojo.execute(DeployMojo.java:165)
    [INFO]  at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:451)
    [INFO]  at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:558)
    [INFO]  at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:499)
    [INFO]  at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:478)
    [INFO]  at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:330)
    [INFO]  at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:291)
    [INFO]  at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:142)
    [INFO]  at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336)
    [INFO]  at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129)
    [INFO]  at org.apache.maven.cli.MavenCli.main(MavenCli.java:287)
    [INFO]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [INFO]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    [INFO]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    [INFO]  at java.lang.reflect.Method.invoke(Method.java:585)
    [INFO]  at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
    [INFO]  at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
    [INFO]  at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
    [INFO]  at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
    [INFO] [INFO] ------------------------------------------------------------------------
    [INFO] [INFO] Total time: 9 seconds
    [INFO] [INFO] Finished at: Tue Dec 22 21:45:19 IST 2009
    [INFO] [INFO] Final Memory: 20M/123M
    [INFO] [INFO] ------------------------------------------------------------------------
    [INFO] ------------------------------------------------------------------------
    [ERROR] BUILD ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] Maven execution failed, exit code: '1'
    
    [INFO] ------------------------------------------------------------------------
    [INFO] For more information, run Maven with the -e switch
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 5 minutes 49 seconds
    [INFO] Finished at: Tue Dec 22 21:45:19 IST 2009
    [INFO] Final Memory: 11M/123M
    [INFO] ------------------------------------------------------------------------
    
    {code}    
    
    Found some posts in the Maven mailing list which indicated that it was a result of using the plugin against incompatible Maven version. I then upgraded to Maven-2.2.1 (latest in 2.x series) and was able to release the project.
    
    h3. New repository "id" for jboss release and snapshot repos
    
    This one isn't really a big issue. Earlier versions of jboss-parent used to refer to the snapshot repo by snapshots.jboss.org and the release repo by repository.jboss.org. Latest versions of jboss-parent refer to these repos by jboss-snapshots and jboss-releases. The following "server" configurations have to be added to the existing ones in the settings.xml:
    {code}
       <server>
       <id>jboss-snapshots</id>
       <username>user</username>
       <password>password</password>
       </server>
      
       <server>
       <id>jboss-releases</id>
       <username>user</username>
       <password>password</password>
       </server>
    {code}
    
    Do not remove the earlier server mapping for snapshots.jboss.org because the earlier versions of jboss-parent still use this repo id.
    
    h3. Incorrect SCM entry is added by the release plugin to the pom.xml
    
    This one looks like a bug in the plugin (although i haven't yet looked much into this). During the release of a artifact which did *not* have any SCM entry in the pom.xml, it was observed that a (incorrect) SCM section was added to the pom.xml during the release and was committed. The SCM entry pointed to the "tag" of the project:
    
    {code}
    Index: pom.xml
    ===================================================================
    --- pom.xml     (revision 98111)
    +++ pom.xml     (working copy)
    @@ -7,7 +7,7 @@
       <modelVersion>4.0.0</modelVersion>
       <groupId>org.jboss.javaee</groupId>
       <artifactId>jboss-javaee-parent</artifactId>
    -  <version>6.0.0-SNAPSHOT</version>
    +  <version>6.0.0-alpha-1</version>
       <packaging>pom</packaging>
       <name>JBoss JavaEE 6.0 Parent</name>
       <url>http://www.jboss.com</url>
    @@ -15,8 +15,9 @@
         The JBoss JavaEE API classes
       </description>
       <scm>
    -    <connection>scm:svn:http://anonsvn.jboss.org/repos/jbossas/projects/javaee/trunk</connection>
    -    <developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/javaee/trunk</developerConnection>
    +    <connection>scm:svn:http://anonsvn.jboss.org/repos/jbossas/projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1</connection>
    +    <developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1</developerConnection>
    +    <url>scm:svn:https://svn.jboss.org/repos/jbossas/projects/javaee/tags/jboss-javaee-parent-6.0.0-alpha-1</url>
       </scm>
     
       <properties>
    
    {code}
    
    All these above points show that the release process isn't simple when using the Maven release plugin, especially with the latest changes (jboss-parent-5-beta-5). The earlier release process (jboss-parent-4?) used to work well. Although i have heard other projects complain about the earlier process too. But comparatively the earlier one worked better.
    
    With all these issues with the release plugin, it's being recommended that we move away from that plugin and use simpler release process like [http://community.jboss.org/wiki/DavidsMavenReleaseProcess]. That release process (a.k.a David's release process) is simpler and straight forward and is faster. However, some of the things that are not covered in that process include:
    
    h3. Prompting of SNAPSHOT dependencies during release
    
    The Maven release plugin has intelligence built in, to identify SNAPSHOT dependencies in the artifact being released and prompting for the release of the SNAPSHOT dependencies. The approach of using some search/replace script instead of the release plugin probably won't be able to achieve something similar, because the dependencies might be on a different version than the artifact being released. And it probably isn't worth adding intelligence to the search/replace scripts.
    
    h3. Operating System dependent
    
    One of the drawbacks of using tools instead of the Maven release plugin, is that the tools might be OS dependent. This would lead to different release processes on different OS, which is not desirable.