为多模块gradle项目创建一个单一的源jar



我有一个多模块渐变项目设置,如下所示:

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,并单独包含它们。

例如,在每个子模块中:

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'
}
publishing {
publications {
mavenJava(MavenPublication) {
groupId = rootProject.group
artifactId = "$rootProject.name-$project.name"
version = rootProject.project.version
from components.java
artifact sourcesJar
}
}

相关内容

  • 没有找到相关文章

最新更新