Tag: 依赖管理

Gradle:具有依赖版本范围的maven-publish

我正在开发一个依赖于kotlin-stdlib的测试工具库 。 对实现我的lib的项目有最小的影响我试图在发布的maven pom文件中使用版本范围: <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib</artifactId> <version>[1.1.2,2.0)</version> <scope>compile</scope> </dependency> 据此 当Maven遇到一个版本引用的多个匹配时,它使用最高的匹配版本 版本范围应该允许gradle选择适合所有依赖的版本。 但是,当测试它时,即使我的测试项目指定了kotlin-stdlib:1.1.2 ,gradle也会选择可用于我的范围的最高版本。 $ ./gradlew example:dependencies … +— org.jetbrains.kotlin:kotlin-stdlib:[1.1.2] -> 1.1.4-3 | \— org.jetbrains:annotations:13.0 \— se.lovef:kotlin-assert-utils:0.0-SNAPSHOT +— org.jetbrains.kotlin:kotlin-stdlib:[1.1.2,2.0) -> 1.1.4-3 (*) 如果我使用硬性要求 [1.1.2]或软性要求1.1.2似乎并不重要。 如果我在一个android项目中使用我的库,它会失败: 应用程序(1.1.3-2)和测试应用程序(1.1.4-3)的已解决版本不同。 有关详细信息,请参阅http://g.co/androidstudio/app-test-app-conflict 。 建议的解决方案是在实施项目中添加解决方案规则,例如 configurations.all { resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } } 然而,我不想强​​加给用户,而是我想要我的lib 使用项目中可用的版本,只要它符合我定义的范围[1.1.2,2.0) 如果项目不使用kotlin-stdlib请使用与我的范围匹配的最高版本 如果项目依赖版本不匹配我的lib失败 有什么我可以做我的lib实现这个?