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

开发 Java 项目 Gradle 一定比 Maven 好么?

  •  1
     
  •   looo · 242 天前 · 5619 次点击
    这是一个创建于 242 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  241 天前
    各位大佬,非常感谢你们的的留言🙇‍♂️。我都看到了,太多了回复不过来了,取舍我大概知道了。
    49 条回复    2024-05-02 16:13:21 +08:00
    Goooooos
        1
    Goooooos  
       242 天前
    不是
    InkStone
        2
    InkStone  
       242 天前
    gradle 我个人感觉适合构建需求复杂的中型项目。

    如果构建需求比较简单,那直接 maven 就行了。

    如果是大型项目,那 gradle 的兼容性会让你痛不欲生。
    feelinglucky
        3
    feelinglucky  
       242 天前   ❤️ 3
    @InkStone 背 gradle 版本号坑过的人一般都直接用 gradle warpper 了,别问我为什么
    techstay
        4
    techstay  
       242 天前
    爱用啥用啥,gradle 上手门槛高一些
    unclevv
        5
    unclevv  
       242 天前   ❤️ 1
    你啥项目 maven 满足不了你?
    iyiluo
        6
    iyiluo  
       242 天前
    gradle 升级太快了,maven 比较稳重
    eleganceoo
        7
    eleganceoo  
       242 天前
    gradle 很灵活,适合复杂需求项目,一般 maven 就够了,也比较大众
    chendy
        8
    chendy  
       242 天前
    不一定,但是规模不大复杂度不高 maven 够用了…
    chuck1in
        9
    chuck1in  
       242 天前
    我倒是一直在用 gradle ,op 啥原因觉得 gradle 不好呢。
    唯一的 gradle 问题我是觉得 gradle 比较吃 cpu ,虽然 gradle 所谓的说是很快,但是实际上快是建立在你 cpu 强的基础上的。
    Ayanokouji
        10
    Ayanokouji  
       242 天前
    maven 也就吐槽下 xml 吧,包管理工具比 maven 强的没几个。gradle 很秀,但是难度也增加了,如果有特定需求,gradle 灵活多更高。
    fredweili
        11
    fredweili  
       242 天前
    Maven 已经不记得怎么用了
    wxw752
        12
    wxw752  
       242 天前
    世界上哪有那么多绝对的事情
    cleanery
        13
    cleanery  
       242 天前   ❤️ 1
    @chuck1in #9 它能把 cpu 吃满,这是好事,编译的时候,全速完成就好。
    wetalk
        14
    wetalk  
       242 天前   ❤️ 1
    gradle 能用的,maven 一样跑,maven 用着不爽的项目,gradle 也没好到哪去,总结下来就是有优势,但不大
    byte10
        15
    byte10  
       242 天前
    我只记得 一个实现 有好几个写法,我直接放弃。人老了,不折腾。
    securityCoding
        16
    securityCoding  
       242 天前 via Android
    写过两年 go 之后,这两货都不好用
    LoNeZ
        17
    LoNeZ  
       242 天前
    gradle 缺点 kts 太慢了..然后是写法太多了.不过最新版感觉还行能用代码定义的都用代码定义, 少些配置文件. maven 的 xml 实在是太啰嗦了.个人项目倾向于 gradle 玩法很多..
    unco020511
        18
    unco020511  
       242 天前
    gradle 好用
    layxy
        19
    layxy  
       242 天前
    gradle 的版本号是真的坑
    hengyunabc
        20
    hengyunabc  
       242 天前
    所有的开源项目都要看背后的商业公司。gradle 是基于 groovy 开发的,groovy 已经被证明是一个没啥前途的项目。gradle 出来很多年使用率都一般,后面被 Android 出来拉了一把。因为 Android 的打包太复杂了,需要 gralde 才能比较好配置。
    后面 gradle 支持 kotlin 配置,又拉了一把。
    reeco
        21
    reeco  
       242 天前
    没有条件编译,交叉编译等需求的,直接 maven 就好了
    liaojl
        22
    liaojl  
       242 天前 via iPhone
    grade 兼容性太差了,用 gradle wrapper 又给你下一堆不同版本的 gradle 下来,以前 4.0+版本的时候,一个守护进程占用 1G 多内存,不知道现在好些没有。如果你只是用来解决依赖,用 maven 没毛病。有些人执着于去 xml ,对于 maven 来说没必要,依赖项都是从 maven repository 上 ctrl cv 下来的,xml 格式统一,方便多人协作。反观 gradle 用 DSL ,不同人有不同的写法风格,看着头大。当然,如果你有复杂的构建任务,那还是 gradle ,用 maven 来整实属受罪。
    caiqichang
        23
    caiqichang  
       242 天前
    为什么 maven 没有 wrapper 这种需求,因为他的 api 很稳定,而 gradle 一个版本换一套 api
    winterbells
        24
    winterbells  
       242 天前 via Android
    gradle 更新太快了,公司项目拖了很久的 publish API 好不容易改完,新版本又换语法了…
    yuezk
        25
    yuezk  
       242 天前
    包管理工具最好是统一,如果已经有项目在用 Gradle 或 Maven 了,建议保持一致。如果是新项目建议尝试一下 Gradle ,包管理这类的工具有个后发优势,Gradle 吸取了 ivy, maven 和 ant 的长处,优点远大于他的缺点。然后用的时候用 Gradle wrapper ,这是官方的最佳实 ( https://docs.gradle.org/current/userguide/gradle_wrapper.html)。
    yazinnnn0
        26
    yazinnnn0  
       242 天前
    不是, 但是有些东西你只能用 gradle(kts), 比如 kmp
    https://kmp.jetbrains.com/#newProject
    yuezk
        27
    yuezk  
       242 天前
    @caiqichang #23 官方的 maven wrapper https://maven.apache.org/wrapper/
    Ayanokouji
        28
    Ayanokouji  
       242 天前
    @caiqichang maven 也有 wrapper 了
    suibianwanwan
        29
    suibianwanwan  
       242 天前
    gradle 好用, 用了 gradle 以后, 再也不想用 maven
    gongxuanzhang
        30
    gongxuanzhang  
       242 天前   ❤️ 1
    maven 的包管理从诞生开始到现在 20 多年无人撼动,本质上就是因为他的 gav 三件套太强.
    maven 的生命周期固定清晰, 一张 maven 生命周期流程图百看不厌. 所以 maven 胜在稳定.
    maven 优点就是稳定,缺点也是稳定. 如果你要写一个复杂功能的插件你想死的心都有,写过的应该都有这种感受.
    Gradle 优点就是灵活,缺点也是灵活. 上手难度高,各种插件繁杂且碎片.但是同样复杂的功能你在 maven 实现和 gradle 中实现的体验完全不一样.
    如果你想实际体会一下性能区别,建议你用 maven 写一个 java kotlin 混编的程序, 再用 gradle 写一个,你就体会性能差距.
    如果你想实际体验插件开发,那你用 maven 和 gradle 分别实现一个 project 中行数统计的功能.
    我自己的感受: 跑 main,跑 test,maven 明显更快 其他都是 gradle 更胜一筹
    其他你自己体会
    unco020511
        31
    unco020511  
       242 天前
    你像 android 这种复杂项目,经常要自己写一些 task 来在编译过程插桩做操作,maven 就很难胜任了,服务端应该也是类似吧,一旦你的项目编译期有各种复杂操作,理论上 gradle 是更适合的
    ttttttttt
        32
    ttttttttt  
       242 天前
    都用上 Wrapper~
    - 无论 Maven 还是 Gradle ,现在都推荐用 Maven Wrapper 或 Gradle Wrapper ,保证可复现性。
    - Gradle 的核心开发也说过:只要你不是开发 Gradle 本身,你就安心用 Gradle Wrapper 。

    选 G/M:
    - 简单开发 Java 项目,写写业务,你用熟练的就好。
    - Maven 近些年没怎么更新大的 feature 了,因为核心功能简单易用,复杂部分它有扩展的插件机制。
    - 想玩新工具,了解了解 Gradle ,挺好玩。
    boatrain1111
        33
    boatrain1111  
       242 天前
    如图所示:
    whatiam
        34
    whatiam  
       242 天前
    如果用 maven ,请用 maven wrapper 。
    如果用 gradle ,请用 gradle wrapper 。
    如果有的选择,请选择 gradle 。
    如果没得选择,也建议多看看 maven 和 gradle 官网文档。

    拥抱新技术是正道。建议能用 gradle 还是用 gradle 。能很方便的做出 maven 很难或者根本做不到的功能。
    yichengxian
        35
    yichengxian  
       242 天前
    电脑不够好,我用 maven
    Ericcccccccc
        36
    Ericcccccccc  
       242 天前
    主要是看你团队用了什么
    retanoj
        37
    retanoj  
       242 天前
    我本人还是很讨厌 OP 发帖后一句话也不说的情况
    (不知道这条 OP 看不看得到
    Kamiyu0087
        38
    Kamiyu0087  
       242 天前
    我喜欢 gradle
    不喜欢看 xml
    28Sv0ngQfIE7Yloe
        39
    28Sv0ngQfIE7Yloe  
       241 天前
    maven 有一种美
    zhady009
        40
    zhady009  
       241 天前 via iPhone
    用 Maven 构建复杂点或者想做方便点的功能就避不了写插件,而且写 DSL 比 xml 舒服多了
    luzemin
        41
    luzemin  
       241 天前
    @retanoj 哈哈哈
    luzemin
        42
    luzemin  
       241 天前
    Java8 + Maven 才能体现我们 javaer 的朴实
    huzhizhao
        43
    huzhizhao  
       241 天前 via iPhone
    我一个破码农,怕是没有资格回复这个帖子哦
    只想说项目用啥你用啥。遵从大多数人的想法才是常态
    至于自己的,你想用啥就用啥
    hefish
        44
    hefish  
       241 天前
    @retanoj 其实这叫论坛气氛组,负责引起话题,至于结果是啥不重要,重要的是有人回帖。 比如:新手想买车啦,欢迎推荐啊。 再比如:喜欢上了一个妹子啊,大家帮忙分析分析啊;再比如:碰到资本家了啊,大家说我怎么办啊。。。
    luoshuimumu
        45
    luoshuimumu  
       241 天前
    如果你们的构建场景比较复杂自定义了 gradle 任务,升 gradle 版本的时候就享大福了。只用来组装依赖的话 gradle 和 maven 差不多的。
    billbob
        46
    billbob  
       241 天前
    gradle
    monkeyk
        47
    monkeyk  
       241 天前
    已经用了十几年 maven ,尚且够用就一直用;稳定优先
    yusheng88
        48
    yusheng88  
       240 天前 via Android
    ant ,maven 都深度使用过。
    gradle 简单使用过。

    体验最好的是 maven
    单体项目就 maven + linux shell 脚本
    微服务项目是 maven+docker+jenkins 。
    win301
        49
    win301  
       239 天前
    曾经开发过一个比较复杂的系统,功能很多,项目组 5 个人,开发了约 1 年时间,最终项目完成后,大概有 800+类文件(我相信很多人看到这个类文件的数量可能都会想着应该将项目模块化拆分,我在这里不做过多讨论,就先假设项目组没有多余时间来做),每次使用 Maven 打包,需要耗时 2 分 20 秒左右,这已经是优化过一轮后的结果,在优化前大约 3 分 40 秒左右,我想着这样可不行,能不能有其他构建工具能提高项目的打包速度呢?以前就看过 Android 的同事在用 gradle 来打包,我想着后端项目理论上也应该可以打包,原理差不多,然后就去官网看了教程,然后开始研究 Maven 项目转换 Gradle ,通过 gradle 提供的命令行工具转换完成后,迫不及待的试试进行打包操作,然后神奇的事情发生了,这个项目打包成 jar 文件只用了 9 秒钟,虽然打包前还需要改一些打包所需要的代码,但最终的代价是值得的,以后所有项目就都用 Gradle 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4661 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:51 · PVG 17:51 · LAX 01:51 · JFK 04:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.