【发布时间】:2020-07-29 15:48:22
【问题描述】:
我有一个这样的多模块 gradle 项目设置:
Module A (Parent)
-build.gradle
-settings.gradle
+Module B
--src
---main
----java
----kotlin
--build.gradle
+Module C
--src
---main
----java
----kotlin
--build.gradle
在这种情况下,模块 B 对模块 C 有编译时间依赖性。
我想创建一个包含所有子项目的源的源 jar,以发布到我的存储库。
在单个模块构建中,我已将以下内容添加到我的项目中,但将其添加到所有子项目不会导致在生成的源 jar 中收集源集:
sourceSets {
main.kotlin.srcDirs += 'src/main/kotlin'
main.java.srcDirs += 'src/main/java'
}
task sourcesJar(type: Jar) {
from sourceSets.main.kotlin
from sourceSets.main.java
archiveClassifier = 'sources'
}
我该怎么做? ShadowJar 有效,但不幸的是,据我所知,它不提供创建源 jar 的选项。
【问题讨论】:
-
出于好奇,你为什么想要一个单一的源 jar?
-
在我们的用例中,多模块项目作为一个库,由位于其他地方的应用程序所依赖。在实践中,依赖于模块 C 的子模块比我的示例中的要多,目前我们希望能够从其他应用程序中依赖它们。子模块本身都非常轻量级,因此我们希望尽可能避免创建存储库集合来容纳它们。
标签: gradle build multi-module build-system