[ https://jira.codehaus.org/browse/MNG-4188?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jason van Zyl closed MNG-4188. ------------------------------ Resolution: Fixed > Add a 'finally' phase. > ---------------------- > > Key: MNG-4188 > URL: https://jira.codehaus.org/browse/MNG-4188 > Project: Maven 2 & 3 > Issue Type: Wish > Components: Plugins and Lifecycle > Affects Versions: Issues to be reviewed for 3.x > Reporter: Christian Schulte > Priority: Minor > Fix For: Issues to be reviewed for 3.x > > > When Maven executes a lifecycle, it does not execute any phases succeeding a > failing phase. It would be great if Maven supports a 'finally' phase, which > is guaranteed to run regardless of the state of the lifecycle just like a > Java 'finally' block. The use case I would need such a phase for is the > following: > {code} > <profile> > <id>sourceforge-shell</id> > <activation> > <activeByDefault>false</activeByDefault> > </activation> > <build> > <plugins> > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-antrun-plugin</artifactId> > <dependencies> > <dependency> > <groupId>org.apache.ant</groupId> > <artifactId>ant-jsch</artifactId> > <version>1.7.1</version> > </dependency> > </dependencies> > <executions> > <execution> > <id>create-sourceforge-shell</id> > <phase>validate</phase> > <goals> > <goal>run</goal> > </goals> > <configuration> > <tasks> > <sshexec host="shell.sourceforge.net" > username="${sf.username},${sf.project}" password="${sf.password}" > command="create" timeout="300000" /> > </tasks> > </configuration> > </execution> > <execution> > <id>create-sourceforge-shell-site</id> > <phase>pre-site</phase> > <goals> > <goal>run</goal> > </goals> > <configuration> > <tasks> > <sshexec host="shell.sourceforge.net" > username="${sf.username},${sf.project}" password="${sf.password}" > command="create" timeout="300000" /> > </tasks> > </configuration> > </execution> > <execution> > <id>shutdown-sourceforge-shell</id> > <phase>deploy</phase> > <goals> > <goal>run</goal> > </goals> > <configuration> > <tasks> > <sshexec host="shell.sourceforge.net" > username="${sf.username},${sf.project}" password="${sf.password}" > command="shutdown" timeout="300000" /> > <echo message="Sleeping for 1 minute waiting for shutdown > of shell." /> > <sleep minutes="1" /> > </tasks> > </configuration> > </execution> > <execution> > <id>shutdown-sourceforge-shell-site</id> > <phase>site-deploy</phase> > <goals> > <goal>run</goal> > </goals> > <configuration> > <tasks> > <sshexec host="shell.sourceforge.net" > username="${sf.username},${sf.project}" password="${sf.password}" > command="shutdown" timeout="300000" /> > <echo message="Sleeping for 1 minute waiting for shutdown > of shell." /> > <sleep minutes="1" /> > </tasks> > </configuration> > </execution> > </executions> > </plugin> > </plugins> > </build> > </profile> > {code} > I am currently using this profile when deploying to sourceforge. The problem > is, that the shell won't get shutdown, whenever a build fails. It needs to > get shutdown, so that a build for another SF project can succeed. In the > example above, the two executions 'shutdown-sourceforge-shell' and > 'shutdown-sourceforge-shell-site' could be bound to a 'finally' phase and > could shutdown the shell regardless of the outcome of the build. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira