[ http://jira.codehaus.org/browse/MNG-4539?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=207706#action_207706 ]
Johannes Schneider commented on MNG-4539: ----------------------------------------- @Karl-Heinz: > If you are deploying/installing a multimodule project you should first check > if the install works fine before > you deploy it... Of course I could. And probably I should. But those lazy guys out there... Stupid analogy: "Why need transactions in databases? They just should try the statement before." > If a module fails during the deployment phase what is usually wrong ? Well, differnt things. Maybe a test case that fails sometimes (race condition). Or maybe a network failure? Or permissions problem. Run out of disk space... There are many things that may happen. > If you are releasing artifacts you should first check your release cylce by > using > mvn -DdryRun=true release:prepare > after this is working well you could do a a mvn release:prepare and mvn > release:perform. I think Maven should do that. I don't want to sit here, wait several hours to verify that the release seemed to work (as dry run), then release it and run into some (random) problems... A successfull dry run is just a hint, that the release *should* work. But no guarantees here, too. SVN issues: SVN has disadvantages. Some other VCS don't have them. But that is another issue. And polluting the history *is* a problem. At least for me. Of course it is possible to work around nearly every issue most of the time. But Maven is made to make the life easier. I don't want to learn complex workflows that take a lot of time, are complicated, hard to remember and error prone. If I'd prefer that type of work, I used Ant... > Transactions support > -------------------- > > Key: MNG-4539 > URL: http://jira.codehaus.org/browse/MNG-4539 > Project: Maven 2 & 3 > Issue Type: New Feature > Reporter: Johannes Schneider > > In an ideal world, every action Maven takes had transaction support. > Some problems I run into regularly: > - Deploying/installing a multi module project: > - But one module fails (of course one of the last) and I end up with an > inconsistent repository. > - Deployment takes ages: Inconsistent repository for a couple of minutes > (or hours). > - Release: > - Tagging of the central source repository and upload of the artifacts are > not done synchronously. > - If anything fails (typically site generation/deployment), the source and > artifacts repositories are inconsistent. > - Cleaning up after a failed release is not easy (or not possible --> > Subversion). > Of course a staging repository could solve some of the issues. But I suggest > to go one step further: > Create some sort of transaction support where actions may be added to. Once > the transaction is finished, it is commited and all the actions are executed > (e.g. uploading to the repository / tagging). > If one of the actions fails, a rollback is executed. > I think this should be possible for many cases. Subversion repositories won't > support a "perfect" rollback mechanism. But the distributed VCS (e.g. Git) > would. > Uploading to the repository could support rollback either through cheap > delete-on-rollback or better some special handling in relation to repository > managers like Nexus. Maybe WebDAV supports transactions? > --> For many use cases at least some sort of "cheap" transaction support with > faked rollback stuff could work. But for other environments (DCVS + Nexus) > there could be first class support... -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira