为什么有了 Git 还需要 ANT/Maven/Gradle? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
shayuvpn0001
V2EX    程序员

为什么有了 Git 还需要 ANT/Maven/Gradle?

  •  
  •   shayuvpn0001 2018-09-03 12:07:48 +08:00 5647 次点击
    这是一个创建于 2664 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以前写 C/C++/C#的,现在开始转 Java 了,东西有点多,最近看到这个 Build Tool 系列,感觉 Git 带 shell 脚本其实可以完成 ANT/Maven/Gradle 的工作,不知道我理解的对不对?

    前者还有一个好处是不依赖网络, 在弄 Android 的时候,因为你懂得原因,经常会碰到某个包下不来的情况,这个算是 Build   Tool 的一个缺点么?

    还有一点是,这个 build 工作大公司一般都是有专门的 Build & Release Engineer 负责,感觉 Java 把这部分工作转移到了开发程序员的身上了,不知道理解的对不对。

    22 条回复    2018-09-04 09:39:50 +08:00
    linjianru
        1
    linjianru  
       2018-09-03 12:14:07 +08:00   6
    你理解的不对。
    javaWeber
        2
    javaWeber  
       2018-09-03 12:16:31 +08:00
    Git 是控制版本的。。maven 是管理依赖的。。
    starcraft
        3
    starcraft  
       2018-09-03 12:18:23 +08:00
    鉴于你是转 Java 所以应该是 git 白学了。
    inhzus
        4
    inhzus  
       2018-09-03 12:23:18 +08:00 via Android
    非要类比也只能算作 submodules
    linjianru
        5
    linjianru  
       2018-09-03 12:23:49 +08:00   7
    Git 解决的问题是分布式环境下代码的变更历史追踪问题。其他你列举的这几个,则是解决软件高度模块化后的依赖管理问题。

    这两者内部唯一的相似点是都使用了 Graph 来描述关系,但 Git 内部主要是有向无环图;其他这几个则由于需要考虑循环依赖问题,从而可能使用了有环的图。除此之外,我暂时想不起来还有什么相似点。

    另外,你提到可以用 Shell + Git 来实现一部分替代功能,是可行的,但这其实就是开发一个新的包管理系统而已,工作量并不小,需要考虑的问题有很多。可以写了玩玩当作学习。
    geeti
        6
    geeti  
       2018-09-03 12:48:08 +08:00
    这个问题就好像 有了笔记本为什么还需要自行车 一样
    zn
        7
    zn  
       2018-09-03 12:48:57 +08:00 via iPhone
    @geeti 还要啥自行车?
    ipwx
        8
    ipwx  
       2018-09-03 12:50:06 +08:00 via iPhone
    C#有 nuget,你没用过嘛?
    vjnjc
        9
    vjnjc  
       2018-09-03 12:58:15 +08:00
    对也不对。
    假如你把 lib 放到 git 上去,那么用 git pull lib 就够了。
    但一般不这么做,为了解决很多依赖问题还是要上 gradle,根据 gradle 配置从 mvn repo 下 lib~
    Cbdy
        10
    Cbdy  
       2018-09-03 13:00:46 +08:00 via Android
    ant、maven、gradle 对标的是 npm+webpack
    lfzyx
        11
    lfzyx  
       2018-09-03 13:40:28 +08:00
    Java 的 build 工作在国内一般是 devops 负责,什么时候敢让你们业务开发工程师负责了。
    passerbytiny
        12
    passerbytiny  
       2018-09-03 13:58:39 +08:00
    你只能怪微软帮你做的太好了,抛开 visual studio,C++开发也要用 makefile 构建。

    Android 包下不来是墙的原因,谷歌也有问题,android studio 只有 http 代理,但 gradle 只能使用 sockt 代理,坑的一笔。至于你想不依赖网络,说明你版本升级的慢,依赖包能几年都不升级版本的。

    你最后一点是个伪命题,大公司不管开发啥,都不可能让编码人员负责最终构建和发布。你把大公司的 C 系列,跟小公司的 Java 开发对比,就跟前不久的国产操作系统跟 windows 对比一样。
    fan123199
        13
    fan123199  
       2018-09-03 14:38:29 +08:00
    1. git 的话,只有下载,没有管理。1 ) maven/gradle 等可以和 ide 整合。 比如 A depends B, B depends C, 那么你在 A 模块下就可以有 C 的代码提示。2 ) maven/gradle 是中央库,可以通过关键字搜索。总之 maven 等是为了解决很多 lib,嵌套依赖等规模化之后的问题。如果你只有几个 lib,想怎么来都可以。
    2. 不是。墙的问题也算工具的问题?
    3. 不对。大公司的 java 也是有专门负责 release 的。

    你的第一个问题里,用 git 管理依赖的一个例子就是 go 的依赖管理,go get 其实就是 git pull & build. 之后也要转 go module,因为有缺陷,管理不够精细。
    chunwang1995
        14
    chunwang1995  
       2018-09-03 14:46:58 +08:00
    Maven/Gradle 是 “ Java 工程化”的工具组,正如盖房子一样,只有瓦工或者电工是无法盖成整栋的房子的,而需要“管理工具”粘合各项基本能力,Maven / Gradle 是“工程化”胶水,Git 更像是“开发流程化”胶水。
    thisisgpy
        15
    thisisgpy  
       2018-09-03 16:45:49 +08:00
    为什么有了雷锋,还需要雷峰塔
    Rizio
        16
    Rizio  
       2018-09-03 17:07:09 +08:00
    为什么有老虎了还要老虎钳
    licoycn
        17
    licoycn  
       2018-09-03 17:17:32 +08:00
    为什么有了计算器还要有计算机
    precisi0nux
        18
    precisi0nux  
       2018-09-03 17:53:28 +08:00 via iPhone
    为什么有了老婆饼,还需要老婆。
    为什么有了 Java,还需要 Javascript。
    wowo243
        19
    wowo243  
       2018-09-03 17:59:40 +08:00
    楼歪了,我正一下。理论上是的,如果只用 git 的话,手动版本就是各种导包,自动化版本就是 shell 脚本执行各种下载、移动文件命导包。ant 没用过,mavne 的主要功能是依赖管理,最主要的目的就是替代各种引入 jar 包的繁琐过程。而 git 的主要作用是代码管理。
    wowo243
        20
    wowo243  
       2018-09-03 18:00:39 +08:00
    菜鸡一枚,有大佬发现错误欢迎指正。
    keymao
        21
    keymao  
       2018-09-04 08:49:54 +08:00
    一个是版本控制工具,用于管理团队化开发时,代码的整合。

    另外几个是用来管理你开发环境的依赖,和自动化构建的。 是两类东西。
    fumichael
        22
    fumichael  
       2018-09-04 09:39:50 +08:00
    你可以把依赖都做版本管理啊,只是耗硬盘耗网络呀
    公共的库,package 各自下载就好,所以版本管理只需要记录依赖关系就足够了

    btw,前端开发,那个把 node_modules 都上传的给我站出来。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5012 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 48ms UTC 05:58 PVG 13:58 LAX 21:58 JFK 00:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86