JavaWeb学习路线(11)—— Maven延伸

一、分模块设计

(一)概念: 将项目按功能拆分出若干个子模块。

(二)作用: 方便项目管理维护、扩展,也方便模块间相互调用,资源共享。

(三)具体实现

1、抽取公共包作成模块(以pojo实体类为例)
在这里插入图片描述
2、向使用的项目添加依赖
在这里插入图片描述
3、向使用类中引用
在这里插入图片描述
(四)注意事项

  • 分模块设计需要先针对模块设计,再进行编码。

二、继承与聚合

(一)继承

1、概念: 继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息, 常见于依赖关系的继承。

2、作用: 简化依赖配置、统一管理依赖

3、实现方式: <parent> … </parent>

  • 设置父工程模块,通常设置打包方式为pom(默认jar包)
    • jar: 普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
    • war: 普通web程序打包,需要部署在外部的tomcat服务器中运行
    • pom: 父工程或聚合工程,该模块不写代码,仅依赖管理
<!--引入父工程-->
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifacId>
	<version>2.7.5</version>
	<relativePath/> <!--从本地仓库查询-->
</parent>

<!--配置当前工程-->
<groupId>com.zengoo</groupId>
<artifactId>xxx-parent</artifacId>
<version>1.0-SNAPSHOT</version>
<pcakaging>pom</packaging>
  • 子工程的pom.xml文件中,配置继承关系
<parent>
	<groupId>com.zengoo</groupId>
	<artifactId>xxx-parent</artifacId>
	<version>1.0-SNAPSHOT</version>
	<!--配置引入目标工程的pom包-->
	<relativePath>../zengoo-parent/pom.xml</relativePath>
</parent>
  • 父工程中配置各个工程共有的依赖(子工程会自动继承父工程的依赖)

4、版本锁定

(1)作用: 对依赖进行版本管理。
(2)原始实现方式: 在父工程的pom.xml中通过<dependencyManagement>来统一管理依赖版本

<!--父工程配置版本-->
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>xxx</groupId>
			<artifactId>xxx</artifactId>
			<version>x.x.x</version>
		</dependency>
	</dependencies>
</dependencyManagement>
<!--子工程引入依赖-->
<dependencies>
	<dependency>
		<groupId>xxx</groupId>
		<artifactId>xxx</artifactId>
	</dependency>
</dependencies>

(3)优化使用:自定义属性列表

配置文件application.properties

<properties>
	<lombok.version>1.18.24</lombok.version>
	<jjwt.version>0.9.1</jjwt.version>
</properties>

父工程pom文件

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>xxx</groupId>
			<artifactId>xxx</artifactId>
			<version>${jjwt.version}</version>
		</dependency>
	</dependencies>
</dependencyManagement>

子工程pom文件

<dependencies>
	<dependency>
		<groupId>xxx</groupId>
		<artifactId>xxx</artifactId>
		<version>${jjwt.version}</version>
	</dependency>
</dependencies>

(二)聚合

1、作用: 将多个模块组合成一个整体,同时进行项目构建。(快速构建项目)

2、实现:

父工程(聚合工程)pom.xml

<moudles>
	<moudle>../xxx</moudle>
	<moudle>../xxx</moudle>
	<moudle>../xxx</moudle>
	<moudle>../xxx</moudle>
</moudles>

(三)继承与聚合的总结

  • 作用:
    • 聚合用于快速构建项目
    • 继承用于简化依赖配置、统一管理依赖
  • 相同点:
    • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系只做到同一个pom文件中
    • 聚合与继承均属于设计型模块,并无实际模块内容
  • 不同点:
    • 聚合是在聚合工程中配置关系,聚合可以预设模块进行
    • 继承是在子模块中配置关系,父模块无法预设子模块继承

三、私服(Maven共享)

(一)概念: 私服是一种特殊的远程仓库,用来代理外部的中央仓库,用于解决团队内部资源共享与资源同步问题。

(二)使用私服

  • 步骤一:Maven的setting.xml中配置账户与密码
<server>
	<id>maven-releases</id> #发行版本仓库
	<username>admin</username>
	<password>admin</password>
</server>

<server>
	<id>maven-snapshot</id> #快照版本仓库
	<username>admin</username>
	<password>admin</password>
</server>
  • 步骤二:pom文件中配置上传地址
<distributionManagement>
	<repository>
		<id>maven-releases</id>
		<url>正式版本仓库仓库访问路径</url>
	</repository>
	<repository>
		<id>maven-snapshot</id>
		<url>快照版本仓库访问路径</url>
	</repository>
</distributionManagement>
  • 步骤三:设置私服依赖下载的仓库组地址(settings.xml)
<mirror>
		<id>maven-public</id>
		<mirrorOf>*</mirrorOf>
		<url>仓库组访问路径</url>
</mirror>
  • 步骤四:私服settings.xml中的profile属性下配置
<profile>
	<id>allow-snapshots</id>
	<activation>
		<activeByDefault>true</activeByDefault>
	</activation>
	<repositories>
		<repository>
			<id>maven-public</id>
			<url>仓库组访问路径</url>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
	</repositories>
</profile>

猜你喜欢

转载自blog.csdn.net/Zain_horse/article/details/131513822