{
File pomBackup = getPomBackup( project );
if ( !pomBackup.exists() )
{
throw new ReleaseExecutionException(
"Cannot restore from a missing backup POM: " + pomBackup.getAbsolutePath() );
}
try
{
ScmRepository scmRepository;
ScmProvider provider;
try
{
scmRepository =
scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor,
releaseEnvironment.getSettings() );
provider = scmRepositoryConfigurator.getRepositoryProvider( scmRepository );
}
catch ( ScmRepositoryException e )
{
throw new ReleaseScmRepositoryException( e.getMessage(), e.getValidationMessages() );
}
catch ( NoSuchScmProviderException e )
{
throw new ReleaseExecutionException( "Unable to configure SCM repository: " + e.getMessage(), e );
}
if ( releaseDescriptor.isScmUseEditMode() || provider.requiresEditMode() )
{
EditScmResult result = provider.edit( scmRepository, new ScmFileSet(
new File( releaseDescriptor.getWorkingDirectory() ), project.getFile() ) );
if ( !result.isSuccess() )
{
throw new ReleaseScmCommandException( "Unable to enable editing on the POM", result );
}
}
}
catch ( ScmException e )
{
throw new ReleaseExecutionException( "An error occurred enabling edit mode: " + e.getMessage(), e );
}
try
{
FileUtils.copyFile( getPomBackup( project ), ReleaseUtil.getStandardPom( project ) );
}
catch ( IOException e )
{
throw new ReleaseExecutionException( "Error restoring from backup POM: " + e.getMessage(), e );
}
}