in src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java [373:442]
protected void checkoutExisting() throws MojoExecutionException {
if (scmProvider instanceof AbstractSvnScmProvider) {
checkCreateRemoteSvnPath();
}
logInfo(
MessageUtils.buffer().strong("%s") + " the pub tree from "
+ MessageUtils.buffer().strong("%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 | IOException e) {
logError(e.getMessage());
throw new MojoExecutionException("An error occurred during the checkout process: " + e.getMessage(), e);
}
}