【发布时间】:2017-04-06 07:01:22
【问题描述】:
我将 Gradle 用于一个简单的 Java 项目,并希望生成一个单独的胖 JAR,其中还包含源代码。
我在https://github.com/szarnyasg/gradle-shadowjar-source 准备了一个示例存储库。我试过这个build.gradle 配置:
plugins { id "com.github.johnrengelman.shadow" version "1.2.4" }
apply plugin: 'java'
shadowJar {
classifier = 'fat'
manifest { attributes 'Main-Class': 'org.example.MyMain' }
}
task packageSources(type: Jar) {
from sourceSets.main.allSource
}
artifacts.archives packageSources
我可以用:
./gradlew clean build shadowjar
这会在build/libs 目录中生成两个 JAR 文件:
-
example-fat.jar- 没有来源的胖 JAR -
example.jar- 带有(仅)源的 JAR
Gradle Shadow plug-in 的文档指出
在存在
java或groovy插件的情况下,Shadow 会 自动配置以下行为:[...]
- 将
shadowJar任务配置为包括来自 项目的主要 sourceSet。
对我来说,这意味着源包含在生成的 JAR 中,但这可能不是它的意思。
是否可以从 Gradle 生成可执行的 fat JAR,其中还包含源代码?
【问题讨论】: