私はこれが答えられたことを知っていますが、答えは古く(現在のGradleバージョンはいくつかのメジャーバージョンより新しい-6.2.2)、このスレッドは検索エンジンに非常に高く表示されるので、私のために働いた解決策を投稿します。
一般的に、私の問題は元の投稿で述べられているものと似ています/同じです:すべてのサブプロジェクトからクラスを取得して1つのjarに圧縮したかった(できれば可能な限りデフォルト設定を使用して)。最後に、次のコードでうまくいくことがわかりました。
jar {
from subprojects.sourceSets.main.output
}
しかし、jarを適切にビルドする一方で、このjarをすべてのサブプロジェクトが行うすべてに依存する単一のアーティファクトとしてMavenリポジトリーに公開できるようにしたかったのです。これを実現するには、メインプロジェクトはサブプロジェクトの依存関係に依存する必要があります。これは次の方法で行われます。
subprojects.each { evaluationDependsOn(it.path) }
dependencies {
api(externalSubprojectsDependencies('api'))
implementation(externalSubprojectsDependencies('implementation'))
}
private externalSubprojectsDependencies(String configuration) {
subprojects.collect { it.configurations[configuration].allDependencies }.flatten()
.findAll { !it.properties['dependencyProject'] } // this looks like hack, I'd love to see better solution
}
外部の依存関係のみがコピーされpom.xml
ます-とにかくすべてのクラスがjarにあるため、内部(プロジェクト)の依存関係をリストする必要はありません。