一、分模块开发
在以前的学习中,都是一个模块开发,但是在实际的项目的开发中,不可能只有一个模块放入所有的代码,所以一般会把一个项目分成若干个子模块进行开发,这样方便模块的相互调用、接口共享。
1. 好处:
- 功能复用
- 解耦
- 便于协作
- 方便部署
2. 操作
假如我们现在拥有两个模块,模块a和模块b,
我们现在想要在模块a中使用模块b的资源,应该怎么操作呢?
- 首先需要把模块b使用maven中的install安装到我们本机的本地仓库repository中。( 如果没有安装部署到本地,就会在后面的运行中报错,找不到模块b,关于本地仓库的路径,需要看自己idea的配置)
- 找到模块b的maven核心配置文件pom.xml , 找到模块b的groupId、artifactId ,直接复制
- 在模块a的pom.xml文件中,引入依赖,放在depency中。
二、依赖管理
如果有三个模块,模块a依赖于模块b,模块c又依赖于模块b,那么c是否可以调用a的资源呢?
答案当然是可以的,因为依赖具有传递性.
1. 传递性
依赖分为直接依赖和间接依赖。
直接依赖:是指在当前项目中通过依赖配置建立的,称为直接依赖。
间接依赖:是指被以来的资源如果依赖于其他资源,就被称为间接资源。
2. 依赖冲突
一般为路径优先、声明优先、特殊优先
3. 可选依赖
隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖性,简单来说,就是对外隐藏当前的依赖,不想给别人用。(不透明)
pom.xml的某个denpedency中
<optional>true</optional>
//对外隐藏当前的依赖资源
4. 排除依赖
隐藏当前资源对应的依赖关系,其实就是排除掉不需要的资源,不想用别人的。(不需要)
pom.xml的某个denpedency中
<exclusions>
<exclusion>
<groupId> XXX </groupId>
<artifactId>XXX<artifactId>
</exclusion>
</exclusions>
四、聚合与继承
1. 聚合
什么是聚合?
多个模块组织成一个整体,同时进行项目构建的过程,称为聚合。
什么是聚合工程?
通常是一个不具有业务的空工程,一般有且仅有一个pom文件。
接下来创建一个聚合工程:
- 前提是拥有多个需要聚合的模块,首先创建一个模块,在该模块的pom文件中,使用packaging标签,把打包方式写为pom
<packaging>pom</packaging>
//打包方式为pom
- 把需要聚合的模块通过module标签写入
<modules>
<module>../模块1</module>
<module>../模块2</module>
<module>../模块3</module>
</modules>
注意:
3. 模块的构建顺序和书写顺序无关
4. 需要打包多个模块时,直接在聚合的模块中 clearn、package。
2. 继承
首先需要在父工程pom中把打包类型写为pom
<packaging>pom</packaging>
//打包方式为pom
然后在子工程中,使用perent标签,把父工程的内容导入
五、属性
1. 更改版本
在pom.xml中
<properties>
<xx.version>0.0.0</xx.version>
//标签名自定义,值为依赖资源的版本
</properties>
在需要更改依赖资源版本的pendenty中
<version>${xx.version}</version>
//格式为 ${标签名}
2. 依赖的版本
快照版本: SNAPSHOT
开发过程中使用的版本
发布版本: RELEASE
稳定可使用的,上线使用的版本
六、私服
1. 什么是私服
以前在引入依赖坐标的时候,是直接从中央服务器下载资源的。
私服是一台独立的服务器,进行团队开发的资源共享、资源同步,更换了以前使用的中央服务器。
一般在进行团队开发时,会搭建私服,把需要用到的资源放到私服的仓库中,存有团队研发的资源、代理链接中央仓库的资源等等
2. 私服仓库的分类
仓库组:group,若干个仓库共同组成,为仓库编组简化开发
宿主仓库:hosted,存放自主研发和第三方资源的上传
代理仓库:proxy,代理连接中央仓库,下载资源
3. 本地仓库访问私服
在本机存放的maven下的settings.xml文件中,配置访问权限和访问路径
- 访问权限
<server>
<!--id任意,多个server的id不重复就行,后面会用到-->
<id>xxx</id>
<username>admin</username>
<password>123456</password><!--填写私服设定的登录秘密-->
</server>
- 访问路径
<mirror>
<id>xxx</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
4. 从私服中上传和下载资源
前提是配置好settings.xml文件
- 上传
在需要上传的模块的pom文件中写
<distributionManagement>
<repository>
<!--和maven/settings.xml中server中的id一致,表示使用该id对应的用户名和密码-->
<id>heima-nexus</id>
<!--如果jar的版本是release版本,那么就上传到这个仓库,根据自己情况修改-->
<url>http://localhost:8081/repository/xxx-releases/</url>
</repository>
<snapshotRepository>
<!--和maven/settings.xml中server中的id一致,表示使用该id对应的用户名和密码-->
<id>heima-nexus</id>
<!--如果jar的版本是snapshot版本,那么就上传到这个仓库,根据自己情况修改-->
<url>http://localhost:8081/repository/xxx-snapshots/</url>
</snapshotRepository>
</distributionManagement>
注意:要和maven的settings.xml中server中定义的<id>xxx</id>对应
最后mvn deploy即可
- 下载
配置好settings文件,在pom中就可以获取到了。