2012-04-09 55 views
16

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

有没有解决方案?

我的样品(非工作)代码:

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' 
    } 
    } 
} 

回答

7

去了解这个问题的方法是发布一个pom.xml或描述插件的依赖插件罐的ivy.xml一起。或者,您可以编写一个脚本插件,在buildscript {}部分声明其依赖关系。脚本插件只是一个可重复使用的构建脚本,可以与apply from: ...一起使用。

+3

如果任何人对如何完成这项工作感兴趣:您必须在MavenPublication中扩展默认的POM。 Netflix的星云插件是一个很好的例子来源:https://github.com/nebula-plugins/nebula-publishing-plugin/blob/master/src%2Fmain%2Fgroovy%2Fnebula%2Fplugin%2Fpublishing%2Fmaven%2FMavenJavaPublishingPlugin.groovy – Matthias 2015-08-21 15:03:23

+9

到Nebula发布插件的最新链接,以防有人访问此页面。 https://github.com/nebula-plugins/nebula-publishing-plugin/blob/master/src/main/groovy/nebula/plugin/publishing/maven/MavenPublishPlugin.groovy – dmahapatro 2015-09-25 03:22:16

相关问题