diff --git a/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt index acbff16b..a62fa04d 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt @@ -1,5 +1,6 @@ package com.beust.kobalt.plugin.java +import com.beust.kobalt.TaskResult import com.beust.kobalt.api.BasePlugin import com.beust.kobalt.api.IProjectContributor import com.beust.kobalt.api.Kobalt @@ -8,12 +9,12 @@ import com.beust.kobalt.api.annotation.Directive import com.beust.kobalt.api.annotation.Task import com.beust.kobalt.internal.JvmCompiler import com.beust.kobalt.internal.JvmCompilerPlugin -import com.beust.kobalt.TaskResult import com.beust.kobalt.maven.DepFactory import com.beust.kobalt.maven.DependencyManager import com.beust.kobalt.maven.LocalRepo import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.KobaltExecutors +import com.beust.kobalt.misc.warn import java.io.File import java.nio.file.Paths import java.util.* @@ -56,10 +57,18 @@ public class JavaPlugin @Inject constructor( fun taskJavadoc(project: Project) : TaskResult { val projectDir = File(project.directory) val sourceFiles = findSourceFiles(project.directory, project.sourceDirectories) - val buildDir = File(projectDir, - project.buildDirectory + File.separator + JvmCompilerPlugin.DOCS_DIRECTORY).apply { mkdirs() } - return javaCompiler.javadoc(project, context, project.compileDependencies, sourceFiles, - buildDir, compilerArgs) + val result = + if (sourceFiles.size > 0) { + val buildDir = File(projectDir, + project.buildDirectory + File.separator + JvmCompilerPlugin.DOCS_DIRECTORY).apply { mkdirs() } + javaCompiler.javadoc(project, context, project.compileDependencies, sourceFiles, + buildDir, compilerArgs) + } else { + warn("Couldn't find any source files to run Javadoc on") + TaskResult() + } + return result + } @Task(name = TASK_COMPILE, description = "Compile the project") @@ -67,10 +76,17 @@ public class JavaPlugin @Inject constructor( copyResources(project, JvmCompilerPlugin.SOURCE_SET_MAIN) val projectDir = File(project.directory) val sourceFiles = findSourceFiles(project.directory, project.sourceDirectories) - val buildDir = File(projectDir, project.buildDirectory + File.separator + "classes") - .apply { mkdirs() } - return javaCompiler.compile(project, context, project.compileDependencies, sourceFiles, - buildDir, compilerArgs) + val result = + if (sourceFiles.size > 0) { + val buildDir = File(projectDir, project.buildDirectory + File.separator + "classes") + .apply { mkdirs() } + javaCompiler.compile(project, context, project.compileDependencies, sourceFiles, + buildDir, compilerArgs) + } else { + warn("Couldn't find any source files to compile") + TaskResult() + } + return result } @Task(name = TASK_COMPILE_TEST, description = "Compile the tests", runAfter = arrayOf("compile")) @@ -83,7 +99,7 @@ public class JavaPlugin @Inject constructor( javaCompiler.compile(project, context, testDependencies(project), sourceFiles, buildDir, compilerArgs) } else { - // No files to compile + warn("Couldn't find any tests to compile") TaskResult() } return result diff --git a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt index f3da2a03..9fa87f14 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt @@ -9,6 +9,7 @@ import com.beust.kobalt.internal.JvmCompilerPlugin import com.beust.kobalt.maven.* import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.KobaltExecutors +import com.beust.kobalt.misc.warn import java.io.File import javax.inject.Inject import javax.inject.Singleton @@ -43,15 +44,20 @@ class KotlinPlugin @Inject constructor( val buildDirectory = File(projectDirectory, project.buildDirectory + File.separator + "classes") buildDirectory.mkdirs() - val sourceFiles = files.findRecursively(projectDirectory, - project.sourceDirectories.map { File(it) }, { it.endsWith(".kt") }) - val absoluteSourceFiles = sourceFiles.map { - File(projectDirectory, it).absolutePath - } + val sourceFiles = files.findRecursively(projectDirectory, project.sourceDirectories.map { File(it) }, + { it .endsWith(".kt") }) + .map { File(projectDirectory, it).absolutePath } - compilePrivate(project, classpath, absoluteSourceFiles, buildDirectory) - lp(project, "Compilation succeeded") - return TaskResult() + val result = + if (sourceFiles.size > 0) { + compilePrivate(project, classpath, sourceFiles, buildDirectory) + lp(project, "Compilation succeeded") + TaskResult() + } else { + warn("Couldn't find any source files") + TaskResult() + } + return result } @Task(name = TASK_COMPILE_TEST, description = "Compile the tests", runAfter = arrayOf(TASK_COMPILE)) @@ -59,16 +65,22 @@ class KotlinPlugin @Inject constructor( copyResources(project, JvmCompilerPlugin.SOURCE_SET_TEST) val projectDir = File(project.directory) - val absoluteSourceFiles = files.findRecursively(projectDir, project.sourceDirectoriesTest.map { File(it) }) + val sourceFiles = files.findRecursively(projectDir, project.sourceDirectoriesTest.map { File(it) }) { it: String -> it.endsWith(".kt") } .map { File(projectDir, it).absolutePath } - compilePrivate(project, testDependencies(project), - absoluteSourceFiles, - makeOutputTestDir(project)) + val result = + if (sourceFiles.size > 0) { + compilePrivate(project, testDependencies(project), + sourceFiles, + makeOutputTestDir(project)) + } else { + warn("Couldn't find any test files") + TaskResult() + } lp(project, "Compilation of tests succeeded") - return TaskResult() + return result } private fun compilePrivate(project: Project, cpList: List, sources: List,