如何声明对至少一个版本maven的依赖关系
我有一个依赖于a-api的MyAPI 我的客户机将明确依赖于A-api,因此我可能需要按照提供的声明此依赖关系 与其在我的api的pom中声明硬编码版本依赖于a-api,我想要一个最低版本,因为a-api的团队将保证它的api将与前一个兼容 我的api的pom:如何声明对至少一个版本maven的依赖关系,maven,Maven,我有一个依赖于a-api的MyAPI 我的客户机将明确依赖于A-api,因此我可能需要按照提供的声明此依赖关系 与其在我的api的pom中声明硬编码版本依赖于a-api,我想要一个最低版本,因为a-api的团队将保证它的api将与前一个兼容 我的api的pom: <dependency> <groupId>org.mygroup</groupId> <artifact
<dependency>
<groupId>org.mygroup</groupId>
<artifactId>A-api</artifactId>
<version>a-at-least-version</version><!--I only want a lowest version that i need-->
<scope>provided</scope><!--Should I declare it as provided? -->
</dependency>
org.mygroup
A-api
至少有一个版本
假如
我的客户将使用我们的两个api,如:
<!--Notice, my client will explicitly declare dependency on A-api, and this may be higher than what my-api dependent on. This api will update more frequently than my-api-->
<dependency>
<groupId>org.mygroup</groupId>
<artifactId>A-api</artifactId>
<version>may-be-a-newer-version</version>
</dependency>
<!--My client will also dependent on my-api with a statble version-->
<dependency>
<groupId>org.mygroup</groupId>
<artifactId>my-api</artifactId>
<version>one-version</version>
</dependency>
org.mygroup
A-api
可能是新版本
org.mygroup
我的api
一个版本
这个问题似乎已经通过@michaldo的评论得到了回答,但如果你执意按自己的方式去做,你可以使用这个符号
org.mygroup
.这个问题似乎已经通过@michaldo的评论得到了回答,但如果你下定决心按自己的方式去做,你可以使用这个符号
org.mygroup
.您能否澄清为什么需要按规定声明对A-api的依赖关系?为什么不足以声明对客户端api的依赖关系?@michaldo,请检查我更新的问题。假设A-api的最低版本是1.0.0,我的api:1版本依赖于A-api:1.0.0。您的客户端将依赖于A-api:2.3.4和我的api:1版本。哪里有问题?@michaldo,所以在这种情况下,即使我声明我依赖于api 1.0.0作为提供的作用域,当delcare依赖于a-api 2.3.4时,我的客户机也不会有任何编译或包问题?在这种情况下,您的客户机将使用A-api:2.3.4(maven应用“最近的wins策略”,因为您的客户机对A-api:2.3.4的依赖性为1级,对A-api:1.0.0的依赖性为2级,1级最接近2级)。顺便说一句,在您的库中,您不必将依赖项配置为“提供”。“提供”告诉war插件不包括对目标war的依赖(例如ServletAPI不应该包括在war中,因为它是由容器提供的)。您的案例与WAR(或EAR)打包无关,纯范围“编译”更好。您是否可以澄清为什么需要声明对所提供的A-api的依赖关系?为什么不足以声明对客户端api的依赖关系?@michaldo,请检查我更新的问题。假设A-api的最低版本是1.0.0,我的api:1版本依赖于A-api:1.0.0。您的客户端将依赖于A-api:2.3.4和我的api:1版本。哪里有问题?@michaldo,所以在这种情况下,即使我声明我依赖于api 1.0.0作为提供的作用域,当delcare依赖于a-api 2.3.4时,我的客户机也不会有任何编译或包问题?在这种情况下,您的客户机将使用A-api:2.3.4(maven应用“最近的wins策略”,因为您的客户机对A-api:2.3.4的依赖性为1级,对A-api:1.0.0的依赖性为2级,1级最接近2级)。顺便说一句,在您的库中,您不必将依赖项配置为“提供”。“提供”告诉war插件不包括对目标war的依赖(例如ServletAPI不应该包括在war中,因为它是由容器提供的)。您的案例与WAR(或EAR)包装无关,纯范围的“编译”更好