如何使用Gradle的动态版本并避免Beta版?

Val*_*zzo 5 junit gradle maven

我在build.gradle上有这个:

testCompile(group: 'junit', name: 'junit', version: '4.+')
Run Code Online (Sandbox Code Playgroud)

决议为:

junit:junit:4.+ -> 4.12-beta-1
Run Code Online (Sandbox Code Playgroud)

我不想使用beta版本,但同时我想使用动态版本。在这种情况下,我想依靠4.11。

可能吗?怎么样?

注意:Maven“版本”插件-如何从响应中排除alpha / beta版本?有一个Maven的答案,但我不确定如何在Gradle中翻译。

小智 3

您可以使用 ComponentMeta 来设置状态:

dependencies {
   components {
     eachComponent { ComponentMetadataDetails details ->
         def version = details.id.version
         if (version.contains("beta") || version.contains("alpha")) {
             details.status = "milestone" // default in Gradle
         }
     }
   }
 }
Run Code Online (Sandbox Code Playgroud)

然后为您的依赖项使用状态范围语法:

testCompile(group: 'junit', name: 'junit', version: 'latest.release')
Run Code Online (Sandbox Code Playgroud)

现在 Gradle 不会将您的 beta 视为“版本”,因此它不会匹配 4.12-beta-1。但这不会让您只选择 4.x 版本,即 5.2 版本也适用。