前言
众所周知,一般来说,随着代码不断写得多,我们可能会有把别的依赖打包进自己jar的需求。而有时候偏偏就有那么几个突出的插件和 shadow 冲突,导致打包不完整(亲身经历)。那么在不用 shadow 的情况下我们要怎么把依赖打进 jar 里呢?
jar.from
在 jar.from { }
块里面填路径可以将一些文件打包进 jar 里面,使用 zipTree
可以获取压缩文件路径,使用 configurations.compile
可以获得依赖列表,知道这些我们就能开写了。
在 configurations.compile
中有 findAll
,find
,collect
等非常方便的方法,接下来我们需要灵活运用这些方法。
// 添加单个依赖,搜索方式为 名字包含关键词
jar.from {
zipTree configurations.compile.find { it.name.contains '依赖名' }
}
接下来我们稍加修改
// 添加多个依赖,搜索方式为 名字包含关键词
jar.from {
configurations.compile.findAll {
// 搜索条件
it.name.contains('依赖1') || it.name.contains('依赖2')
}.collect {
// 处理搜索结果
zipTree it
}
}
// 添加全部依赖的方法网上一堆,我不说了
补: 本人在 Gradle 7.3.3 找不到 configurations.compile
这个配置,经过测试,在高版本 Gradle 应将 configurations.compile
改为 configurations.compileClasspath
后记
踩了快一个小时的坑找到的方法。不要碰Groovy,会变得不幸。
人都要傻了,没去查资料,整篇看起来像胡言乱语,总之代码能用就行了,管他呢。