Maven中的关系
继承
一个Maven项目可以继承另一个Maven项目,分别称为子项目、父项目
场景:多个子项目中使用的是相同的依赖或插件,此时可以把相同的配置抽取到一个父项目中,进行统一的管理,保持一致性
步骤:
-
将父项目的打包方式设置为pom
<!-- 打包方式: jar:Java项目的打包方式:默认值 war:Web项目的打包方式 pom:父项目的打包方式--> <packaging>jar</packaging>
-
在子项目中引用父项目,指定父项目的坐标
<!-- 引用父项目,指定父项目的坐标--> <parent> <groupId>org.example</groupId> <artifactId>parent</artifactId> <version>1.0-SNAPSHOT</version> <!-- 指定父项目的pom.xml文件的相对物理路径--> <relativePath>xx/xx/</relativePath> </parent>
问题:有时并不是父项目的所有依赖都需要被项目继承,但是又希望能够通过父项目对依赖进行统一管理,如版本的控制
解决:使用dependencyManagement标签
步骤:
-
在父项目中配置dependencyManagement
<dependencyManagement> <dependencies> <dependency> <groupId>com.ljy</groupId> <artifactId>mysql..</artifactId> <version>12.52.</version> </dependency> </dependencies> </dependencyManagement>
-
在子项目中引用父项目中的依赖、
<dependencies>
<dependency>
<groupId>com.ljy</groupId>
<artifactId>mysql..</artifactId>
</dependency>
</dependencies>
聚合
将多个子项目添加到一个父项目中,然后通过对父项目进行操作,从而实现对所有聚合的子项目的操作
![](/qrcode.jpg)
在父项目的pom中
<!-- 聚合子项目,指定子项目的根目录-->
<modules>
<module>../...</module>
<module>../...</module>
</modules>
依赖(继承)
项目C–>项目B–>项目A
概念:如果项目C依赖于项目B,项目B依赖项目A,则项目C也依赖于项目A,这叫依赖的传递
配置依赖关系:
<!-- 依赖于其他子项目child01-->
<dependency>
<groupId>com.ljy</groupId>
<artifactId>child01</artifactId>
<version>xx</version>
</dependency>
控制依赖的传递
并不是所有的依赖都会被传递
- scope为compile的依赖会传递
- scope为test的依赖不会被传递
- 配置optional为true的依赖不会被传递(不能写在父项目中)
<dependency>
<groupId>com.ljy</groupId>
<artifactId>lof3</artifactId>
<optional>true</optional>
</dependency>
不会出现jar包的冲突
使用Maven不会出现jar包冲突,通过两个原则来保证:
- 就近原则
- 优先定义原则(看是哪个依赖先写,02与01的先后顺序)
<dependency>
<groupId>com.ljy</groupId>
<artifactId>child01</artifactId>
<version>xx</version>
</dependency>
<dependency>
<groupId>com.ljy</groupId>
<artifactId>child02</artifactId>
<version>xx</version>
</dependency>
不要传递的依赖
方式1:在依赖的配置中配置不允许传递
<optional>true</optional>
方式2:在当前的项目中配置不接收传递的特定依赖
<dependency>
<!-- 不接收特定的依赖 -->
<exclusions>
<exclusion>
<groupId>xxx</groupId>
<artifacdId>xxx</artifacdId>
</exclusion>
</exclusions>
</dependency>
Maven Web项目
基本操作
<!-- Tomcat插件-->
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path>
<port>8080</port>
</configuration>
</plugin>
使用Nexus搭建Maven私服
为什么要搭建私服
公司不提供外网给开发人员,无法使用Maven访问远程仓库,此时可以在局域网内找一台能访问外网的电脑搭建Maven私服
Nexus工具
用来搭建nexus工具
操作步骤:
- 下载之后解压缩并安装为系统服务
在解压后的第一个文件:bin\jsw\找到自己对应的系统版本\install-nexus.bat
install-nexus.bat
-
访问
http://localhost:8081/nexus
-
登录并配置私服
添加阿里云镜像仓库:
私服网址的右上角:Log in
默认账号:admin
密码:admin123
方法1:
左边Repositories点击然后central下面configuration更改网址
方法2:
左边Repositories点击Add后Proxy Repository 填写(ID NAME)+Default Local Storage(地址):阿里云的镜像地址
然后 Public Repositories–>configuration 在下面把配置的阿里云添加到左边去,然后排顺序,放在central的前面
添加一些阿里云没有的jar包:
点击3rd party 然后Artifact Upload–>选择GAV 然后在添加本地jar包到私服去
Maven综合应用
分析
将项目分为多个项目,可也以按模块,或同时按层次和模块分
以ums为例,使用maven创建和管理项目:
- 父工程:ums-parent
- dao工程:ums-dao
- service工程:usm-service
- action工程:usm-action
步骤
- 创建工程
- 配置依赖
-
在父工程中添加依赖
-
在子工程中引用依赖:
子工程引用了依赖需要把标签去掉,版本只在父工程里管理
-
配置dao工程
映射文件储存位置,两种方法:
-
将映射文件放在resources目录下
会被打包部署
-
将映射文件放在java目录下
默认只会对该目录下的java代码进行打包部署,如果希望对该目录下的配置文件也进行打包,需要额外的配置
-