1. ホーム
  2. gradle

[解決済み] Gradleビルドスクリプトから共通メソッドを抽出する

2023-01-31 23:34:10

質問

Gradleのビルドスクリプト( build.gradle ) があり、その中でいくつかのタスクを作成しました。これらのタスクは主にメソッドの呼び出しで構成されています。呼び出されたメソッドもビルドスクリプトの中にあります。

さて、ここからが本題です。

私はかなりの量のビルド スクリプトを作成しており、それらは異なるタスクを含んでいますが、元のスクリプトから同じメソッドを利用しています。したがって、新しいスクリプトを作成するたびにそれらをコピーするのではなく、簡単に再利用できるように、何らかの方法でこれらの共通のメソッドを抽出したいと思います。

もしGradleがPHPだったら、以下のようなものが理想的でしょう。

//script content
...
require("common-methods.gradle");
...
//more script content

しかし、もちろん、それは不可能です。それとも、そうなのか?

とにかく、どうすればこの結果を得られるのか?これを行うための最良の方法は何でしょうか? 私はすでにGradleドキュメントに目を通しましたが、どの方法が最も簡単で、これに最も適しているのか判断できないようです。

前もってありがとうございます!


UPDATEです。

別ファイルでメソッドを抽出することに成功しました

(使用する apply from: 'common-methods.gradle' ),

ということで、以下のような構成になります。

parent/
      /build.gradle              // The original build script
      /common-methods.gradle     // The extracted methods
      /gradle.properties         // Properties used by the build script

からタスクを実行した後 build.gradle からタスクを実行した後、新たな問題にぶつかりました:どうやら、メソッドが common-methods.gradle .

これを修正する方法について何かアイデアはありますか?

どのように解決するのですか?

メソッドを共有することはできませんが、クロージャを含む余分なプロパティを共有することは可能で、結局は同じことです。例えば ext.foo = { ... }common-methods.gradle を使用します。 apply from: を使用してスクリプトを適用し、クロージャを foo() .