upupming / upupming.github.io

upupming's Blog
https://upupming.site
Other
1 stars 0 forks source link

Gradle + Travis CI 学习笔记 | upupming #23

Open upupming opened 6 years ago

upupming commented 6 years ago

https://upupming.site/2018/04/03/gradle-travis/

Gradle + Travis CI 学习笔记

Tianyijian commented 6 years ago

如果依赖使用的是本地的 jar 包,怎么办呢?最后打包成的 jar 包会将本地依赖也添加进去吗?

upupming commented 6 years ago

@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 应该也是差不多的吧?