diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ContractProjectUpdater.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ContractProjectUpdater.java index fe0f1f74c7..a004e4badc 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ContractProjectUpdater.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ContractProjectUpdater.java @@ -23,9 +23,13 @@ import java.nio.file.Path; import java.nio.file.SimpleFileVisitor; import java.nio.file.StandardCopyOption; import java.nio.file.attribute.BasicFileAttributes; +import java.util.Arrays; +import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; + +import org.springframework.util.FileSystemUtils; import org.springframework.util.StringUtils; /** @@ -156,6 +160,8 @@ public class ContractProjectUpdater { class DirectoryCopyingVisitor extends SimpleFileVisitor { + private static final List FOLDERS_TO_DELETE = Arrays.asList("contracts", "mappings"); + private static final Log log = LogFactory.getLog(DirectoryCopyingVisitor.class); private final Path from; @@ -189,6 +195,16 @@ class DirectoryCopyingVisitor extends SimpleFileVisitor { if (log.isDebugEnabled()) { log.debug("Folder [" + targetPath.toString() + "] already exists"); } + if (FOLDERS_TO_DELETE.contains(targetPath.toFile().getName())) { + if (log.isDebugEnabled()) { + log.debug("Will remove the folder [" + targetPath.toString() + "]"); + } + FileSystemUtils.deleteRecursively(targetPath); + Files.createDirectory(targetPath); + if (log.isDebugEnabled()) { + log.debug("Recreated folder [" + targetPath.toString() + "]"); + } + } } return FileVisitResult.CONTINUE; }