mavensvnbranchmaven-release-plugin

Maven release avoid huge repository checkout


I try to release a maven project to the new version.

Therefore I use

mvn release:prepare release:perform

To release that version is not a big deal. Unfortunately it is a big project and have more than 700 releases in the past. Every release have its own tag.

Example:

repo 
 + branches
 + tags
    + project-1.0.0
    + project-1.0.1
    + project-1.0.2
    + project-1.0.3
         (...)
    + project-7.9.2
 + trunk
    + src
    + pom.xml

Using the release-plugin it download all the tags making it about 190 GB of code and old tags.

This is a problem because it takes a hours to checkout all the tags.

I can not simply "remove old tags". This will make the release:prepare release:perform brake the release-process having the message:

[INFO] de.e_nexus.projekt.xdiff ........................... SKIPPED ?
[INFO] ------------------------------------------------------------------------ ?
[INFO] BUILD FAILURE    ?
[INFO] ------------------------------------------------------------------------ ?
[INFO] Total time: 05:52 min (Wall Clock)   ?
[INFO] Finished at: 2022-11-10T22:23:19+01:00   ?
[INFO] ------------------------------------------------------------------------ ?
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare (default-cli) on project projekt: Unable to tag SCM  ?
[ERROR] Provider message:   ?
[ERROR] The svn tag command failed. ?
[ERROR] Command output: ?
[ERROR] svn: E160013: File not found: revision 3861, path '/repo/tags/projekt-1.0.0'    ?
[ERROR] -> [Help 1] ?
[ERROR] ?
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. ?
[ERROR] Re-run Maven using the -X switch to enable full debug logging.  ?
[ERROR] ?
[ERROR] For more information about the errors and possible solutions, please read the following articles:   ?
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

How to get rid of old tags AND be able to release using mavens release plugin?


Solution

  • Check out only the trunk of your project. You don't need to checkout all your tags and branches to create a new tag out of trunk.

    If I should only checkout trunk only, how is the release-process capable of creating release-tags? How can you tell the error-message pointing out of trunk-folder?

    Maven uses a Subversion client to create a new tag in the repository. This does not require all the tags to be present on the client side. Check examples in SVNBook | Tags. The examples show that you can create a 'URL to URL' tag (no working copy at all) or a 'working copy to URL' tag (tagging the current state of the working copy). No need to have the all the tags locally.

    Additional examples are also available in SVNBook | svn copy.

    Since tagging is a very common operation, I'm sure that Maven knows how to do it properly. But you need to examine and fix your configuration.

    PS Great multi-display setup in your profile @Grim!