如何从自定义 Java 插件内部配置 gradle 插件中的操作

问题描述 投票:0回答:1

从 gradle 插件内部我想配置另一个 gradle 插件。特别是我想像gradle手册中提到的那样设置java工具链

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
}

我可以使用 PluginManager 访问扩展:

package com.clavisit.clientis.web.gradle;

import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.plugins.JavaPluginExtension;

public class BuildPlugin implements Plugin<Project> {

  @Override
  public void apply(Project target) {
    target.getPluginManager().apply("java");

    target.getExtensions().configure(JavaPluginExtension.class, javaPluginExtension -> {
      // how to configure the toolchain
    });
  }

}

但是这里如何配置工具链呢?扩展为我提供了一个 getter 和一个 Action 方法,但无法配置 JavaToolChainSpec。

  JavaToolchainSpec getToolchain();

  JavaToolchainSpec toolchain(Action<? super JavaToolchainSpec> action);

有什么想法吗?

java gradle gradle-plugin
1个回答
0
投票

您已经完成了所有艰苦的工作,并展示了如何使用

Action
配置对象。继续使用这些 lambda 函数进行配置:

target.getExtensions().configure(JavaPluginExtension.class, javaPluginExtension -> {
    javaPluginExtension.toolchain(toolchain -> { 
        toolchain.getLanguageVersion().set(JavaLanguageVersion.of(21)); 
    });
});

也许另一个棘手的地方是

getLanguageVersion
返回一个
Property
对象,因此您需要
set
它,而不是像构建脚本中允许的那样进行分配。

© www.soinside.com 2019 - 2024. All rights reserved.