首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从自定义gradle Java插件中应用Gradle插件(容易出错)

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

Stack Overflow用户
提问于 2020-01-22 15:46:52
回答 1查看 512关注 0票数 1

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

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

代码语言:javascript
复制
gradlePlugin {
    plugins {
        myErrorprone {
            id = 'my-errorprone'
            implementationClass = 'com.my.MyErrorpronePlugin'
        }
    }
}

插件代码是:

代码语言:javascript
复制
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中的依赖项之后),如下所示:

代码语言:javascript
复制
apply plugin: 'my-errorprone'

一个评估根项目“我的项目”的问题。

找不到id 'net.ltgt.errorprone‘的插件,无法应用插件id 'my-errorprone’.

只有当我将buildscript类路径添加到buildscript类路径时,它才会解决。

代码语言:javascript
复制
classpath "net.ltgt.gradle:gradle-errorprone-plugin:0.0.16"

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

EN

回答 1

Stack Overflow用户

发布于 2020-01-25 17:23:10

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

代码语言:javascript
复制
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文件中:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59863427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档