您要查找的是application 插件生成的分发zip 或shadowJar 插件生成的shadow jar(也称为fat jar):
分发 zip(application 插件)
关于分发 zip
分发 zip 如下所示:
my-app-0.2.0.zip
├──bin
│ ├──my-app
│ └──my-app.bat
└──lib
├──my-app-0.2.0.jar
├──slf4j-api.1.7.13.jar
└──commons-math3-3.6.jar
然后您可以通过解压缩在build/distributions/ 中生成的内容并运行my-app.bat(在Windows 上)或./my-app(在Linux 或OS X 上)来运行您的应用程序及其依赖项
构建分发 zip
这是一个用于制作分发 zip 的示例 gradle 构建文件:
build.gradle
apply plugin: 'java'
apply plugin: 'application'
mainClassName = 'org.myapp.Main'
repositories { jcenter() }
dependencies {
compile 'org.slf4j:slf4j-api:1.7.13'
compile 'org.apache.commons:commons-math3:3.6'
testCompile 'junit:junit:4.12'
}
可以使用gradle distributionZip 或gradle distributionTar 运行。要仅运行应用程序,请使用 gradle run。
影子罐
关于影子罐
shadow jar 是一个巨大的 jar 文件,它是您的程序及其库的组合,打包到一个文件中。您将获得一个独立的文件,可以通过在大多数系统上双击来运行(例如,在可以运行的 Windows 上,在 Xubuntu 上,它可以通过右键单击并选择“使用 Oracle Java 8 运行时运行”来运行,等等……)。
构建分发 zip
这里又是一个示例build.gradle 文件:
apply plugin: 'java'
apply plugin: 'com.github.johnrengelman.shadow'
mainClassName = 'org.myapp.Main'
jar {
manifest {
attributes('Main-Class': mainClassName)
}
}
buildscript {
repositories { jcenter() }
dependencies {
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.2'
}
}
repositories { jcenter() }
dependencies {
compile 'org.slf4j:slf4j-api:1.7.13'
compile 'org.apache.commons:commons-math3:3.6'
testCompile 'junit:junit:4.12'
}
使用gradle shadowJar 运行它 - 带有打包依赖项的 jar 将位于 build/libs 中,并将命名为 my-app-x.x.x-all.jar。