Gradleビルドの一般的な部分を分割/因数分解する方法はありますか
-
24-09-2019 - |
質問
いくつかの独立したビルドがあります(各独立したビルドはマルチプロジェクトビルドです)。メインのビルドスクリプトは、サブプロジェクトによって再利用される一連の一般的なタスクと、独立したビルドの間に多くの繰り返しがあるため、非常に大きくなります。私たちが探しているのは次のとおりです。
- メインビルドファイルを小さなファイルに分割する方法
- 他の独立したビルドでビルドの一部を再利用する方法
Gradleでそれを達成するための最良の方法は何ですか?
解決
Gradle 0.9を使用すると、別のビルドスクリプトからビルドスクリプトをインポートできます。見て: 外部ビルドスクリプトを使用してプロジェクトを構成します. 。基本的にそうです apply from: 'other.gradle'
.
ユーザーガイドが言及していないことの1つは、「From」パラメーターがURLになる可能性があるため、共有スクリプトをどこか(例:Subversion Repositoryなど)で利用可能にし、複数のビルドからインポートできることです。
他のヒント
私が見つけたソリューションは、あなたがあなたの中に持っているものをマッピングすることを意味します other.gradle
ファイル。
def getVersionName = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--tags'
standardOutput = stdout
}
return stdout.toString().trim()
}
ext{
VERConsts = [:]
VERConsts['NAME'] = getVersionName()
VERConsts['NAME_CALL'] = getVersionName
}
それから、あなたの中に build.gradle
ファイル:
apply from: 'other.gradle'
// ...
android {
defaultConfig {
versionName VERConsts['NAME_CALL']()
// or
versionName VERConsts['NAME']
}
}
そうして versionName
通話結果があります。
ノート:
VERConsts['NAME'] = getVersionName()
電話しますgetVersionName()
その結果を保存します。スクリプトでそれを使用しますversionName VERConsts['NAME']
次に、保存された値を割り当てます。VERConsts['NAME_CALL']
代わりに、関数への参照を保存します。使用VERConsts['NAME_CALL']()
スクリプトでは実際に関数を呼び出し、結果を変数に割り当てます
前者はスクリプト全体に同じ値が割り当てられ、後者は異なる値をもたらす可能性があります(たとえば、誰かがあなたのスクリプトの実行中に別のバージョンをプッシュする場合)。
所属していません StackOverflow