Android Gradle 能不能把依赖的 aar/jar 放在项目目录下?

2016-07-29 21:04:11 +08:00
 fly2never
我理解的 gradle 利用 maven 来下载和管理依赖. 但是当同事更新了依赖版本号后, 每个同事都要手动从中央库拖二进制包.

我的想法是能不能像 iOS 的 Cocoapods 那样管理, 每次更新依赖后, 都可以把依赖自动放在项目文件夹中, 而不是需要再次手动拉取, 这样其他同事每次 git pull 后, 就可以立刻离线编译了, 不需要再次依赖网络了.

gradle 有这样的用法吗? 请教各位
11490 次点击
所在节点    Android
14 条回复
sufish
2016-07-29 21:18:56 +08:00
可以,需要在 gradle 文件里面配置
fly2never
2016-07-29 21:21:21 +08:00
@sufish 请教一下关键字是啥, 我去搜索一下
Lonely
2016-07-29 21:27:46 +08:00
不理解为何会需要手动拖包。
skydiver
2016-07-29 21:32:33 +08:00
因为 gradle 默认把包存在~/.gradle 里面了,所以每个人都要下载一遍。

可以配置 GRADLE_USER_HOME 成一个公用的目录就好了

http://blog.james-carr.org/2011/05/04/setting-gradle-cache-to-a-common-location/
SoloCompany
2016-07-29 21:37:02 +08:00
难道正确姿势不是建 maven 镜像么
fly2never
2016-07-29 21:39:22 +08:00
@SoloCompany maven 镜像建立在公司内部, 外网 VPN 访问极慢, 所以才想同步到本地
raptium
2016-07-29 21:58:36 +08:00
这不是一样么,那以后就是 git pull 很慢
21grams
2016-07-29 22:02:21 +08:00
直接把 jar 加到工程里不就行了
fly2never
2016-07-29 22:08:36 +08:00
@raptium 在公司可以一次性通过 git pull 回来, 而不用每次 git pull 之后, 再去 gradle 一下
fly2never
2016-07-29 22:12:44 +08:00
@21grams 主要是想把 android 工程模块化, 其他模块需要通过版本稳定迭代. 全部放到工程里, 需要手动去做这件事, 失去了指定版本号自动同步的便利性
fly2never
2016-07-29 22:12:54 +08:00
@skydiver 棒! 不过 GRADLE_USER_HOME 会让所有的依赖在一个目录, 我想把当前项目用到依赖单独放在一个文件夹, 然后用 git submodule 管理起来
nicevar
2016-07-29 22:17:05 +08:00
allprojects {
repositories {
jcenter()
flatDir {
dirs './aar'
dirs '../aar'
}
}
}
liangzhitao
2016-07-30 06:20:55 +08:00
compile: fileTree(dir: $jarDir, include: $jarName)
skydiver
2016-07-30 11:08:46 +08:00
@fly2never 我以为你说的多人在同一个开发机要重复拖依赖的问题呢

不同机器的话就应该自己拖依赖,代码库只放配置文件。因为二进制文件不适合放版本库,时间长了 git 仓库会非常大(因为历史纪录都占空间)。

你应该建内部 maven 镜像来解决速度问题。

或者你可以写个 rsync 脚本从一个公用机器上同步到本地,这样也能快一点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/295888

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX