Maven Snapshot仓库介绍

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 的正常行为,你声明的是:

1
0.0.1-SNAPSHOT

但真正上传 Nexus 后,会被转换成:

1
0.0.1-20260810.091236-2

其中:

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 发布

2. maven-metadata.xml很重要

在: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