私は複雑な Gradle スクリプトを持っています。これは、多数の NetBeans プロジェクトの構築と多数の環境への配備に関連する多数の機能をまとめたものです。
スクリプトは非常にうまく機能しますが、基本的には、プロジェクトと環境の情報を保持する 6 個のマップを介して構成されます。
単純なビルド ファイルでマップを簡単に定義し、他のファイルからタスクをインポートできるように、タスクを別のファイルに抽象化したいと考えています。このようにして、同じコア タスクを多数のプロジェクトに使用し、これらのプロジェクトを単純な一連のマップで構成できます。
Antのタスクと同様の方法で、あるGradleファイルを別のGradleファイルにインポートする方法を誰か教えてもらえますか? これまでのところ、Gradle のドキュメントを調べても役に立ちませんでした。
追加情報
以下のトムの回答の後、私は自分の言いたいことを正確に理解しようと思いました.
基本的に、いくつかのサブプロジェクトを実行する Gradle スクリプトがあります。ただし、サブプロジェクトはすべて NetBeans プロジェクトであり、独自の ant ビルド スクリプトが付属しているため、Gradle でこれらのそれぞれを呼び出すタスクがあります。
私の問題は、ファイルの先頭に次のような構成があることです。
projects = [
[name:"MySubproject1", shortname: "sub1", env:"mainEnv", cvs_module="mod1"],
[name:"MySubproject2", shortname: "sub2", env:"altEnv", cvs_module="mod2"]
]
次に、次のようなタスクを生成します。
projects.each({
task "checkout_$it.shortname" << {
// Code to for example check module out from cvs using config from 'it'.
}
})
私はこの種のタスク生成スニペットをたくさん持っていますが、それらはすべて一般的なもので、プロジェクト リストの構成に完全に依存しています。
だから私が欲しいのは、これを別のスクリプトに入れて、次のような方法でインポートする方法です:
projects = [
[name:"MySubproject1", shortname: "sub1", env:"mainEnv", cvs_module="mod1"],
[name:"MySubproject2", shortname: "sub2", env:"altEnv", cvs_module="mod2"]
]
import("tasks.gradle") // This will import and run the script so that all tasks are generated for the projects given above.
したがって、この例では、tasks.gradle にすべての汎用タスク生成コードが含まれ、メインの build.gradle ファイルで定義されたプロジェクトに対して実行されます。このように、tasks.gradle は、NetBeans ant ビルド ファイルを含む多数のサブプロジェクトで構成されるすべての大規模プロジェクトで使用できるファイルです。