gpt4 book ai didi

java - 从自定义 Gradle Java 插件应用 gradle 插件(容易出错)

转载 作者:太空宇宙 更新时间:2023-11-04 09:09:16 24 4
gpt4 key购买 nike

我需要应用一个 gradle 插件,在这种情况下,自定义 Gradle 插件很容易出错。

我的插件有一个如下所示的 build.gradle:

gradlePlugin {
plugins {
myErrorprone {
id = 'my-errorprone'
implementationClass = 'com.my.MyErrorpronePlugin'
}
}
}

插件代码是:

public class MyErrorpronePlugin implements Plugin<Project> {
List<String> compilerArgs =
Arrays.asList(
"-XepExcludedPaths:.*/proto/.*|.*/protoGeneratedSrc/.*",
"-XepDisableWarningsInGeneratedCode");

@Override
public void apply(Project project) {
project.getPluginManager().apply("net.ltgt.errorprone:");
for (JavaCompile task : project.getTasks().withType(JavaCompile.class)) {
task.getOptions().setCompilerArgs(compilerArgs);
}
}
}

然后,当在另一个项目中我应用这个插件时(在构建脚本中获取依赖项之后)像这样:

apply plugin: 'my-errorprone'

A problem occurred evaluating root project 'my-project.

Failed to apply plugin [id 'my-errorprone'] Plugin with id 'net.ltgt.errorprone' not found.

只有当我添加到 buildscript 类路径时它才能解决

classpath "net.ltgt.gradle:gradle-errorprone-plugin:0.0.16"

如何使我的插件以这样的方式工作:使用我的插件的项目不必在“net.ltgt.gradle:gradle-errorprone-plugin:0.0.16”的类路径中添加此直接依赖项?

最佳答案

为了解决这个问题,应该按类而不是按 ID 应用插件。这将迫使您在插件的依赖项列表中包含容易出错的依赖项,因为在您添加依赖项之前它不会编译。

import net.ltgt.gradle.errorprone.ErrorPronePlugin.class;

public class MyPlugin implements Plugin<Project> {
public void apply(Project project) {
project.getPluginManager().apply(ErrorPronePlugin.class);
// custom logic here
}
}

在 build.gradle 文件中:

repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
api "net.ltgt.gradle:gradle-errorprone-plugin:1.1.1"
}

我在 Gradle 论坛的这个主题下找到了答案: https://discuss.gradle.org/t/apply-a-gradle-plugin-errorprone-from-a-custom-gradle-java-plugin/34645/4

关于java - 从自定义 Gradle Java 插件应用 gradle 插件(容易出错),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59863427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com