diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/IncludeFromTo.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/IncludeFromTo.kt index a819d98b..7ce0d3f0 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/IncludeFromTo.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/IncludeFromTo.kt @@ -21,9 +21,8 @@ open class IncludeFromTo { @Directive fun copy(from: From, to: To) { - with(File(from.path)) { - includedFiles.add(IncludedFile(from, to, listOf(IFileSpec.FileSpec(name)))) - } + val dir = File(from.path).parentFile + includedFiles.add(IncludedFile(from(dir.absolutePath), to, listOf(IFileSpec.FileSpec(from.path)))) } @Directive diff --git a/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt index c2953efb..0bb1abef 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt @@ -220,13 +220,17 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana val toDir = KFiles.makeDir(config.target) File(buildDir).copyRecursively(toDir, overwrite = true) } else { - config.includedFiles.forEach { inf -> - val target = inf.to - val targetFile = File(target) - val files = KFiles.materializeIncludedFiles(project, listOf(inf)) + // Delete all target directories + val targetDirs = config.includedFiles.map { File(it.to) }.distinct().forEach { targetFile -> + val isFile = targetFile.isFile context.logger.log(project.name, 2, " Deleting target dir $targetFile") targetFile.deleteRecursively() - targetFile.mkdirs() + if (! isFile) targetFile.mkdirs() + } + // Perform the installations + config.includedFiles.forEach { inf -> + val targetFile = File(inf.to) + val files = KFiles.materializeIncludedFiles(project, listOf(inf)) files.forEach { context.logger.log(project.name, 1, " Installing $it to $targetFile") KFiles.copyRecursively(it, targetFile, true)