[ 
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

        

Reply via email to