2012-04-09 20 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のNebulaプラグインは、例のための素晴らしいソースです:https://github.com/nebula-plugins/nebula-publishing-plugin/blob/master/src%2Fmain%2Fgroovy%2Fnebula%2Fplugin%2Fpublishing%2Fmaven%2FMavenJavaPublishingPlugin.groovy – Matthias

+9

Nebulaへの最新のリンクは誰でもこのページを訪れるためにPluginを公開しています。 https://github.com/nebula-plugins/nebula-publishing-plugin/blob/master/src/main/groovy/nebula/plugin/publishing/maven/MavenPublishPlugin.groovy – dmahapatro

関連する問題