[解決済み] Gradleスクリプトを別のスクリプトにインポートするには?
質問
私は、多数のNetBeansプロジェクトの構築と多数の環境へのデプロイに関する機能のロードをラップする複雑なGradleスクリプトを持っています。
スクリプトは非常によく動作しますが、本質的には、プロジェクトと環境情報を保持する半ダースのマップを通してすべて構成されています。
私は、タスクを別のファイルに抽象化して、単純なビルド ファイルで私のマップを定義し、別のファイルからタスクをインポートできるようにしたいと思います。この方法で、私は多くのプロジェクトに同じコア タスクを使用し、単純なマップのセットでこれらのプロジェクトを構成することができます。
誰か、Antのタスクと同様の方法で、ある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ビルドファイルを持つ多くのサブプロジェクトからなるすべての大規模プロジェクトで使用することができるファイルです。
どのように解決するのですか?
質問の答えは、プラグインシステムにあることがわかりました。
buildSrc/src/main/groovy
. プラグインはJarとしてバンドルすることもできますが、私はこれを試したことはありません。
詳細はこちら。 カスタムプラグイン
関連
-
[解決済み】パッケージ名(Google Analytics)に一致するクライアントが見つからない - 複数のproductFlavorsとbuildTypes
-
Java の switch case 文で必要な定数式の問題の解決法
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] スタックトレースを文字列に変換するにはどうすればよいですか?
-
[解決済み] gradleに依存関係を強制的に再ダウンロードさせるには?
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
NullPointerException - java.lang.
-
スレッド "main "での例外 java.util.NoSuchElementException in Java 問題解決済み
-
Jsoup-Crawlingの動作
-
JAVA_HOME環境変数が正しく定義されていない問題を解決する
-
強制型変換について
-
Java Notes 005_この行に複数のマーカーがある - キーを変数に解決できない - シンタックスエラー、ins
-
セミコロン期待値エラー解決
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
Java Runtime Environmentを継続するためのメモリが不足しています。