Maven进阶之分模块开发

一、分模块开发

在以前的学习中,都是一个模块开发,但是在实际的项目的开发中,不可能只有一个模块放入所有的代码,所以一般会把一个项目分成若干个子模块进行开发,这样方便模块的相互调用、接口共享。

1. 好处:

  1. 功能复用
  2. 解耦
  3. 便于协作
  4. 方便部署

2. 操作

假如我们现在拥有两个模块,模块a和模块b,
我们现在想要在模块a中使用模块b的资源,应该怎么操作呢?

  1. 首先需要把模块b使用maven中的install安装到我们本机的本地仓库repository中。( 如果没有安装部署到本地,就会在后面的运行中报错,找不到模块b,关于本地仓库的路径,需要看自己idea的配置)
  2. 找到模块b的maven核心配置文件pom.xml , 找到模块b的groupId、artifactId ,直接复制
  3. 在模块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文件。
接下来创建一个聚合工程:

  1. 前提是拥有多个需要聚合的模块,首先创建一个模块,在该模块的pom文件中,使用packaging标签,把打包方式写为pom
<packaging>pom</packaging>
//打包方式为pom
  1. 把需要聚合的模块通过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文件中,配置访问权限和访问路径

  1. 访问权限
<server>
  <!--id任意,多个server的id不重复就行,后面会用到-->
  <id>xxx</id>
  <username>admin</username>
  <password>123456</password><!--填写私服设定的登录秘密-->
</server>
  1. 访问路径
<mirror>
    <id>xxx</id>
    <mirrorOf>*</mirrorOf>
    <url>http://localhost:8081/repository/maven-public/</url>
</mirror>

4. 从私服中上传和下载资源

前提是配置好settings.xml文件

  1. 上传
    在需要上传的模块的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即可

  1. 下载
    配置好settings文件,在pom中就可以获取到了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值