1. maven web项目
- 自己之前本科时,使用过servlet和ajax实现基于java的web系统
- 现在,接触较多的是使用spring boot+mybatis实现java web后端系统
- 现在回想起来,最大的感受是,使用servlet做项目时,所有的jar都是放在
lib
目录的 - 而基于springboot的项目,开始使用maven进行依赖管理了。
- 通过学习《maven实战》一书,才知道原来可以使用maven实现基于servlet的java web系统
自己总结了一些重点吧,以后真正使用到时可以再回来认真学习:
- web项目中WEB-INF必须有一个
web.xml
文件,是web资源描述表 - 基于maven的web项目,打包方式应该为
war
- 打包项目时,maven会自动将pom文件中依赖对应的jar放入
lib
目录中
1.1 jetty-maven-plugin进行项目测试
- 进行web项目的开发时,我们希望在本地快速进行web项目的部署和测试。最好能热部署,代码的改动不需要重新部署就能自动更新
- 书中介绍了
jetty-maven-plugin
用于进行日常的快速开发和测试 - 使用
jetty-maven-plugin
有以下几点需要注意: - 想要实现热部署,需要将
<scanIntervalSeconds>
设为一个不为0的正整数。如果设置为0,表示不扫描代码,会失去热部署功能。 - 使用
jetty-maven-plugin
插件,需要在settings.xml
中单独配置插件仓库(仓库名org.mortbay.jetty
,默认的apache和mojo插件仓库中没有该插件
1.2 cargo进行项目部署
cargo-maven2-plugin
可以用于实现web项目的自动部署,可以部署到远程容器cargo-maven2-plugin
支持三种部署模式
- 本地部署的
standalone
模式:通过将容器(如tomcat)的配置拷贝到项目中,实现项目的自动化部署 - 本地部署的
existing
模式:直接使用容器的配置,并将项目部署到对应的位置 - 远程部署
runtime
模式:既不使用独立的容器配置,也不使用本地已有的容器配置,而是依赖于一个已经运行的容器
2. 版本管理
- 《maven》实战一书的版本管理,对我来说比较有用的是maven项目的version是如何确定的。
- 其他的,关于代码的版本控制,也就是基于github或subversion等进行代码变更管理,在工作中自然而然会用到的。
- 而且,不同的公司或小组,对版本控制的制度也不一样,比如什么开发分支、总分支、添加tag、commit规范等,等用到时自己就知道了
2.1 版本管理和版本控制
- 首先,需要区分两个概念:版本管理和版本控制。
- 前者,是指对项目version的管理。例如,合适可以增加大版本号,何时增加小版本号,紧急修复的版本号等
- 后者,及时基于git等代码变更管理工具,进行项目变更的追踪
- 其次,是正式项目的发布应该满足以下条件:
① 所有自动化测试全部通过
② 项目无任何快照版本的依赖/插件
③ 向目中的代码已经全部提交到版本控制系统中 - 重要的是,为代码添加tag,用于标识项目的状态,以便快速回退或紧急修复
- 然后是maven项目的version,例如:1.2.3-beta-1
① 1表示主版本,对应项目的重大架构变更。例如,实时计算组件从只支持流式数据到支持批数据
② 2表示次版本,表示大范围的功能增加或变化,以及bug修复
③ 3表示增量版本,一般对应紧急bug修复
④ beta-2表示里程碑版本,但往往不稳定需要很多测试(前三种版本,我感触挺深的。最后一中版本,我反正没啥感受 😂 )
2.2 其他内容
- 书中还还讲述了很多其他的知识,如GPG签名、自动化版本发布/创建
- 自己实在是没啥,感受。。。。