From 77df2e07ad7c1fda3c16735aab2e0e6e0deca50b Mon Sep 17 00:00:00 2001 From: Sergey Mashkov Date: Tue, 10 May 2016 23:11:06 +0300 Subject: [PATCH] KT-12074 Building Kotlin maven projects using a parent pom will silently fail We should consider module's basedir if there is relative source directory specified for the execution --- .../src/it/simple/expected.log | 1 - .../kotlin/maven/K2JVMCompileMojo.java | 4 +-- .../kotlin/maven/KotlinCompileMojoBase.java | 33 +++++++++++++------ .../kotlin/maven/KotlinTestCompileMojo.java | 2 +- .../maven/KotlinTestJSCompilerMojo.java | 2 +- 5 files changed, 27 insertions(+), 15 deletions(-) diff --git a/libraries/tools/kotlin-maven-plugin/src/it/simple/expected.log b/libraries/tools/kotlin-maven-plugin/src/it/simple/expected.log index 45bd68b2e60..96f3f91b128 100644 --- a/libraries/tools/kotlin-maven-plugin/src/it/simple/expected.log +++ b/libraries/tools/kotlin-maven-plugin/src/it/simple/expected.log @@ -1,4 +1,3 @@ [INFO] Kotlin Compiler version @snapshot@ [INFO] Compiling Kotlin sources from [/src/main/kotlin] -[INFO] Classes directory is /target/classes [INFO] Module name is test-project diff --git a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/K2JVMCompileMojo.java b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/K2JVMCompileMojo.java index 47927f22ba1..8a93f2ee2e3 100644 --- a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/K2JVMCompileMojo.java +++ b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/K2JVMCompileMojo.java @@ -89,11 +89,11 @@ public class K2JVMCompileMojo extends KotlinCompileMojoBase e @Parameter private List sourceDirs; - public List getSources() { + protected List getSourceFilePaths() { if (sourceDirs != null && !sourceDirs.isEmpty()) return sourceDirs; return defaultSourceDirs; } + public List getSourceDirs() { + List sources = getSourceFilePaths(); + List result = new ArrayList(sources.size()); + File baseDir = project.getBasedir(); + + for (String source : sources) { + File f = new File(source); + if (f.isAbsolute()) { + result.add(f); + } else { + result.add(new File(baseDir, source)); + } + } + + return result; + } + /** * Suppress all warnings. */ @@ -133,11 +147,10 @@ public abstract class KotlinCompileMojoBase e } private boolean hasKotlinFilesInSources() throws MojoExecutionException { - List sources = getSources(); + List sources = getSourceDirs(); if (sources == null || sources.isEmpty()) return false; - for (String source : sources) { - File root = new File(source); + for (File root : sources) { if (root.exists()) { boolean sourcesExists = !FileUtil.processFilesRecursively(root, new Processor() { @Override @@ -211,9 +224,9 @@ public abstract class KotlinCompileMojoBase e } List sources = new ArrayList(); - for (String source : getSources()) { - if (new File(source).exists()) { - sources.add(source); + for (File source : getSourceDirs()) { + if (source.exists()) { + sources.add(source.getPath()); } else { getLog().warn("Source root doesn't exist: " + source); diff --git a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinTestCompileMojo.java b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinTestCompileMojo.java index 0dae790d532..3b8a4419506 100644 --- a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinTestCompileMojo.java +++ b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinTestCompileMojo.java @@ -61,7 +61,7 @@ public class KotlinTestCompileMojo extends K2JVMCompileMojo { private List sourceDirs; @Override - public List getSources() { + public List getSourceFilePaths() { if (sourceDirs != null && !sourceDirs.isEmpty()) return sourceDirs; return defaultSourceDirs; } diff --git a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinTestJSCompilerMojo.java b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinTestJSCompilerMojo.java index a218a4f658d..3b7756aeac8 100644 --- a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinTestJSCompilerMojo.java +++ b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinTestJSCompilerMojo.java @@ -65,7 +65,7 @@ public class KotlinTestJSCompilerMojo extends K2JSCompilerMojo { private List sourceDirs; @Override - public List getSources() { + public List getSourceFilePaths() { if (sourceDirs != null && !sourceDirs.isEmpty()) return sourceDirs; return defaultSourceDirs; }