Search in sources :

Example 1 with ScmResult

use of org.apache.maven.scm.ScmResult in project maven-plugins by apache.

the class AbstractScmPublishMojo method checkoutExisting.

protected void checkoutExisting() throws MojoExecutionException {
    if (scmProvider instanceof AbstractSvnScmProvider) {
        checkCreateRemoteSvnPath();
    }
    logInfo("%s the pub tree from %s into %s", (tryUpdate ? "Updating" : "Checking out"), pubScmUrl, checkoutDirectory);
    if (checkoutDirectory.exists() && !tryUpdate) {
        try {
            FileUtils.deleteDirectory(checkoutDirectory);
        } catch (IOException e) {
            logError(e.getMessage());
            throw new MojoExecutionException("Unable to remove old checkout directory: " + e.getMessage(), e);
        }
    }
    boolean forceCheckout = false;
    if (!checkoutDirectory.exists()) {
        if (tryUpdate) {
            logInfo("TryUpdate is configured but no local copy currently available: forcing checkout.");
        }
        checkoutDirectory.mkdirs();
        forceCheckout = true;
    }
    try {
        ScmFileSet fileSet = new ScmFileSet(checkoutDirectory, includes, excludes);
        ScmBranch branch = (scmBranch == null) ? null : new ScmBranch(scmBranch);
        ScmResult scmResult = null;
        if (tryUpdate && !forceCheckout) {
            scmResult = scmProvider.update(scmRepository, fileSet, branch);
        } else {
            int attempt = 0;
            while (scmResult == null) {
                try {
                    scmResult = scmProvider.checkOut(scmRepository, fileSet, branch);
                } catch (ScmException e) {
                    // give it max 2 times to retry
                    if (attempt++ < 2) {
                        try {
                            // wait 3 seconds
                            Thread.sleep(3 * 1000);
                        } catch (InterruptedException ie) {
                        // noop
                        }
                    } else {
                        throw e;
                    }
                }
            }
        }
        checkScmResult(scmResult, "check out from SCM");
    } catch (ScmException e) {
        logError(e.getMessage());
        throw new MojoExecutionException("An error occurred during the checkout process: " + e.getMessage(), e);
    } catch (IOException e) {
        logError(e.getMessage());
        throw new MojoExecutionException("An error occurred during the checkout process: " + e.getMessage(), e);
    }
}
Also used : ScmBranch(org.apache.maven.scm.ScmBranch) ScmFileSet(org.apache.maven.scm.ScmFileSet) ScmException(org.apache.maven.scm.ScmException) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) AddScmResult(org.apache.maven.scm.command.add.AddScmResult) CheckInScmResult(org.apache.maven.scm.command.checkin.CheckInScmResult) ScmResult(org.apache.maven.scm.ScmResult) AbstractSvnScmProvider(org.apache.maven.scm.provider.svn.AbstractSvnScmProvider) IOException(java.io.IOException)

Aggregations

IOException (java.io.IOException)1 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)1 ScmBranch (org.apache.maven.scm.ScmBranch)1 ScmException (org.apache.maven.scm.ScmException)1 ScmFileSet (org.apache.maven.scm.ScmFileSet)1 ScmResult (org.apache.maven.scm.ScmResult)1 AddScmResult (org.apache.maven.scm.command.add.AddScmResult)1 CheckInScmResult (org.apache.maven.scm.command.checkin.CheckInScmResult)1 AbstractSvnScmProvider (org.apache.maven.scm.provider.svn.AbstractSvnScmProvider)1