私はマルチプロジェクト対応の設定プラグインを持っています。現在、settings.gradle
で特定されているすべてのプロジェクトに適用されます。しかし、各サブプロジェクトは同じ設定をしていないので、これは問題です。コマンドラインで設定したプロジェクトプロパティを使用してプラグインの動作を制御します(-P
)。gradleで呼び出されたプロジェクトのリストを確認
問題は、このプロパティを使用するのに必要な設定がないプロジェクトで失敗し、コマンドラインから特定のサブプロジェクトにプロパティを適用する方法がわかっていることです。
settings.gradle.allprojects
を反復するのではなく、ビルドの一部として実際にどのプロジェクトが含まれているかを知る方法はありますか?例えば、私が行うとき:
gradle :subproject-name:build :other-subproject-name:build -PsomeProperty
私はプロジェクトのみに設定プラグインを適用することができるようにだけsubproject-name
とother-subproject-name
が呼び出されたことを知っていただきたいと思います。
または、プロジェクトのプロパティを特定のプロジェクトのみに「スコープ」する方法はありますか?
私は恐れていました。残念ながら、私が持っているプラグインはバージョニングプラグインなので、それまでにプロジェクトのバージョンを構成する必要があります。私は、プロジェクトプロパティを特定のプロジェクトにのみ適用するように指定する方法があることを願っています。 –
@VivinPaliath私は、プロジェクトを構成する前にプロジェクトバージョンを設定する必要がある理由について100%明確ではありません。最終的には、あなたのアプローチを再考したいかもしれません。プラグインを適用しようとしている初期化フェーズでは、ビルドに関する情報が非常に限られています。 'project.version'は設定段階で設定することができ、より多くの情報を利用できます。あなたのタスクは、それらを定義していると仮定して、実行時に 'project.version'の値を読み取るように設定することができます。 – nickb
遅延の問題が発生し始めます。 jarプラグインとmaven-publishプラグインは良い例です。私のプラグインは、gitタグに基づいてバージョンを設定し、バージョン管理を制御する特定のプロパティを渡します。私は、メジャー、マイナー、パッチ、またはリリース前にバンプする。タスクが準備完了するのを待っていると、プロジェクトバージョンを使用するタスクは正しいバージョンを取得せず、その後、 'afterEvaluate'でタスクを再構成する必要があります。設定時にバージョンを設定するタスクを認識する必要があるため、ユーザーの負担が増えます。 –