为依赖项指定了意外状态“DEV”。预期之一:[集成、里程碑、发布]

Posted

技术标签:

【中文标题】为依赖项指定了意外状态“DEV”。预期之一:[集成、里程碑、发布]【英文标题】:Unexpected status 'DEV' specified for dependency. Expected one of: [integration, milestone, release] 【发布时间】:2019-12-19 03:13:03 【问题描述】:

我正在使用 Gradle 和旧版 ivy 存储库构建项目,其中 jar 是使用自定义 ivy 状态构建的。不幸的是,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”状态而不是默认状态?

【问题讨论】:

【参考方案1】:

默认情况下,Gradle 仅将 integrationmilestonerelease 理解为有效的工件状态。如果您想/需要为您的工件保持“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)
    

【讨论】:

谢谢!不幸的是,我这样做了,现在我遇到了错误:Required org.gradle.dependency.bundling 'external' but no value provided.Required org.gradle.jvm.version '8' but no value provided.Found org.gradle.status 'DEV' but wasn't required. (<- so now it is not required?) 目前我正在尝试某种解决方法

以上是关于为依赖项指定了意外状态“DEV”。预期之一:[集成、里程碑、发布]的主要内容,如果未能解决你的问题,请参考以下文章

无法加载文件或程序集“Elmah”或其依赖项之一。该系统找不到指定的文件

例外:无法加载文件或程序集 XXXX 或其依赖项之一。该系统找不到指定的文件

无法加载文件或程序集“Microsoft.AI.Web”或其依赖项之一。该系统找不到指定的文件

你啥时候使用“require-dev”?啥是常见的开发依赖项?

语法错误:bash 脚本中的“fi”意外(预期“then”)

如何定义仅测试依赖项?