我正在使用 Gradle 和传统的常春藤存储库构建项目,其中 jar 是用自定义常春藤状态构建的。不幸的是,Gradle 似乎对此类状态有问题,因此我收到错误:
Unexpected status 'DEV' specified for *some_dependecy*:1.0.34. Expected one of: [integration, milestone, release]
以下是在build.gradle中定义依赖关系的方式
compile 'dependency:some_dependecy:1.0.34'
和存储库定义
ivy {
url 'http://local-repo/ivy-candidates-local/'
layout 'pattern' , {
artifact '[organisation]/[module]/[revision]/[type]s/[artifact].[ext]'
ivy '[organisation]/[module]/[revision]/ivys/ivy.xml'
m2compatible = true
}
我认为这很好,因为所有其他依赖项(没有"自定义"状态)都已正确下载
我找不到有关此类问题的任何信息。有没有办法告诉 Gradle 寻找自定义的"DEV"状态而不是默认状态?
默认情况下,Gradle 只将integration
、milestone
和release
理解为有效的工件状态。如果你想/需要保持你的工件的"DEV"状态,看起来你必须在你的build.gradle中添加一些自定义Groovy。
https://docs.gradle.org/current/userguide/customizing_dependency_resolution_behavior.html#sec:component_metadata_rules
(来自上面的链接,不是我自己的代码:)
class CustomStatusRule implements ComponentMetadataRule {
@Override
void execute(ComponentMetadataContext context) {
def details = context.details
if (details.id.group == "org.sample" && details.id.name == "api") {
details.statusScheme = ["bronze", "silver", "gold", "platinum"]
}
}
}
dependencies {
config3 "org.sample:api:latest.silver"
components {
all(CustomStatusRule)
}
}