王小五 發表於 2025-10-15 10:10:00

统一管理第三方包的依赖包版本号

<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>&lt;dependencyManagement&gt;
    &lt;dependencies&gt;
      &lt;dependency&gt;
            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-dependencies&lt;/artifactId&gt;
            &lt;version&gt;${spring-boot-dependencies.version}&lt;/version&gt;
            &lt;type&gt;pom&lt;/type&gt;
            &lt;scope&gt;import&lt;/scope&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
            &lt;groupId&gt;org.apache.avro&lt;/groupId&gt;
            &lt;artifactId&gt;avro-mapred&lt;/artifactId&gt;
            &lt;version&gt;1.11.3&lt;/version&gt;
      &lt;/dependency&gt;
&lt;/dependencyManagement&gt;
</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>&lt;dependencies&gt;</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>&lt;dependencyManagement&gt;</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>&lt;exclusions&gt;</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]
查看完整版本: 统一管理第三方包的依赖包版本号