我将 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
- 没有来源的胖 JARexample.jar
- 带有(仅)源的 JAR
Gradle Shadow 插件的文档指出
在存在
java
或groovy
插件的情况下,Shadow 会自动配置以下行为:[...]
- 将任务配置
shadowJar
为包括项目主 sourceSet 中的所有源。
对我来说,这意味着源包含在生成的 JAR 中,但这可能不是它的意思。
是否可以从 Gradle 生成一个可执行的胖 JAR,其中还包含源代码?