1

このようなgradleマルチプロジェクトがある場合

RootProject
+-- SubProjectA
+-- SubProjectB

すべてのプロジェクトにはタスク「foo」があり、ルート プロジェクトで呼び出すことができます

RootProject>gradle foo

サブプロジェクトに対しても実行されます

:foo
:SubProjectA:foo
:SubProjectB:foo

しかし、サブプロジェクトからタスク ':foo' を呼び出すと

RootProject\SubProjectA>gradle :foo

ルート プロジェクトのタスクのみが実行されます

:foo

サブプロジェクトの「foo」タスクではありません。

サブプロジェクトにいる間にすべてのプロジェクトで「foo」を呼び出す方法はありますか? 私はgradle eclipseプラグインを使用していて、サブプロジェクト、つまりEclipseで表示されるプロジェクトにしかアクセスできないため、これを求めています。

ところで:これまでに思いついた(ややハックな)ソリューション

task fooAll(type:Exec) {
    workingDir '..'
    commandLine 'cmd', '/c', 'gradle foo'
}
4

1 に答える 1

1

タスク名(例: )のタスクへの解決は、現在のディレクトリをデフォルトとするstart ディレクトリfooの機能です。コマンド ライン オプションを使用して開始ディレクトリを変更できます( を参照)。したがって、次のようにする必要があります。-pgradle --helpgradle foo -p ../

また、ルート プロジェクトをインポートすることは、Eclipse の問題を解決するためのより良い方法かもしれません。Eclipse ツールは、階層的なディレクトリ レイアウトを非常にうまく処理します。

PS::fooはタスクパスです。fooルート プロジェクト ( ) で指定されたタスクを参照します:

于 2013-03-28T15:41:09.947 に答える