• Kǎfκã²⁰²⁰
    2019-03-20
    设想过这样的情景(还没实现,打算实践一把):我们新招一名比较熟练的程序员,从TA入职拿到机器,到开发示意代码,再提交SCM,然后CI/CD,再发布到线上交付给用户,整个过程可以在入职当天的午饭之前完成。

    这不光要求构建和集成自动化,甚至要求从入职开始的各个环节都能提前准备好,包括机器、开发环境、线上环境等,甚至连示范的需求都要能及时传递给TA。理想情况下,程序员只需要开发好程序,保证质量,提交到SCM即可,其他事情都应该交给机器。

    要知道程序员都很贵,越早给用户交付价值越好
    展开

    作者回复: 是这个意思,后面继续谈如何往线上送。

     1
     8
  • helloworld
    2019-05-03
    对于Gradle的特性了解还是比较少……感觉学习中会有这样的一个现象:对与技术是干什么用的其实是知道的,但是对于细节的把握总是容易遗忘,之前就拿实战Gradle这本书基本上通读了一遍,但是遗忘的确实有点快!我感觉这应该是大多数程序员的通病吧,老师能否给出一些建议?抑或是这种学习方式本身就是低效或者是错误的,谢谢

    作者回复: 我的学习方式是,我先要知道构建脚本要做哪些事情,就像这篇文章中写到的这些内容,然后看怎么样用对应工具如何完成,这样看起手册来就有针对性了。

    
     5
  • enjoylearning
    2019-03-27
    作为一个.net开发人员又看到了一堆java术语,哈哈,不过没关系,不就是配个java
    环境么,easy

    作者回复: 就喜欢你这种 enjoy learning 的感觉!

    
     3
  • 孤星可
    2019-03-20
    我一般会在需要专有的构建工具之上 再定义一个 Makrfile 封装 通用的 test build deploy 操作 统一各语言构建工具差异 比如 maven gradle npm

    作者回复: 我也做过类似的事情,用 shell 脚本去封装。

    
     2
  • shniu
    2019-03-20
    郑老师是否可以分享一下自己在模块划分上面的经验呢?

    作者回复: 《敏捷软件开发:原则、实践与模式》、《架构整洁之道》中都有关于模块划分的内容。

    
     2
  • 陈斯佳
    2019-06-12
    有时候感觉流程比技术更重要。之前有一个经历,就是本来想写个自动化的脚本把在做的事情自动化,但是我的一个同事直接改变了流程,让整个流程更加简化了的。原来脚本所要做的事压根都不存在了。确实像老师所说的,写程序是最高的成本,在着手写程序之前,一切都要考虑清楚。
    
     1
  • shniu
    2019-04-23
    老师,有个细节问题想咨询一下,现在用Spring boot做一个新项目,由于是前期阶段,短时间内要上线,选择了Spring boot,用业务划分模块的方式来进行开发,就像您文中提到划分模块,现在有个疑问的地方是模块之间会产生一些调用,比如用户的金币数据在用户模块里,游戏模块需要用到某个用户的金币数据,有比较好的做法吗?如果是让游戏模块依赖用户模块,然后注入用户的service,感觉跟之前没什么区别

    作者回复: 不要直接依赖于服务,要用接口的方式进行隔离,哪怕是接口和原来服务一模一样,也要隔离。必须明确的一点,这两个业务模块之间是服务相互调用的关系,不是程序库的关系。

    
     1
  • 大力
    2019-03-24
    老师之前的文章都是只讲方法论,本篇也有放上具体代码了,要开IDE试试!

    作者回复: 赶紧体会一下代码的感觉!

    
     1
  • 246小言
    2019-03-23
    老师,我有个疑问。公司最近有个技术老大说不准用lombok这个小工具,一定要我们手写set get?lombok真的那么差吗?

    作者回复: 我不清楚具体的情况。我凭一般认知回答一下,有一种可能是,你老大觉得 getter/setter 就不应该写,需要做更好的领域建模;另一种情况是,对于这种生成代码的机制有担心。lombok 本身不是问题,很多人乱用才是问题。

    
     1
  • hua168
    2019-03-20
    老师,以后用idea导向建立Spring Boot,我是不是把默认的maven改为gradle?
    自动化:gitlab CI/CD+jenkins的gradle+docker
    其中docker是把脚本放在jenkins,根据tag,如果是稳定版本就用makeFile生成docker镜像
    这样可以吧?

    作者回复: 我的建议是用构建脚本生成 IDE 工程。

    
     1
  • shniu
    2019-03-20
    自动化在持续交付中得到了非常充分的体现,把频繁的打包、单测、集成测试、部分验收测试、镜像构建和发布、CI环境更新、服务可用性验证等过程全部流水线化,极大的提升了构建发布效率,当然自动化的意义不仅于此;同时,把一切自动化是思维的转变,高效工作的有利工具。

    作者回复: 没错,我们下面就会谈到持续交付。

    
     1
  • hua168
    2019-03-20
    idea没有直接集成gradle吧?我看maven就直接有,好不容易学完maven,就淘汰了😂
    有gradle方面的书吗?idea方面的呢?看官方教程?
    idea是不是用到什么功能再学?还是先看过大概,用到再仔细看?还是最好都看一遍?
    目前idea只会一些基础的…

    作者回复: 理解错了,IDEA 提供了很好的 Gradle 支持。我的建议是生成 IDE 工程,maven 同样适用。

    我学 Gradle 和 IDEA 这种工具都是看官方文档。

    IDEA 的学习,别的不说,先熟练适用快捷键。

    
     1
  • 北天魔狼
    2019-03-20
    老师,我想问下PHP有类似构建脚本的工具吗?还没开始学习JAVA

    作者回复: 我并不擅长 PHP,你不妨用 PHP build tool 为关键词搜索一下。

    
     1
  • hua168
    2019-03-20
    In china,很多都是用破解版的……比如网上一堆idea激活码😃

    作者回复: 其实现在的开发模式,社区版足够用了,否则,就是开发做重了。

    
     1
  • Jaising
    2020-01-16
    修正下mysql 8.0版本兼容问题:
    需要在url后面添加serverTimezone字段保证处于同一时区,
    不然会出现异常:
    The server time zone value '???ú±ê×??±??' is unrecognized or represents more

    作者回复: 提一个PR,在github等你。

     1
    
  • maks
    2019-10-09
    老师,我在按步骤走的时候在一步一步构建但是我想要手动指定jdk构建,在网上看了许多方法大多都是配置环境变量。
    
    
  • Kobe
    2019-06-06
    在微服务架构中
    我更建议checkstyle、代码覆盖率等不要在gradle中配置。
    本机:基于团队统一的Idea配置和插件检测;
    部署:通过ci、Sonarqube等外科手术式检查,当增加环节或改规则无需改所有服务的构建脚本;

    部署不用gradle:
    1、jenkins同时大量项目构建时,maven的资源耗损比gradle要低很多,微服务的构建速度差不多(巨无霸项目另说);
    2、灵活的gradle易带来构建缓慢、构建方式差异等问题,团队比较大时带来额外维护成本;

    微服务我倾向:
    本机gradle(构建生成pom.xml)
    部署maven且无各种检查
    提交代码走sonarqube、单元测试等检查,通过则自动定期(如每天中午和下午)发到开发环境,保证主环境稳定(对敏捷+多项目并行很重要)
    紧急发布可直接jenkins构建发布。

    展开

    作者回复: 请回到24理解一下快速反馈。

    
    
  • One day
    2019-03-26
    对maven的使用还是停留在较为粗浅的构建使用层面上,得把Gradle好好了解了解

    作者回复: 如果你对两个的理解差不多,多在 Gradle 花时间挺好的。

    
    
  • like_jun
    2019-03-24
    运维现在也有很多工具支持了。都是显示了配置化。

    作者回复: 显示是一个 view,需要先把 model 做好。

    
    
我们在线,来聊聊吧