如果带有JAR
任务的传递库不是packaged:
By default, jar task in gradle builds an executable jar file from your project source files. It will not contain any transitive libs that are needed for your program.
相反,Netbeans 确实打包JAR
依赖关系或传递库。而不是胖JAR
gradle如何包含库?
plugins {
id 'com.gradle.build-scan' version '1.8'
id 'java'
id 'application'
}
mainClassName = 'net.bounceme.dur.mbaas.json.Main'
buildScan {
licenseAgreementUrl = 'https://gradle.com/terms-of-service'
licenseAgree = 'yes'
}
repositories {
jcenter()
}
jar {
manifest {
attributes 'Main-Class': 'net.bounceme.dur.mbaas.json.Main'
}
}
dependencies {
//compile fileTree(dir: 'libs', include: ['*.jar'])
runtime group: 'com.google.firebase', name: 'firebase-admin', version: '5.2.0'
compile fileTree(dir: 'lib', include: '*.jar')
}
与another问题有关:使用JAR
任务打包lib的“方式”是什么,这不会导致“胖JAR
”?
答案 0 :(得分:2)
使用应用程序插件时,应用程序使用的所有库(自己的jar或传递库)在打包为app时都会放在libs文件夹中。然后在启动应用程序时,在shell或批处理脚本中将这些库引用为类路径。
在gradle中创建fatjar的最简单方法是使用插件门户提供的shadow插件。有关详细信息,请参阅https://plugins.gradle.org/plugin/com.github.johnrengelman.plugin-shadow