统一管理第三方包的依赖包版本号
<h1 id="起因">起因</h1><p>在java项目中,我在maven的pom.xml中引用了<code>io.github.officiallysingh:spring-boot-starter-spark:1.3</code>包,然后这个包里又有<code>org.apache.spark:spark-core_2.13:3.5.5</code>包的引用,而在spark-core_2.13包中又引用了<code>org.apache.avro:avro-mapred:1.11.4</code>包,这个包的版本0.10.0修改为0.9.0,我们如何实现呢?</p>
<h1 id="推荐方法">推荐方法</h1>
<ul>
<li>通过在dependencyManagement中声明三方包的版本,来在自己项目中,将所有指定包的版本进行统一,并且包版本不同产生的冲突</li>
</ul>
<p><img src="https://img2024.cnblogs.com/blog/118538/202510/118538-20251015100631676-1491272676.png" alt="图片" loading="lazy"></p>
<p>在当前项目的pom.xml中添加代码</p>
<pre><code><dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro-mapred</artifactId>
<version>1.11.3</version>
</dependency>
</dependencyManagement>
</code></pre>
<p>刷新依赖之后,可以看到三方包里的依赖包avro-mapred版本已经改变了</p>
<p><img src="https://img2024.cnblogs.com/blog/118538/202510/118538-20251015100715741-260902133.png" alt="图片" loading="lazy"></p>
<h1 id="其它方法">其它方法</h1>
<p>下面这个表格总结了你可以在项目中使用的三种主要策略。</p>
<table>
<thead>
<tr>
<th style="text-align: left">方法</th>
<th style="text-align: left">操作方式</th>
<th style="text-align: left">适用场景与说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left"><strong>💡 直接声明依赖</strong></td>
<td style="text-align: left">在 <code><dependencies></code> 中直接声明你想要的 <code>jersey-client</code> 版本。</td>
<td style="text-align: left"><strong>最简洁直接</strong>,适用于单模块项目,快速覆盖传递依赖的版本。</td>
</tr>
<tr>
<td style="text-align: left"><strong>📦 依赖管理</strong></td>
<td style="text-align: left">在 <code><dependencyManagement></code> 中统一管理 <code>jersey-client</code> 的版本。</td>
<td style="text-align: left"><strong>推荐用于多模块项目</strong>,可以保证所有模块使用的版本一致,避免冲突。</td>
</tr>
<tr>
<td style="text-align: left"><strong>🗑️ 排除+引入</strong></td>
<td style="text-align: left">先通过 <code><exclusions></code> 排除旧版本,再显式引入新版本。</td>
<td style="text-align: left"><strong>最严格的控制</strong>,确保构建时不会引入冲突的旧版本,但配置稍显繁琐。</td>
</tr>
</tbody>
</table>
</div>
<div id="MySignature" role="contentinfo">
<p></p>
<div class="navgood">
<p>作者:仓储大叔,张占岭,<br>
荣誉:微软MVP<br>QQ:853066980</p>
<p><strong>支付宝扫一扫,为大叔打赏!</strong>
<br><img src="https://images.cnblogs.com/cnblogs_com/lori/237884/o_IMG_7144.JPG"></p>
</div><br><br>
来源:https://www.cnblogs.com/lori/p/19142696
頁:
[1]