diff --git a/src/bld/java/rife/bld/extension/CompileKotlinOperationBuild.java b/src/bld/java/rife/bld/extension/CompileKotlinOperationBuild.java index f11ef77..87dbee0 100644 --- a/src/bld/java/rife/bld/extension/CompileKotlinOperationBuild.java +++ b/src/bld/java/rife/bld/extension/CompileKotlinOperationBuild.java @@ -44,7 +44,7 @@ public class CompileKotlinOperationBuild extends Project { var kotlin = version(1, 9, 20); scope(compile) .include(dependency("org.jetbrains.kotlin", "kotlin-compiler", kotlin)) - .include(dependency("org.jetbrains.kotlin", "kotlin-annotation-processing", kotlin )) + .include(dependency("org.jetbrains.kotlin", "kotlin-annotation-processing", kotlin)) .include(dependency("org.jetbrains.dokka", "dokka-cli", dokka)) .include(dependency("org.jetbrains.dokka", "dokka-base", dokka)) .include(dependency("org.jetbrains.dokka", "analysis-kotlin-descriptors", dokka)) diff --git a/src/main/java/rife/bld/extension/CompileKotlinOperation.java b/src/main/java/rife/bld/extension/CompileKotlinOperation.java index d8f6afe..2d747de 100644 --- a/src/main/java/rife/bld/extension/CompileKotlinOperation.java +++ b/src/main/java/rife/bld/extension/CompileKotlinOperation.java @@ -47,6 +47,31 @@ public class CompileKotlinOperation extends AbstractOperation getJarList(File directory, String regex) { + var jars = new ArrayList(); + + if (directory.isDirectory()) { + var files = directory.listFiles(); + if (files != null) { + for (var f : files) { + if (!f.getName().contains("-sources") && f.getName().matches(regex)) { + jars.add(f.getAbsolutePath()); + } + } + } + } + + return jars; + } public static Collection getKotlinFileList(File directory) { if (directory == null) { @@ -239,15 +264,21 @@ public class CompileKotlinOperation extends AbstractOperation { - args.add("-P"); - args.add(a); - } ); + // kapt plugin & options + if (kotlinLibsDirectory_ != null && kaptOptions_ != null) { + var kaptJar = getJarList(kotlinLibsDirectory_, "^.*kotlin-annotation-processing.*\\.jar$"); + if (kaptJar.size() == 1) { + args.add("-Xplugin=" + kaptJar.get(0)); + kaptOptions_.args().forEach(a -> { + args.add("-P"); + args.add(a); + }); + } else if (LOGGER.isLoggable(Level.WARNING)) { + LOGGER.warning("Could not locate the Kotlin annotation processing JAR in:" + kotlinLibsDirectory_); + } } - // source + // sources sources.forEach(f -> args.add(f.getAbsolutePath())); if (LOGGER.isLoggable(Level.FINE) && !silent()) { @@ -293,6 +324,7 @@ public class CompileKotlinOperation extends AbstractOperation apClasspath_ = new ArrayList<>(); private final Collection> apOptions_ = new ArrayList<>(); private final AptMode aptMode_; @@ -88,7 +88,7 @@ public class KaptOptions { } /** - * A path to the annotation processor JAR. Pass as many apclasspath as the number of JARs that you have. + * A path to the annotation processor JAR. Pass as many classpath as the number of JARs that you have. * * @param apClasspath the list of classpath * @return this class instance @@ -229,7 +229,7 @@ public class KaptOptions { return this; } - // Base-64 encodes the option list + // Base-64 encodes the options list private String encodeList(Map options) throws IOException { var os = new ByteArrayOutputStream(); var oos = new ObjectOutputStream(os); @@ -269,7 +269,7 @@ public class KaptOptions { /** * A list of the options passed to {@code javac}. * - * @param javacArguments the arguments + * @param javacArguments the {@code javac} arguments * @return this class instance */ public KaptOptions javacArguments(Map javacArguments) { @@ -278,8 +278,8 @@ public class KaptOptions { } /** - * A list of annotation processor qualified class names. If specified, kapt does not try to find annotation - * processors in apclasspath + * A list of annotation processor qualified class names. If specified, {@code kapt} does not try to find annotation + * processors in {@link #apClasspath}. * * @param processors the list of qualified class names * @return this class instance diff --git a/src/main/java/rife/bld/extension/dokka/DokkaOperation.java b/src/main/java/rife/bld/extension/dokka/DokkaOperation.java index ad9888f..b3c7c8d 100644 --- a/src/main/java/rife/bld/extension/dokka/DokkaOperation.java +++ b/src/main/java/rife/bld/extension/dokka/DokkaOperation.java @@ -17,6 +17,7 @@ package rife.bld.extension.dokka; import rife.bld.BaseProject; +import rife.bld.extension.CompileKotlinOperation; import rife.bld.operations.AbstractProcessOperation; import rife.tools.StringUtils; @@ -89,7 +90,7 @@ public class DokkaOperation extends AbstractProcessOperation { // java args.add(javaTool()); - var cli = getJarList(project_.libBldDirectory(), "^.*dokka-cli.*\\.jar$"); + var cli = CompileKotlinOperation.getJarList(project_.libBldDirectory(), "^.*dokka-cli.*\\.jar$"); if (cli.size() != 1) { throw new RuntimeException("The dokka-cli JAR could not be found."); @@ -239,23 +240,6 @@ public class DokkaOperation extends AbstractProcessOperation { return this; } - private List getJarList(File directory, String regex) { - var jars = new ArrayList(); - - if (directory.isDirectory()) { - var files = directory.listFiles(); - if (files != null) { - for (var f : files) { - if (!f.getName().contains("-sources") && f.getName().matches(regex)) { - jars.add(f.getAbsolutePath()); - } - } - } - } - - return jars; - } - /** * Set the global external documentation links * @@ -449,13 +433,17 @@ public class DokkaOperation extends AbstractProcessOperation { public DokkaOperation outputFormat(OutputFormat format) { pluginsClasspath_.clear(); if (format.equals(OutputFormat.JAVADOC)) { - pluginsClasspath_.addAll(getJarList(project_.libBldDirectory(), JAVADOC_PLUGIN_REGEXP)); + pluginsClasspath_.addAll(CompileKotlinOperation.getJarList(project_.libBldDirectory(), + JAVADOC_PLUGIN_REGEXP)); } else if (format.equals(OutputFormat.HTML)) { - pluginsClasspath_.addAll(getJarList(project_.libBldDirectory(), HTML_PLUGIN_REGEXP)); + pluginsClasspath_.addAll(CompileKotlinOperation.getJarList(project_.libBldDirectory(), + HTML_PLUGIN_REGEXP)); } else if (format.equals(OutputFormat.MARKDOWN)) { - pluginsClasspath_.addAll(getJarList(project_.libBldDirectory(), GFM_PLUGIN_REGEXP)); + pluginsClasspath_.addAll(CompileKotlinOperation.getJarList(project_.libBldDirectory(), + GFM_PLUGIN_REGEXP)); } else if (format.equals(OutputFormat.JEKYLL)) { - pluginsClasspath_.addAll(getJarList(project_.libBldDirectory(), JEKYLL_PLUGIN_REGEXP)); + pluginsClasspath_.addAll(CompileKotlinOperation.getJarList(project_.libBldDirectory(), + JEKYLL_PLUGIN_REGEXP)); } return this; }