Java ソースとこれらのソース (たとえば、 project a
) から一連の jar を生成するタスクがあります。これらの jar を依存プロジェクト (たとえば、 project ) にエクスポートしたいと思いますb
。だからここに私が今持っているものがあります:
//a.gradle
configurations{
generatedJars
}
task generateJars(type: JavaExec) {
//generate jars ...
outputs.files += //append generated jars here
}
dependencies{
generatedJars generateJars.outputs.files
}
//b.gradle
dependencies{
project(path: ':a', configuration: 'generatedJars')
}
依存関係として追加しても、まだ生成されたjarがないときにタスクgenerateJars.outputs.files
を実行する必要があることをgradleに伝えないことを除いて、問題なく動作します。generateJars
jar/zip タスクをアーティファクト構成に追加したときと同じように機能することを期待して、タスク自体を依存関係として追加しようとしましたが (例: artifacts{ myJarTask }
)、それができないというエラーがスローされます。 . もちろん、評価を開始generateJars
する前のビルド プロセスのどこかにタスクを挿入することもできます:b
が、それは不器用で脆いので、避けたいと思います。
生成されたjarをプロジェクトに追加する必要があるように感じますがartifacts{ ... }
、それらを依存プロジェクトに表示する方法がわかりません。これを達成するためのより良い方法はありますか?
依存プロジェクト ( project ) は、 IntelliJ IDEA モジュールのクラスパスを設定して、 projectの生成された jarb
を指す必要があります。a
このようなもの(疑似コード):
//b.gradle
idea{
module{
scopes.COMPILE.plus += project(path: ':a', configuration: 'generatedJars').files
}
}
これまでのところ、プロジェクト:a
の依存関係をgeneratedJars
inに単純に追加しようとしました:b
が、Idea プラグインは単にモジュール:a
をモジュールの依存関係として追加し、生成された jar をエクスポートすると想定するため (これはおそらく正しい想定です)、生成された jar を に追加しません。:b
のクラスパス。
どんな助けでも大歓迎です!