私は、いくつかのnetbeansプロジェクトのビルドとデプロイに関するさまざまな機能を、さまざまな環境にまとめる複雑なGradleスクリプトを持っています。
スクリプトは非常にうまく機能しますが、本質的には、プロジェクトと環境の情報を保持する6ダースのマップを通じてすべて構成されます。
タスクを別のファイルに抽象化して、単純なビルドファイルでマップを定義し、他のファイルからタスクをインポートできるようにしたいと考えています。このようにして、いくつかのプロジェクトに同じコアタスクを使用して、単純なマップのセットでそれらのプロジェクトを構成できます。
Antのタスクと同様の方法で、1つの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ビルドファイルを含む多数のサブプロジェクトで構成されるすべての大規模プロジェクトで使用できるファイルです。
apply from
すぐに外部タスクを実行します。これは実行ロジックでは望ましくない場合があります(つまり、すぐにではなく、必要なときにタスクを実行したい)。
apply from
すぐに外部のタスクを実行します。誤解を招かないでください。外部タスクは構成され、実行されません。