猿问

Maven 依赖项:范围解决问题

我想对某些依赖项的版本使用范围。但我真的不明白应该如何为我的案例定义它。

这是查找结果 -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)解决问题,但我真的不明白为什么我需要如此具体的边界,这是否是一个好的做法。定义此类范围的正确方法是什么?


手掌心
浏览 110回答 1
1回答

慕桂英546537

Maven 对待 SNAPSHOT 版本的方式与“普通”版本不同。“正常”(在存储库中发布)版本通常是不可变的。它无法更新或删除,无论您何时访问它仍然是相同的。SNAPSHOT 版本与此相反。他们可以随时更改(想想正在进行的工作)。通常,快照只能在您的本地存储库中找到。如果你想使用来自远程仓库的 SNAPSHOT,你必须明确地告诉 Maven 仓库提供 SNAPSHOT 版本。考虑到这一区别,Maven 人员决定:依赖范围的解析不应解析为快照(开发版本),除非将其作为显式边界包含在内。除非您明确使用新功能,否则无需针对开发代码进行编译,在该新功能下快照将成为版本规范的下限。
随时随地看视频慕课网APP

相关分类

Java
我要回答