可选依赖
# 可选依赖
如果你准备发布的项目中,有些依赖特别常见,你不希望别人在用这些依赖时和你库中的依赖有所冲突,你可以选择将容易发生冲突的依赖“隐藏”掉。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
<optional>true</optional>
</dependency>
</dependencies>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
你可以看到一个新的标签<optional>
该标签默认值为false,当他为true时,则代表他人依赖你的项目时,将不能够调用你所以依赖的库。
通常情况下,别人用你发布的库只是为了你提供的功能,而不会有人在意你用了谁的第三方库,如果你不把容易冲突的库
optional
,会导致别人某些库依赖到你的库从而发生故障。
# 排除依赖
有时,你的项目使用了更先进的日志库,但由于你必须依赖的某个第三方库中有个老旧的日志库,这将会和你原有的日志库发生冲突,你不想调用它,这该怎么办啊?
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
<exclusions>
<exclusion>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
</exclusion>
</exclusions>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11