valuation-service-api 已经成功发布到了 Maven Snapshot 仓库。
坐标:
1 2 3
| <groupId>com.pricealgo</groupId> <artifactId>valuation-service-api</artifactId> <version>0.0.1-SNAPSHOT</version>
|
对应 Maven 仓库路径:
1 2 3 4
| com/ └── pricealgo/ └── valuation-service-api/ └── 0.0.1-SNAPSHOT/
|
1. 为什么下面会出现时间戳目录?
1 2 3 4 5 6 7 8 9 10
| 0.0.1-SNAPSHOT/ ├── 0.0.1-20260810.090932-1/ │ ├── valuation-service-api-0.0.1-20260810.090932-1.jar │ └── valuation-service-api-0.0.1-20260810.090932-1.pom │ ├── 0.0.1-20260810.091236-2/ │ ├── valuation-service-api-0.0.1-20260810.091236-2.jar │ └── valuation-service-api-0.0.1-20260810.091236-2.pom │ └── maven-metadata.xml
|
这是Snapshot 的正常行为,你声明的是:
但真正上传 Nexus 后,会被转换成:
其中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 0.0.1 │ └── 基础版本
20260810 │ └── 日期:2026-08-10
091236 │ └── 时间:09:12:36
2 │ └── 第 2 次 Snapshot 发布
|
在:0.0.1-SNAPSHOT/maven-metadata.xml 负责告诉 Maven:
0.0.1-SNAPSHOT 当前应该解析到哪个具体 Snapshot。
概念上类似:
1 2 3 4 5 6 7
| 0.0.1-SNAPSHOT ↓ maven-metadata.xml ↓ 最新版本 ↓ 0.0.1-20260810.091236-2
|
所以其他项目依赖:
1 2 3 4 5
| <dependency> <groupId>com.pricealgo</groupId> <artifactId>valuation-service-api</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
|
不需要写时间戳版本。
3. 目前mvn snapshot仓库如下
完整关系:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| com.pricealgo │ └── valuation-service-api │ └── 0.0.1-SNAPSHOT │ ├── 0.0.1-20260810.090932-1 │ ├── xxx.jar │ └── xxx.pom │ ├── 0.0.1-20260810.091236-2 │ ├── xxx.jar │ └── xxx.pom │ └── maven-metadata.xml
|
4. maven-public vs maven-snapshots关系
通常 Nexus 是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Nexus │ ┌───────────┼───────────┐ │ │ │ ▼ ▼ ▼ maven-releases maven-snapshots maven-public Hosted Hosted Group │ │ │ │ │ ┌──────┴──────┐ │ │ │ │ │ │ ▼ ▼ │ │ releases snapshots │ │ ▼ ▼ 发布 发布
|
发布 Snapshot
1 2 3
| mvn deploy \ -pl valuation-service-api \ -DaltDeploymentRepository=pxb7-snapshots::http://nexus.pxb7.internal/repository/maven-snapshots/
|
发布 Release
1
| <version>1.0.0</version>
|
使用:
1 2 3
| mvn deploy \ -pl valuation-service-api \ -DaltDeploymentRepository=pxb7-releases::http://nexus.pxb7.internal/repository/maven-releases/
|
下载依赖
才使用maven-public
5.如何使用snapshot jar
你这个项目目前:
1
| <version>0.0.1-SNAPSHOT</version>
|
所以 CI 发布 API 建议固定:
1 2 3 4
| mvn clean deploy \ -pl valuation-service-api \ -DskipTests \ -DaltDeploymentRepository=pxb7-snapshots::http://nexus.pxb7.internal/repository/maven-snapshots/
|
认证:
1 2 3 4 5
| <server> <id>pxb7-snapshots</id> <username>...</username> <password>...</password> </server>
|
这样:
1 2 3 4 5 6 7 8 9 10 11 12 13
| valuation-service-api │ │ mvn deploy ▼ maven-snapshots │ ▼ 0.0.1-SNAPSHOT │ ├── timestamp-1 ├── timestamp-2 ├── timestamp-3 └── maven-metadata.xml
|