[英]Apply a gradle plugin (errorprone) from a custom Gradle Java plugin
我需要应用一个 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'
评估根项目“my-project”时出现问题。
未能应用插件 [id 'my-errorprone'] 未找到 ID 为“net.ltgt.errorprone”的插件。
它只有在我添加到 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.