30 | 一个好的项目自动化应该是什么样子的?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何使用Gradle构建一个典型的Java REST服务,并探讨了自动化项目的基本要求。作者首先介绍了为什么选择Gradle而不是Maven,强调了Gradle的灵活性和定制能力。接着,作者通过一个简单的Demo项目展示了如何使用Gradle进行基础准备和初见项目,包括IDE的选择、项目的分模块和目录结构的组织。在自动化过程中,作者强调了检查的重要性,并介绍了如何使用CheckStyle和JaCoCo进行代码风格检查和测试覆盖率检查。此外,文章还介绍了数据库迁移工具Flyway的使用,包括配置和添加数据库迁移文件的步骤。通过这些内容,读者可以了解到一个好的项目自动化应该具备的基本要素,以及如何使用Gradle和相关工具来实现自动化。 文章总结了一个基本的项目自动化过程,包括生成IDE工程、编译、打包、运行测试、代码风格检查、测试覆盖率、数据库迁移和运行应用。强调了自动化工作的重要性,指出几乎每个重复或繁琐的工作都应该自动化。同时,强调了基础设施和工具的进步,使自动化工作变得更加容易。最后,鼓励读者将工作过程自动化,并提到了持续集成的基础。整体而言,本文为读者提供了关于项目自动化的基本要求和实现方法,强调了自动化工作的重要性和现代工具的便利性。
《10x 程序员工作法》,新⼈⾸单¥68
全部留言(25)
- 最新
- 精选
- 西西弗与卡夫卡设想过这样的情景(还没实现,打算实践一把):我们新招一名比较熟练的程序员,从TA入职拿到机器,到开发示意代码,再提交SCM,然后CI/CD,再发布到线上交付给用户,整个过程可以在入职当天的午饭之前完成。 这不光要求构建和集成自动化,甚至要求从入职开始的各个环节都能提前准备好,包括机器、开发环境、线上环境等,甚至连示范的需求都要能及时传递给TA。理想情况下,程序员只需要开发好程序,保证质量,提交到SCM即可,其他事情都应该交给机器。 要知道程序员都很贵,越早给用户交付价值越好
作者回复: 是这个意思,后面继续谈如何往线上送。
2019-03-20223 - helloworld对于Gradle的特性了解还是比较少……感觉学习中会有这样的一个现象:对与技术是干什么用的其实是知道的,但是对于细节的把握总是容易遗忘,之前就拿实战Gradle这本书基本上通读了一遍,但是遗忘的确实有点快!我感觉这应该是大多数程序员的通病吧,老师能否给出一些建议?抑或是这种学习方式本身就是低效或者是错误的,谢谢
作者回复: 我的学习方式是,我先要知道构建脚本要做哪些事情,就像这篇文章中写到的这些内容,然后看怎么样用对应工具如何完成,这样看起手册来就有针对性了。
2019-05-0312 - enjoylearning作为一个.net开发人员又看到了一堆java术语,哈哈,不过没关系,不就是配个java 环境么,easy
作者回复: 就喜欢你这种 enjoy learning 的感觉!
2019-03-279 - 人月聊IT老师,我有个疑问。公司最近有个技术老大说不准用lombok这个小工具,一定要我们手写set get?lombok真的那么差吗?
作者回复: 我不清楚具体的情况。我凭一般认知回答一下,有一种可能是,你老大觉得 getter/setter 就不应该写,需要做更好的领域建模;另一种情况是,对于这种生成代码的机制有担心。lombok 本身不是问题,很多人乱用才是问题。
2019-03-238 - 0xABC郑老师是否可以分享一下自己在模块划分上面的经验呢?
作者回复: 《敏捷软件开发:原则、实践与模式》、《架构整洁之道》中都有关于模块划分的内容。
2019-03-207 - hua168idea没有直接集成gradle吧?我看maven就直接有,好不容易学完maven,就淘汰了😂 有gradle方面的书吗?idea方面的呢?看官方教程? idea是不是用到什么功能再学?还是先看过大概,用到再仔细看?还是最好都看一遍? 目前idea只会一些基础的…
作者回复: 理解错了,IDEA 提供了很好的 Gradle 支持。我的建议是生成 IDE 工程,maven 同样适用。 我学 Gradle 和 IDEA 这种工具都是看官方文档。 IDEA 的学习,别的不说,先熟练适用快捷键。
2019-03-205 - 0xABC老师,有个细节问题想咨询一下,现在用Spring boot做一个新项目,由于是前期阶段,短时间内要上线,选择了Spring boot,用业务划分模块的方式来进行开发,就像您文中提到划分模块,现在有个疑问的地方是模块之间会产生一些调用,比如用户的金币数据在用户模块里,游戏模块需要用到某个用户的金币数据,有比较好的做法吗?如果是让游戏模块依赖用户模块,然后注入用户的service,感觉跟之前没什么区别
作者回复: 不要直接依赖于服务,要用接口的方式进行隔离,哪怕是接口和原来服务一模一样,也要隔离。必须明确的一点,这两个业务模块之间是服务相互调用的关系,不是程序库的关系。
2019-04-2334 - 孤星可我一般会在需要专有的构建工具之上 再定义一个 Makrfile 封装 通用的 test build deploy 操作 统一各语言构建工具差异 比如 maven gradle npm
作者回复: 我也做过类似的事情,用 shell 脚本去封装。
2019-03-204 - 大力老师之前的文章都是只讲方法论,本篇也有放上具体代码了,要开IDE试试!
作者回复: 赶紧体会一下代码的感觉!
2019-03-243 - 0xABC自动化在持续交付中得到了非常充分的体现,把频繁的打包、单测、集成测试、部分验收测试、镜像构建和发布、CI环境更新、服务可用性验证等过程全部流水线化,极大的提升了构建发布效率,当然自动化的意义不仅于此;同时,把一切自动化是思维的转变,高效工作的有利工具。
作者回复: 没错,我们下面就会谈到持续交付。
2019-03-203