跳到内容

上一站知道了包管理器是什么。现在深入 Maven。


pom.xml —— 项目清单

一个最简的 pom.xml

xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <dependencies>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.15.2</version>
    </dependency>
  </dependencies>
</project>

三件套groupId(组织)、artifactId(项目名)、version(版本号)。合起来就是全球唯一标识。

存成 pom.xmlmvn compile 自动下载依赖并编译。


生命周期

Maven 定义了一串阶段,你只用记最常用的几个:

bash
mvn clean      # 清理
mvn compile    # 编译
mvn test       # 测试
mvn package    # 打包
mvn install    # 装到本地
mvn clean package  # 最常用

锁文件

一个经典悲剧:同事 A 用 "lodash": "^4.17.21",三个月后你 npm install 拿到 4.17.30——但 4.17.28 引入了 bug。

锁文件记录了你实际安装的每个依赖的精确版本和依赖树。

生态锁文件精确安装
npmpackage-lock.jsonnpm ci
piprequirements.txtpip install -r
Maven无内置写死版本号

两个文件都该提交 Git。 package.json 是声明,package-lock.json 是快照。


.gitignore

生成物不该提交:

gitignore
# Python
__pycache__/
*.pyc
.venv/

# Node
node_modules/

# Java
target/
*.class

# IDE
.idea/
.vscode/

黄金法则:能通过 npm install / pip install / mvn compile 重新生成的,都不提交。

bash
cat > .gitignore << 'EOF'
target/
node_modules/
__pycache__/
.idea/
.vscode/
EOF

总结

概念一句话
pom.xmlMaven 的项目清单
生命周期clean → compile → test → package → install
锁文件精确记录安装版本
.gitignore生成物不提交

→ 下一章

依赖装上了,但版本号里的 ^2.15.2 是什么意思?下一站:语义化版本。

第5章:语义化版本

Built with VitePress | Software Systems Atlas