分模块开发对工程有什么好处?
目的:项目的扩展性变强了,方便其他项目引用相同的功能。
将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享
一个完整的工程依据什么来进行模块的拆分?
注意事项:
分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分
mvn install
注意事项:
团队内部开发需要发布模块功能到团队内部可共享的仓库中(私服)
依赖管理指当前项目运行所需的jar,一个项目可以设置多个依赖
格式:
org.springframework
spring-webmvc
5.2.10.RELEASE
A依赖B,B依赖C,A是否依赖于C呢?
A依赖B,B依赖C,如果A不想将C依赖进来,是否可以做到?
可选依赖指对外隐藏当前所依赖的资源————不透明
com.itheima
maven_03_pojo
1.0-SNAPSHOT
false
A依赖B,B依赖C,如果A不想将C依赖进来,是否可以做到?
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本————不需要
排除依赖资源仅指定GA即可,无需指定V
com.itheima
maven_04_dao
1.0-SNAPSHOT
log4j
log4j
org.mybatis
mybatis
什么叫聚合?
聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合
聚合工程:通常是一个不具有业务功能的”空“工程(有且仅有一个pom文件)
作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建
当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题
工程的打包方式有哪几种?
pom
注意事项:
每个maven工程都有对应的打包方式,默认为jar,web工程打包方式为war
../maven_ssm ../maven_pojo ../maven_dao
注意事项:
聚合工程中所包含的模块在进行构建时会根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关。
参与聚合的工程无法向上感知是否参与聚合,只能向下配置哪些模块参与本工程的聚合。
什么叫继承?
概念:
继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
作用:
简化配置
减少版本冲突
pom
注意事项:
建议父工程打包方式设置为pom
org.springframework
spring-webmvc
5.2.10.RELEASE
……
com.alibaba
druid
1.1.16
……
com.itheima
maven_parent
1.0-SNAPSHOT
../maven_parent/pom.xml
com.alibaba
druid
注意事项:
子工程中使用父工程中的可选依赖时,仅需要提供群组id和项目id,无需提供版本,版本由父工程统一提供,避免版本冲突
子工程中还可以定义父工程中没有定义的依赖关系
聚合和继承的作用?
作用
聚合用于快速构建项目
继承用于快速配置
相同点:
聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
聚合与继承均属于设计型模块,并无实际的模块内容
不同点:
聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
定义属性有什么好处?
5.2.10.RELEASE
4.12
org.springframework
spring-context
${spring.version}
5.2.10.RELEASE
4.12
jdbc:mysql://127.0.0.1:3306/ssm_db
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=${jdbc.url} jdbc.username=root jdbc.password=root
${project.basedir}/src/main/resources
true
org.apache.maven.plugins
maven-war-plugin
3.2.3
false
属性列表
自定义属性(常用)
内置属性
Setting属性
Java系统属性
环境变量属性
项目开发的版本可以分为哪几种?
SNAPSHOT(快照版本)
项目开发过程中临时输出的版本,称为快照版本
快照版本会随着开发的进展不断更新
RELEASE(发布版本)
项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件是稳定的
即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本
alpha版
beta版
纯数字版
多环境配置有什么好处?
maven提供配置多种环境的设定,帮助开发者使用过程中快速切换环境
env_dep
jdbc:mysql://127.0.0.1:3306/ssm_db
true
env_pro
……
【命令】: mvn 指令 –P 环境定义id 【范例】: mvn install –P pro_env
跳过测试会不会影响项目的构建过程?
功能更新中并且没有开发完毕
快速打包
……
mvn install –D skipTests
注意事项:
执行的项目构建指令必须包含测试生命周期,否则无效果。例如执行compile生命周期,不经过test生命周期。
maven-surefire-plugin
2.22.1
true
**/User*Test.java
**/User*TestCase.java
这里的私服和平时我们听的国服、体验服、欧服等等有什么区别?
团队开发现状分析
私服是一台独立的服务器,用于解决团队内部的资源共享与资源同步问题
Nexus
Sonatype公司的一款maven私服产品
下载地址:Download
启动服务器(命令行启动)
nexus.exe /run nexus
访问服务器(默认端口:8081)
http://localhost:8081
修改基础配置信息
安装路径下etc目录中nexus-default.properties文件保存有nexus基础配置信息,例如默认访问端口。
修改服务器运行配置信息
安装路径下bin目录中nexus.vmoptions文件保存有nexus服务器启动对应的配置信息,例如默认占用内存空间。
私服仓库分为哪几种?
往私服上传资源是否需要身份认证?在哪里设置认证信息?
【第一步】在maven的settings.xml中
nexus-heima
*
http://localhost:8081/repository/maven-public/
【第二步】在nexus中设置允许匿名下载,如果不允许将不会从私服中下载依赖
如果私服中没有对应的jar,会去中央仓库下载,速度很慢。可以配置让私服去阿里云中下载依赖。
【第一步】配置本地仓库访问私服的权限(在maven的settings.xml的servers标签中配置)
heima-nexus
admin
123456
【第一步】配置当前项目访问私服上传资源的保存位置(项目的pom.xml文件中配置)
heima-nexus
http://localhost:8081/repository/heima-releases/
heima-nexus
http://localhost:8081/repository/heima-snapshots/
==注意:要和maven的settings.xml中server中定义的
【第三步】发布资源到私服命令
mvn deploy