Kotlin Maven 插件中如果为空则跳过

Tra*_*cer 6 maven-plugin maven kotlin

我们在最顶层的项目 POM 中启用了 Kotlin Maven 插件,如下所示:

<plugin>
    <groupId>org.jetbrains.kotlin</groupId>
    <artifactId>kotlin-maven-plugin</artifactId>
    <version>${kotlin.version}</version>

    <executions>
        <execution>
            <id>compile</id>
            <phase>process-sources</phase>
            <goals>
                <goal>compile</goal>
            </goals>
        </execution>

        <execution>
            <id>test-compile</id>
            <phase>process-test-sources</phase>
            <goals>
                <goal>test-compile</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

ATM,这个项目中只有少数模块有 Kotlin 源代码。(该项目大约有 50 个模块。)我们的想法是大多数最终都会有 Kotlin 代码,我们不想在每个项目的基础上进行连接。我们想配置一次,然后忘记它。

这有效,除了我们在大多数模块的构建中收到此警告:

[INFO] Kotlin Compiler version 1.0.2
[WARNING] No sources found skipping Kotlin compile
Run Code Online (Sandbox Code Playgroud)

我们的 JAR 插件也有这个问题。该插件有一个配置选项,允许我们这样做:

<configuration>
    <skipIfEmpty>true</skipIfEmpty>
</configuration>
Run Code Online (Sandbox Code Playgroud)

这个关闭那个插件的类似警告。不过,Kotlin 编译器插件似乎没有任何此类配置选项。

所以,我的问题是:

  1. 有没有我们忽略的配置选项?
  2. 我们是否应该以不同的方式配置 Kotlin 编译器插件以避免此警告?

蒂亚!

khm*_*ise 4

处理此类事情的默认方法是像在项目的父级中一样定义配置,通过pluginManagement它可以防止所有不正确的模块继承它。与那些使用 Kotlin 的模块相比,您需要在 pom 文件中添加几行:

<build>
  <plugins>
    <plugin>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

如果 kotlin-maven-plugins 包含这样的选项,我无法告诉你,因为我没有找到它的源代码,也不存在包含所有默认值和选项等的 Maven 生成的站点。但事实并非如此(其实不太好)..

或者另一种解决方案是更改具有自己生命周期的 kotlin-maven-plugin,这意味着更改插件的代码...并且只需更改<packaging>kotlin</packaging>这些模块的...这是原作者要做的工作...

如果您需要添加<skipIfEmpty>..</skipIfEmpty>maven-jar-plugin 的选项,这听起来也是错误的......