2017-07-31 4 views
0

のGradleスクリプトは、私はむしろgradleリポジトリのヘルパーメソッドを定義する方法は?

repositories { 
    mavenCentral() 
    myPrivateMavenRepo() 
} 

ような何かを書くことができるように例

repositories { 
    mavenCentral() 
} 

のために、私は私自身のショートカット機能を定義するためにmyPrivateMavenRepo()ような何かをしたいと思い、共通のよく知られたリポジトリを定義するためのショートカット機能を持っています

repositories { 
    mavenCentral() 
    maven { 
     url "http://repo.mycompany.com/maven2" 
    } 
} 

質問より

  • どのようにカスタムレポ機能を開発できますか?
  • このカスタム機能はどこにホストされていますか?
  • 私はgradleに切り替える必要があるreposがたくさんあります。私はrepoのURLを使って各build.gradleファイルをハードコードしたくありません。どのようにしてブートストラップが簡単な方法でこれを集中化するのですか?
+0

にあなたをそれを回すことができると思いますhttps://stackoverflow.com/questions/27777591/how-to-define-and-call-custom-methods-in-build-gradleを探しています – Akash

答えて

1

repositoriesクロージャのメソッドは、RepositoryHandlerインターフェイスで定義されています。 mavenCentral(),mavenLocal()およびjcenter()はあらかじめ定義されたリポジトリを追加しますが、他のすべてのメソッドは設定クロージャ、アクション、またはマップを必要とし、新しいArtifactRepositoryに適用されます。

単純なアプローチは、このような構成の閉鎖、アクションやマップを定義し、プラグインの拡張機能を経由して、それらを提供するために、次のようになります。

repositories { 
    mavenCentral() 
    maven myPluginExtension.myRepoClosure 
} 

RepositoryHandlerArtifactRepositoryContainerですので、あなたが直接addのようなその修正方法を使用することができますArtifactRepositoryオブジェクトを作成し、登録します。

repositories { 
    jcenter() 
    add myPluginExtension.myRepo 
} 

をあなたはRepositoryHandler、することができますalter its meta classに直接メソッドを追加したい場合。これはGroovyの機能なので、Groovyプラグインでのみ使用でき、Javaプラグインでは使用できません。

project.repositories.metaClass.myRepo { 
    // implement logic to add repository (e.g. call maven(closure) ...) 
} 

方法は、ビルドスクリプトで利用できるようになります:

repositories { 
    mavenLocal() 
    myRepo() 
} 
0

は、私はあなたがおそらく

allprojects { 
    repositories.ext.myPrivateMavenRepo = { 
     repositories.maven { 
      url: 'http://repo.mycompany.com/maven2' 
     } 
    } 
} 

を行うことができますが、簡単にProbabalyプラグイン

関連する問題