在 Java 项目中,“管理依赖”通常指如何声明、引入、更新、隔离和构建项目所需的第三方库(jar 包)。下面从工具、机制、实践、常见问题几个层面系统说明。
现代 Java 几乎不使用手动下载 jar,而是通过构建工具管理依赖。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
特点:
~/.m2)implementation 'org.apache.commons:commons-lang3:3.12.0'
优点:
✅ 推荐:新项目优先 Gradle,老项目维护 Maven
常见 scope(Maven 示例):
| Scope | 说明 |
|---|---|
| compile | 默认,编译+运行都需要 |
| provided | 编译需要,运行由容器提供(如 servlet-api) |
| runtime | 编译不需要,运行需要 |
| test | 仅测试阶段使用 |
错误使用 scope 是常见依赖问题根源。
避免:
<version>LATEST</version>
✅ 使用明确版本,保证可重现构建
Maven:
<dependencyManagement>
Gradle:
ext {
springVersion = '5.3.20'
}
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>5.3.20</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Maven:
mvn dependency:tree
Gradle:
gradle dependencies
<exclusions>
<exclusion>
<groupId>冲突包</groupId>
<artifactId>冲突包</artifactId>
</exclusion>
</exclusions>
作用:
Maven settings.xml:
<mirror>
<id>aliyun</id>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
module-info.java适合:
❌ 手动拷贝 jar 到 lib
❌ 使用 unknown / SNAPSHOT 版本上线
❌ 依赖过多、过旧
✅ 定期 dependency:analyze
✅ CI 中构建并缓存依赖
如果你愿意,我可以:
你目前用的是哪种方式?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。