Maven 依赖:范围解决问题
Maven dependency: ranges resolving issue
我想为某些依赖项的版本使用一个范围。但我真的不明白应该如何为我的案例定义它。
这是查找结果 - maven-metadata-nexus.xml
文件。
<versioning>
<latest>0.1.0-SNAPSHOT</latest>
<versions>
<version>0.0.13-SNAPSHOT</version>
<version>0.0.14-SNAPSHOT</version>
<version>0.0.15-SNAPSHOT</version>
<version>0.0.16-SNAPSHOT</version>
<version>0.0.17-SNAPSHOT</version>
<version>0.1.0-SNAPSHOT</version>
</versions>
<lastUpdated>20190826092951</lastUpdated>
</versioning>
我想导入最新的 0.1.x 依赖项,所以我认为这样写范围就可以了
<dependency>
<groupId>my.group.id</groupId>
<artifactId>my-artifact</artifactId>
<version>[0.1, 0.2)</version>
</dependency>
但是,maven 说我的工件没有可用的版本。
将范围定义为 [0.1.0-SNAPSHOT, 0.2)
可以解决问题,但我真的不明白为什么我需要对边界如此具体,这是否是一种好的做法。 定义此类范围的正确方法是什么?
Maven 对待 SNAPSHOT 版本的方式不同于 "normal" 版本。
- "normal"(在回购中发布)版本通常是不可变的。它无法更新或删除,无论您何时访问它都将保持不变。
- SNAPSHOT 版本与此相反。它们可以随时更改(想想正在进行的工作)。
通常只能在您的本地存储库中找到 SNAPSHOT。如果你想使用来自远程仓库的 SNAPSHOT,你必须明确地告诉 Maven 仓库提供 SNAPSHOT 版本。
考虑到这一区别,Maven folks have decided
Resolution of dependency ranges should not resolve to a snapshot (development version) unless it is included as an explicit boundary. There is no need to compile against development code unless you are explicitly using a new feature, under which the snapshot will become the lower bound of your version specification.
我想为某些依赖项的版本使用一个范围。但我真的不明白应该如何为我的案例定义它。
这是查找结果 - maven-metadata-nexus.xml
文件。
<versioning>
<latest>0.1.0-SNAPSHOT</latest>
<versions>
<version>0.0.13-SNAPSHOT</version>
<version>0.0.14-SNAPSHOT</version>
<version>0.0.15-SNAPSHOT</version>
<version>0.0.16-SNAPSHOT</version>
<version>0.0.17-SNAPSHOT</version>
<version>0.1.0-SNAPSHOT</version>
</versions>
<lastUpdated>20190826092951</lastUpdated>
</versioning>
我想导入最新的 0.1.x 依赖项,所以我认为这样写范围就可以了
<dependency>
<groupId>my.group.id</groupId>
<artifactId>my-artifact</artifactId>
<version>[0.1, 0.2)</version>
</dependency>
但是,maven 说我的工件没有可用的版本。
将范围定义为 [0.1.0-SNAPSHOT, 0.2)
可以解决问题,但我真的不明白为什么我需要对边界如此具体,这是否是一种好的做法。 定义此类范围的正确方法是什么?
Maven 对待 SNAPSHOT 版本的方式不同于 "normal" 版本。
- "normal"(在回购中发布)版本通常是不可变的。它无法更新或删除,无论您何时访问它都将保持不变。
- SNAPSHOT 版本与此相反。它们可以随时更改(想想正在进行的工作)。
通常只能在您的本地存储库中找到 SNAPSHOT。如果你想使用来自远程仓库的 SNAPSHOT,你必须明确地告诉 Maven 仓库提供 SNAPSHOT 版本。
考虑到这一区别,Maven folks have decided
Resolution of dependency ranges should not resolve to a snapshot (development version) unless it is included as an explicit boundary. There is no need to compile against development code unless you are explicitly using a new feature, under which the snapshot will become the lower bound of your version specification.