这是我边学边写的maven笔记, 所以可能会存在问题

父工程的pom定义

properties 标签

这个标签是用来统一管理 jar包的版本, 使用这种方式相当于给版本号声明了一个变量

具体为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!-- 这里的xxx代表你给版本取得名字 -->
<properties>
<xxxx> 8.0.23 </xxxx>
</properties>

<!-- 实战 -->
<properties>
<java.version>11</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<org.projectlombok.version>1.18.20</org.projectlombok.version>
<spring-cloud.version>2021.0.3</spring-cloud.version>
<spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>
<spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>
<mybatis-plus.version>3.4.3</mybatis-plus.version>
<hutool.version>5.8.11</hutool.version>
<!--使用8.0.x 依旧可以用5.7的数据库访问-->
<mysql.version>8.0.23</mysql.version>
</properties>
  • 然后再下面的依赖包, 就可以通过
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<!-- 这里的xxxx代表的就是上面的版本 -->
<version>${xxxx}</version>
</dependency>

<!-- 实战 -->

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>

modules 标签

代表需要被放入的子标签

这里 oj-user 代表的是ArtifactId

1
2
3
<modules>
<module>oj-user</module>
</modules>

packing 标签

在父级项目中的pom.xml文件使用的packaging配置一定为pom

如果没有特别指定这个标签的话, 那么默认就是jar 包, 所以这个标签一定要写上去

当然还有war 之类, 但是我这里就讨论上面两种就好了

1
<packaging>pom</packaging>

dependencyManagement 标签

使用dependencyManagement可以统一管理项目的版本号,确保应用的各个项目的依赖和版本一致, 这样子模块和父模块就可以用到相同的版本了

1
2
3
4
5
6
7
8
9
10
<!-- 具体样式如下 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<version>xxx</version>
</dependency>
</dependencies>
</dependencyManagement>

子工程的pom定义

parent 标签

再项目创建之前, 默认的parent标签是springboot的, 但是我们是父子工程需要交换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!--这是原本的-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.17</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--直接把上面的删掉,需要将parent修改为父模块-->
<!-- 这里的groupId和artifactId,version 换成父模块的就好了 -->
<parent>
<artifactId>xxx</artifactId>
<groupId>xxx</groupId>
<version>xxx</version>
</parent>