IDE中使用Maven
时间:2022-05-11 10:31
3.1、war和war exploded的区别
是选择war还是war exploded 这里首先看一下他们两个的区别:
(1)war模式这种可以称之为是发布模式,看名字也知道,这是先打成war包,再发布;
(2)war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。
(3)在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来。
两种方式得部署方式是不一样的,在获取项目的路径的时候得到的结果是不一样的
String contextPath = request.getSession().getServletContext().getRealPath("/");
3.2、创建Maven多模块项目
多模块项目不一定要使用Maven,普通项目也可以。
3.2.1、maven多模块优点
- 复用,划分出来的模块可以供其他项目使用。
- 固化,划分出来的某个模块可让专人开发,沉淀技术,分工协作。
- 优化依赖,每个模块有各自的pom。
- 节省时间,可在单个模块上进行build。
3.2.2、在IDEA中创建多模块项目
1、创建父模块
进过创建后的完整项目结构,其中blog_admin,blog_web为SpringBoot项目,其余无骨架(archetype)Maven项目。
2、模块间依赖
方法一:依赖class
添加模块依赖
指定要依赖的模块
依赖成功
方法二:通过座标直接依赖jar
1.直接引用
com.zhou
blog_file
${onlyblog.version}
3.3、多模块项目依赖管理与依赖继承
3.3.1、指定父模块与默认继承
dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)
3.3.2、依赖管理
com.zhou
blog_core
${project.version}
使用
在子类中,依赖配置较原来就简单了。可以在子类中只配置groupId和artifactId ,省去了version。因为完整的依赖声明已经包含在父POM中。 这样可以统一项目范围中依赖的版本,帮助降低依赖冲突的几率。
如果子模块不声明依赖的使用,即使该依赖已经在父POM的dependencyManangement中声明了,也不会产生任何实际的效果。
如果想要在某个模块中使用和另一个模块中完全一样的dependencyManagement配置,除了赋值和继承外,还可以使用import范围依赖将这一配置导入。
我们要达到的目的是:父模块作版本管理不实际依赖,子模块按需依赖。
com.zhou
blog_core
这样做的好处:
统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,才能保证测试的和发布的是相同的成果,因此,在顶层pom中定义共同的依赖关系。同时可以避免在每个使用的子项目中都声明一个版本号,这样想升级或者切换到另一个版本时,只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另外一个版本号时,只需要在dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承于父类版本号。
3.4、使用Profiles标签实现多环境切换
在实际开发项目中,常常有多种环境,例如:开发、测试、正式等。各个环境之间对应的中间件地址,用户名密码等参数数据也各不相同,Maven提供了标签 profiles 实现了多环境配置,简化了多环境切换的麻烦。
3.4.1、springboot启动时是如何加载配置文件application.yml文件
3.4.2、在pom.xml定义环境的profile
dev
true
dev
${project.artifactId}-${project.version}
test
test
${project.artifactId}-${project.version}
prod
prod
${project.artifactId}
src/main/resources
application*.yml
src/main/resources
true
application.yml
application-${profileActive}.yml
3.4.3、将application.yml的active参数
# SPRING PROFILES
spring:
profiles:
active: ‘@profileActive@‘