如何从 gradle 创建一个包含 .java 字段(源代码)的 JAR 文件

How to create a JAR file from gradle that contains the .java fields (source code) as well

我正在使用 gradle 构建一些超级 jar 文件,这个 jar 文件有依赖关系,我用这个 guide 创建我可以 运行

我的任务是这样的,顺便说一句,我正在使用 kotlin

tasks.register<Jar>("uberJar") {
archiveClassifier.set("uber")

from(sourceSets.main.get().output)
duplicatesStrategy = DuplicatesStrategy.EXCLUDE;
dependsOn(configurations.runtimeClasspath)
from({
    configurations.runtimeClasspath.get().filter { it.name.endsWith("jar") }.map { zipTree(it) }
}})

我可以向此任务添加什么以添加我的 .java 文件。

我也不太了解这里发生的事情,比如 SourceSets 到底是什么?

尝试将此添加到您的 build.gradle.kts 中,看看是否有效:

tasks.named<ProcessResources>("processResources") {
    from("src/main/java")
}

当您的 uber-JAR 构建时,它应该包含源文件。虽然这也会将源文件添加到任何 JAR。如果这不是您想要的,那么您将需要在 uber-JAR 设置中配置类似的东西。