V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fly2never
V2EX  ›  Android

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

  •  
  •   fly2never · 2016-07-29 21:04:11 +08:00 · 6621 次点击
    这是一个创建于 2821 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我理解的 gradle 利用 maven 来下载和管理依赖. 但是当同事更新了依赖版本号后, 每个同事都要手动从中央库拖二进制包.

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

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

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

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

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

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

    或者你可以写个 rsync 脚本从一个公用机器上同步到本地,这样也能快一点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1207 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:10 · PVG 02:10 · LAX 11:10 · JFK 14:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.