Java 的依赖管理主要围绕 构建工具 + 仓库 + 依赖声明 来进行。下面从常见方式、主流工具、核心概念到最佳实践,系统讲一下。
Java 项目一般不直接把 .jar 文件放进项目里,而是通过:
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies>
groupId: 组织
artifactId: 项目
version: 版本
mvn clean install
mvn dependency:tree
mvn dependency:analyze
✅ 约定优于配置
✅ 生态成熟
✅ 企业项目广泛使用
❌ XML 配置冗长
❌ 灵活性不如 Gradle
build.gradle
或
build.gradle.kts
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web:3.2.0'
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'
}
gradle build
gradle dependencies
✅ 构建速度快
✅ 配置灵活(DSL)
✅ Android 官方构建工具
❌ 学习曲线略高
❌ Groovy/Kotlin DSL 多样化
以 Maven 为例:
| Scope | 说明 |
|---|---|
| compile | 默认,编译+运行 |
| provided | 编译需要,运行由容器提供 |
| runtime | 运行需要 |
| test | 测试专用 |
| system | 本地系统 jar(不推荐) |
Gradle 对应:
implementation
compileOnly
runtimeOnly
testImplementation
mvn dependency:tree
gradle dependencies
<exclusion>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
</exclusion>
configurations.all {
resolutionStrategy.force(
'com.google.guava:guava:31.1-jre'
)
}
~/.m2/repository)<repositories>
<repository>
<id>nexus</id>
<url>http://repo.example.com/repository/maven-public/</url>
</repository>
</repositories>
统一版本管理
dependencyManagementplatform() / BOM使用 BOM(Bill of Materials)
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>xxx-bom</artifactId>
<version>1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
system scope~/.m2/repository
mvn install:install-file
或
implementation files('libs/xxx.jar')
| 场景 | 建议 |
|---|---|
| 企业传统项目 | Maven |
| 微服务 / Spring Boot | Maven 或 Gradle |
| Android | Gradle |
| 追求灵活性 | Gradle |
如果你愿意,我可以:
你可以告诉我:你现在用的是 Maven 还是 Gradle?项目类型是什么?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。