我需要应用一个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);
}
}
}然后,当我在另一个项目中应用这个插件(在获得了buildscript中的依赖项之后),如下所示:
apply plugin: 'my-errorprone'一个评估根项目“我的项目”的问题。
找不到id 'net.ltgt.errorprone‘的插件,无法应用插件id 'my-errorprone’.
只有当我将buildscript类路径添加到buildscript类路径时,它才会解决。
classpath "net.ltgt.gradle:gradle-errorprone-plugin:0.0.16"如何使插件的工作方式使使用插件的项目不必在"net.ltgt.gradle:gradle-errorprone-plugin:0.0.16“中的类路径中添加此直接依赖项?
发布于 2020-01-25 17:23:10
为了解决这个问题,应该按类而不是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
https://stackoverflow.com/questions/59863427
复制相似问题