2016-09-14 20 views
3

私はgradleカスタムプラグインを作成しています。私のタスクの1つは、別のプラグインが同じプロジェクトに適用されていることを確認する必要があります。それはその上で動作するためです。 私のプラグインのユーザーが別のプラグインに明示的な依存関係を設定しないようにしたい - 私はプラグインの中でそれをやりたいGradle:別のプラグインからプラグイン依存関係を追加する

このプラグイン(https://plugins.gradle.org/plugin/org.hidetake.ssh)を適用したいと思います。それは私の依存です。

プラグインを作成する方法 - 私はgroovyでクラスコードを作成し、buildSrc \ src \ main \ groovyに入れ、プロジェクトにgroovyプラグインを適用します。だから私のカスタムプラグインは、ビルドフェーズでは、gradleに表示されます。それは動作します、私は同じプロジェクトのためにこのようにした他のプラグインはほとんどありませんので、今のところうまくいきます。

私は同じ質問について他の話題とgoogleを見てきましたが、私はこの仕事をすることはできません。私が得た

void apply(Project project) { 

    project.buildscript { 
     repositories { 
     maven { 
      url "https://plugins.gradle.org/m2/" 
     } 
     } 
     dependencies { 
     classpath "org.hidetake:gradle-ssh-plugin:1.1.3" 
     } 
    } 

    project.apply plugin: "org.hidetake.ssh" 
    ... 

エラーメッセージ:「org.hidetake.ssh」はを見つけていないIDを持つプラグインこれはどのように私は、コードを適用します。 私はgradle apiでproject.repositories.mavenCentral()とproject.dependencies.addとproject.apply(プラグイン: 'org.hidetake.ssh')を使ってやってみました - 同じエラーメッセージ。 project.dependencies.add( "myConfig"、[group: 'org.hidetake'、名前: 'gradle-ssh-plugin'、バージョン: '1.1.3'])で長い表記を使用しようとしました。

誰かが正しい構文に導くことができれば嬉しいです。

答えて

2

最後に私はそれを得ました。この問題を解決するには、以下を実行する必要があります。

  1. buildSrcディレクトリにbuild.gradleを配置します。
  2. プラグインの依存関係をランタイムと宣言してください。このように:

    repositories { 
        jcenter() 
    } 
    dependencies { 
        runtime 'org.hidetake:gradle-ssh-plugin:2.6.0' 
    } 
    
  3. 独自のプラグイン定義で明示的にプラグインを適用します。このように:

    void apply(Project project) { 
        project.pluginManager.apply('org.hidetake.ssh') 
    ... 
    
+0

これは素晴らしい作品。私は、依存関係の自動更新のチェックを行うために、すべてのプロジェクトに 'com.github.ben-manes:gradle-versions-plugin:0.17.0'を適用するために使用しています(他の依存関係やタスクに共通のベースプラグインを使用します) 。どうもありがとう! –

関連する問題