allow the maven plugin to have its source directories to be configured on a per execution basis (e.g. so that you can have different directories for JS compilation as to JVM based compilation). Its a shame to require 2 fields for configuration; but tried all other permutations I could think of but could not figure out a cleaner way -better approaches welcome! :)
This commit is contained in:
+2
@@ -30,6 +30,7 @@ import org.jetbrains.k2js.config.MetaInfServices;
|
||||
import java.io.*;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Converts Kotlin to JavaScript code
|
||||
@@ -163,6 +164,7 @@ public class K2JSCompilerMojo extends KotlinCompileMojo {
|
||||
if (verbose != null) {
|
||||
k2jsArgs.verbose = verbose;
|
||||
}
|
||||
List<String> sources = getSources();
|
||||
if (sources.size() > 0) {
|
||||
k2jsArgs.sourceFiles = sources.toArray(new String[sources.size()]);
|
||||
}
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ public class KotlinCompileMojo extends KotlinCompileMojoBase {
|
||||
@Override
|
||||
protected void configureCompilerArguments(CompilerArguments arguments) throws MojoExecutionException {
|
||||
if (arguments instanceof K2JVMCompilerArguments) {
|
||||
configureBaseCompilerArguments(getLog(), (K2JVMCompilerArguments) arguments, module, sources, classpath, output);
|
||||
configureBaseCompilerArguments(getLog(), (K2JVMCompilerArguments) arguments, module, getSources(), classpath, output);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+25
-13
@@ -39,17 +39,32 @@ import java.util.List;
|
||||
import static org.jetbrains.jet.internal.com.intellij.openapi.util.text.StringUtil.join;
|
||||
|
||||
public abstract class KotlinCompileMojoBase extends AbstractMojo {
|
||||
|
||||
|
||||
// TODO it would be nice to avoid using 2 injected fields for sources
|
||||
// but I've not figured out how to have a defaulted parameter value
|
||||
// which is also customisable inside an <execution> in a maven pom.xml
|
||||
// so for now lets just use 2 fields
|
||||
|
||||
/**
|
||||
* The source directories containing the sources to be compiled.
|
||||
* The default source directories containing the sources to be compiled.
|
||||
*
|
||||
* @parameter default-value="${project.compileSourceRoots}"
|
||||
* @required
|
||||
* @readonly
|
||||
*/
|
||||
public List<String> sources;
|
||||
private List<String> defaultSourceDirs;
|
||||
|
||||
// TODO not sure why this doesn't work :(
|
||||
// * @parameter default-value="$(project.basedir}/src/main/resources"
|
||||
/**
|
||||
* The source directories containing the sources to be compiled.
|
||||
*
|
||||
* @parameter
|
||||
*/
|
||||
private List<String> sourceDirs;
|
||||
|
||||
public List<String> getSources() {
|
||||
if (sourceDirs != null && !sourceDirs.isEmpty()) return sourceDirs;
|
||||
return defaultSourceDirs;
|
||||
}
|
||||
|
||||
/**
|
||||
* The directories used to scan for annotation.xml files for Kotlin annotations
|
||||
@@ -58,14 +73,10 @@ public abstract class KotlinCompileMojoBase extends AbstractMojo {
|
||||
*/
|
||||
public List<String> annotationPaths;
|
||||
|
||||
/**
|
||||
* The source directories containing the sources to be compiled for tests.
|
||||
*
|
||||
* @parameter default-value="${project.testCompileSourceRoots}"
|
||||
* @required
|
||||
* @readonly
|
||||
*/
|
||||
protected List<String> testSources;
|
||||
// TODO not sure why this doesn't work :(
|
||||
// * @parameter default-value="$(project.basedir}/src/main/resources"
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Project classpath.
|
||||
@@ -120,6 +131,7 @@ public abstract class KotlinCompileMojoBase extends AbstractMojo {
|
||||
@Override
|
||||
public void execute() throws MojoExecutionException, MojoFailureException {
|
||||
// Check sources
|
||||
List<String> sources = getSources();
|
||||
if (sources != null && sources.size() > 0) {
|
||||
boolean sourcesExists = false;
|
||||
|
||||
|
||||
+39
-1
@@ -21,6 +21,8 @@ import org.apache.maven.plugin.MojoFailureException;
|
||||
import org.jetbrains.jet.cli.common.CompilerArguments;
|
||||
import org.jetbrains.jet.cli.jvm.K2JVMCompilerArguments;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Compiles Kotlin test sources
|
||||
*
|
||||
@@ -38,6 +40,42 @@ public class KotlinTestCompileMojo extends KotlinCompileMojoBase {
|
||||
*/
|
||||
private boolean skip;
|
||||
|
||||
|
||||
// TODO it would be nice to avoid using 2 injected fields for sources
|
||||
// but I've not figured out how to have a defaulted parameter value
|
||||
// which is also customisable inside an <execution> in a maven pom.xml
|
||||
// so for now lets just use 2 fields
|
||||
|
||||
/**
|
||||
* The default source directories containing the sources to be compiled.
|
||||
*
|
||||
* @parameter default-value="${project.testCompileSourceRoots}"
|
||||
* @required
|
||||
*/
|
||||
private List<String> defaultSourceDirs;
|
||||
|
||||
/**
|
||||
* The source directories containing the sources to be compiled.
|
||||
*
|
||||
* @parameter
|
||||
*/
|
||||
private List<String> sourceDirs;
|
||||
|
||||
@Override
|
||||
public List<String> getSources() {
|
||||
if (sourceDirs != null && !sourceDirs.isEmpty()) return sourceDirs;
|
||||
return defaultSourceDirs;
|
||||
}
|
||||
|
||||
/**
|
||||
* The source directories containing the sources to be compiled for tests.
|
||||
*
|
||||
* @parameter default-value="${project.testCompileSourceRoots}"
|
||||
* @required
|
||||
* @readonly
|
||||
*/
|
||||
private List<String> defaultSourceDir;
|
||||
|
||||
public void execute() throws MojoExecutionException, MojoFailureException {
|
||||
if (skip) {
|
||||
getLog().info("Test compilation is skipped");
|
||||
@@ -52,7 +90,7 @@ public class KotlinTestCompileMojo extends KotlinCompileMojoBase {
|
||||
if (arguments instanceof K2JVMCompilerArguments) {
|
||||
configureBaseCompilerArguments(
|
||||
getLog(), (K2JVMCompilerArguments) arguments,
|
||||
testModule, testSources, testClasspath, testOutput);
|
||||
testModule, getSources(), testClasspath, testOutput);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user