Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何声明对至少一个版本maven的依赖关系_Maven - Fatal编程技术网

如何声明对至少一个版本maven的依赖关系

如何声明对至少一个版本maven的依赖关系,maven,Maven,我有一个依赖于a-api的MyAPI 我的客户机将明确依赖于A-api,因此我可能需要按照提供的声明此依赖关系 与其在我的api的pom中声明硬编码版本依赖于a-api,我想要一个最低版本,因为a-api的团队将保证它的api将与前一个兼容 我的api的pom: <dependency> <groupId>org.mygroup</groupId> <artifact

我有一个依赖于a-api的MyAPI

我的客户机将明确依赖于A-api,因此我可能需要按照提供的声明此依赖关系

与其在我的api的pom中声明硬编码版本依赖于a-api,我想要一个最低版本,因为a-api的团队将保证它的api将与前一个兼容

我的api的pom:

            <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)包装无关,纯范围的“编译”更好