From 2214677d92a2c5045752ef9ad28fe94c33de0653 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 5 Feb 2016 21:38:50 +0400 Subject: [PATCH] Fix the default directories bug. --- .../kobalt/internal/JvmCompilerPlugin.kt | 22 ++++++++++++----- .../resources/projects/kobalt/src/Build.kt | 24 +++++++++++-------- .../src/generated/java/example/KotlinClass.kt | 9 +++++++ .../src/main/java/example/JavaMain.java | 8 +++++++ 4 files changed, 47 insertions(+), 16 deletions(-) create mode 100644 src/test/resources/projects/nonStandard/src/generated/java/example/KotlinClass.kt create mode 100644 src/test/resources/projects/nonStandard/src/main/java/example/JavaMain.java diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt index 9480342b..1df2a1bb 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt @@ -4,7 +4,6 @@ import com.beust.kobalt.IncrementalTaskInfo import com.beust.kobalt.KobaltException import com.beust.kobalt.TaskResult import com.beust.kobalt.api.* -import com.beust.kobalt.api.annotation.Directive import com.beust.kobalt.api.annotation.ExportedProjectProperty import com.beust.kobalt.api.annotation.IncrementalTask import com.beust.kobalt.api.annotation.Task @@ -173,11 +172,15 @@ open class JvmCompilerPlugin @Inject constructor( throw KobaltException("Couldn't find any compiler for project ${project.name}") } else { compilers.forEach { compiler -> - val info = createCompilerActionInfo(project, context, isTest, sourceSuffixes = compiler.sourceSuffixes) - val thisResult = compiler.compile(project, context, info) - results.add(thisResult) - if (! thisResult.success && failedResult == null) { - failedResult = thisResult + if (containsSourceFiles(project, compiler)) { + val info = createCompilerActionInfo(project, context, isTest, sourceSuffixes = compiler.sourceSuffixes) + val thisResult = compiler.compile(project, context, info) + results.add(thisResult) + if (!thisResult.success && failedResult == null) { + failedResult = thisResult + } + } else { + log(2, "Compiler $compiler not running on ${project.name} since no source files were found") } } return if (failedResult != null) failedResult!! @@ -185,6 +188,13 @@ open class JvmCompilerPlugin @Inject constructor( } } + private fun containsSourceFiles(project: Project, compiler: ICompilerContributor): Boolean { + project.projectExtra.suffixesFound.forEach { + if (compiler.sourceSuffixes.contains(it)) return true + } + return false + } + val allProjects = arrayListOf() override fun projects() = allProjects diff --git a/src/test/resources/projects/kobalt/src/Build.kt b/src/test/resources/projects/kobalt/src/Build.kt index 185de67b..d37a2f91 100644 --- a/src/test/resources/projects/kobalt/src/Build.kt +++ b/src/test/resources/projects/kobalt/src/Build.kt @@ -11,10 +11,6 @@ val javaFirst = project { assemble { jar { - fatJar = true - manifest { - attributes("Main-Class", "example.KotlinMainKt") - } } } } @@ -28,10 +24,6 @@ val kotlinFirst = project { assemble { jar { - fatJar = true - manifest { - attributes("Main-Class", "example.KotlinMainKt") - } } } } @@ -43,8 +35,20 @@ val mixed1 = project { version = "0.1" directory = name - dependenciesTest { - compile("org.testng:testng:6.9.5") + assemble { + jar { + } + } +} + + +val nonStandard = project { + name = "nonStandard" + group = "com.example" + directory = name + + sourceDirectories { + path("src/generated/java") } assemble { diff --git a/src/test/resources/projects/nonStandard/src/generated/java/example/KotlinClass.kt b/src/test/resources/projects/nonStandard/src/generated/java/example/KotlinClass.kt new file mode 100644 index 00000000..4910e01a --- /dev/null +++ b/src/test/resources/projects/nonStandard/src/generated/java/example/KotlinClass.kt @@ -0,0 +1,9 @@ +package example + +class KotlinClass { + fun run() { + println("KotlinClass run()") + } +} + + diff --git a/src/test/resources/projects/nonStandard/src/main/java/example/JavaMain.java b/src/test/resources/projects/nonStandard/src/main/java/example/JavaMain.java new file mode 100644 index 00000000..e569b824 --- /dev/null +++ b/src/test/resources/projects/nonStandard/src/main/java/example/JavaMain.java @@ -0,0 +1,8 @@ +package example; + +public class JavaMain { + public static void main(String[] argv) { + System.out.println("JavaMain calling into Kotlin"); + new KotlinClass().run(); + } +} \ No newline at end of file