创建一个依赖于另一个(外部)插件的Gradle插件

vic*_*csz 16 gradle

我想创建一个自动应用其他(外部插件)的插件.这需要在我调用"apply plugin"之前设置插件的buildscript依赖项.但是,我似乎无法在插件中添加buildscript依赖项,或者我得到: 您无法更改未处于未解析状态的配置!

这个问题有方法解决吗 ?

我的示例(非工作)代码:

import org.gradle.api.Project
import org.gradle.api.Plugin
class SamplePlugin implements Plugin<Project>{
  void apply(Project project) {

    project.buildscript.dependencies.add("classpath","net.sourceforge.cobertura:cobertura:1.9.4.1");

    project.configure(project){         
      apply plugin: 'cobertura' 
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*ser 7

解决这个问题的方法是发布一个pom.xml或ivy.xml以及描述插件依赖项的插件Jar.或者,您可以编写一个脚本插件,在一个buildscript {}部分中声明其依赖项.脚本插件只是一个可以重用的构建脚本apply from: ....

  • 最新链接到星云发布插件,以防任何人访问此页面.https://github.com/nebula-plugins/nebula-publishing-plugin/blob/master/src/main/groovy/nebula/plugin/publishing/maven/MavenPublishPlugin.groovy (10认同)
  • 2019年有这方面的指导吗?我需要做与OP相同的事情,但我发现这个答案神秘/无证。我没有看到星云插件使用这种模式。 (5认同)
  • 如果有人对如何完成这项工作感兴趣:您必须在MavenPublication中扩展默认POM.Netflix的Nebula插件是一个很好的示例来源:https://github.com/nebula-plugins/nebula-publishing-plugin/blob/master/src%2Fmain%2Fgroovy%2Fnebula%2Fplugin%2Fpublishing%2Fmaven%2FMavenJavaPublishingPlugin.groovy (4认同)