我正在一个简单的Java项目中使用Gradle,并希望生成一个包含源代码的单一的fat JAR。
我在以下示例存储库中准备了一个示例: https://github.com/szarnyasg/gradle-shadowjar-source。我尝试了以下
我在以下示例存储库中准备了一个示例: 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
- 不带源代码的fat JARexample.jar
- 仅包含源代码的JAR
Gradle Shadow插件的文档说明了以下内容:
在使用
java
或groovy
插件时,Shadow会自动配置以下行为:[...]
- 配置
shadowJar
任务以包括项目主要sourceSet中的所有源。
对我来说,这意味着源代码包含在生成的JAR中,但这可能不是它的意思。
是否可以从Gradle生成一个包含源代码的可执行fat JAR?