Open upupming opened 6 years ago
如果依赖使用的是本地的 jar 包,怎么办呢?最后打包成的 jar 包会将本地依赖也添加进去吗?
@Tianyijian 如果依赖使用的是本地的 jar 包,怎么办呢?最后打包成的 jar 包会将本地依赖也添加进去吗?
感谢老朋友捧场!
如果项目有依赖的 Jar 包的话,需要在 build.gradle
中增加一些定义。
fatJar
task 生成可执行 Jar 包,同时加上所有依赖的 Jar 包// create a single Jar with all dependencies
// See https://www.mkyong.com/gradle/gradle-create-a-jar-file-with-dependencies/
task fatJar(type: Jar) {
manifest {
attributes 'Implementation-Title': 'Gradle Jar File Example',
'Implementation-Version': version,
'Main-Class': 'application.GraphApp'
}
baseName = project.name + '-all'
// 打包所有 compile 所依赖的 Jar 包
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
// 打包所有 testCompile 所依赖的 Jar 包
from { configurations.testCompile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
然后运行 gradle fatJar
就可以生成可执行 Jar 包了,里面将包含本项目依赖的所有 Jar 包。实际上 Gradle 联网下载依赖(缓存于 ~/.gradle/caches/...
),并不会使用本地的 Jar 包,而且这里只要是程序所依赖的 Jar 包,都进行了添加。
运行生成的 Jar 包:
$ java -jar build/libs/[project name]-all-[version].jar
:smile:
PS: 你用的 maven 吗,跟 Gradle 应该也是差不多的吧?
https://upupming.site/2018/04/03/gradle-travis/
Gradle + Travis CI 学习笔记