問題タブ [gradle-custom-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
4652 参照

gradle - 単体テストで gradle タスク グラフをプログラムで呼び出す

私は gradle 用のカスタム プラグインを作成中です。単体テストの一環として、タスクを呼び出したいのですが、前提条件のタスクが実行されるように離れています。

残念ながら、実際のプラグインは内部プロジェクトであるため、正確なソースはわかりませんが、問題を示す単体テストを用意しました。

出力は次のとおりです。

テストをすぐに実行したい場合は、プロジェクトを github で入手できます。

書く代わりにこれを言う別の方法:

私は同等のものを実行したい:

単体テストで。

0 投票する
1 に答える
1346 参照

java - Gradle プラグインとは別のクラスパスで Java クラスを実行する

私のプラグインでは、外部 JAR から静的ブートストラップ メソッドを実行して分析を実行する必要があります。現在、コードから を使用して直接呼び出していますが、これにより、プラグインを実行するときに変更する (別の JAR バージョンを選択する) のが難しいMutationCoverageReport.main(arg)コンパイル時の依存関係をプラグインに作成する必要があります。

リフレクションを使用して呼び出したいのですが、WorkerProcessBuilderまたはのようなGradleコードでいくつかの例を見つけましJavaExecHandleBuilderた。それにもかかわらず、それらはorg.gradle.process.internalパッケージに含まれており、外部プラグインから使用することをお勧めするかどうかはわかりません.

質問。Gradleプラグインが指定されたクラスパスを持つ外部クラスから任意のJavaメソッドを実行するための推奨される方法は何ですか?

Antところで、タスクは別のプロジェクトであり、潜在的なバグと制限がある抽象化の別のレイヤーであるため、タスクを使用しないことをお勧めします。

0 投票する
1 に答える
515 参照

gradle - Gradle プラグインがその構成を使用して条件付きで他のプラグインを適用できるようにする

プラグインでは、プラグインの構成クロージャーでユーザーが配置した構成に基づいて、適用する他のプラグイン (Nexus プラグインまたは Bintray プラグインなど、両方ではない)を選択できるようにしたいと考えています。

通常、プロジェクトが評価された後、プラグインの構成を取得します。ユーザーが他のプラグインのデフォルト設定を自分で上書きできるようにしたいので、それは遅すぎます(そのため、以前に適用する必要があります)。

プラグインを (同じ JAR 内で) 2 つの別個のプラグインに分割し、最初のプラグインを適用し、構成クロージャーを提供し、2 番目のプラグインを適用し、最初のプラグインに提供された構成を使用して、適用するサード パーティのプラグインを決定する必要があります。

他のプラグインを条件付きで適用できる (そして、それらの構成クロージャーを使用できるようにする) ために、プラグインの構成を早期に取得するためのより良い方法はありますか?

0 投票する
1 に答える
259 参照

gradle - テスト プロジェクト ディレクトリに対してカスタム gradle タスクをテストする方法

私はそのようなタスクを持つカスタムgradleプラグインを持っています:

私はそれのための統合テストを持っています:

しかし、タスクのコマンド"git rev-list HEAD --count".execute().text.toInteger()がプロジェクト ディレクトリに対して実行されますが、テスト ディレクトリ"build/tmp/git-repository"に対して実行されないため、失敗します。

テスト プロジェクト ディレクトリに対してこのタスクを実行できますか?

アップデート:

@Mark Vieira と @Rene Groeschke に感謝します。彼らの提案によると、私はそのように修正しました:

0 投票する
2 に答える
1709 参照

gradle - Gradle プラグインでタスク プロパティを設定するにはどうすればよいですか

ソナーランナープラグインを適用し、ソナーホスト URL やソナー JDBC URL などの多くの値をデフォルト設定する gradle プラグインを作成しています。ただし、プロパティを設定する方法がわかりません。

これを build.gradle で設定するときは、次を使用します。

私のgradleプラグインは次のようになります:

このセットアップでは、No signature of method例外が発生します。これらのプロパティをどのように設定すればよいですか?