【问题标题】:Gradle flatdir on windows gets: Could not find property 'url'Windows 上的 Gradle flatdir 获取:找不到属性“url”
【发布时间】:2018-06-06 14:48:07
【问题描述】:

试图让一个 flatdir 存储库在我的 windows 电脑上工作。

但是当我尝试列出存储库时它失败并出现以下错误。

列出档案显示罐子。

运行检查存储库任务显示目录存在。

运行 uploadArchves 似乎什么也没做(本地存储库中没有文件)。

谢谢。

编辑:原来 flatdir 没有 url 属性,因此可以解释构建错误,但在 uploadArchives 之后 flatdir 目录中仍然没有任何内容。

如何让 uploadArchives 真正做一些事情?

编辑:这里是有效的构建文件:

apply plugin: 'java'
repositories {
    flatDir {
        name "localRepository"
        dirs "d:/ray/gradlerepository/"
    }
}
uploadArchives {
    repositories {
        add project.repositories.localRepository
    }
}

这是原始的东西:

    D:\ray\dev\conradapps\lib1>gradle mLR
    :myListRepositories
    Repositories:
    Name: BintrayJCenter; url: https://jcenter.bintray.com/
    :myListRepositories FAILED

    FAILURE: Build failed with an exception.

    * Where:

   Build file 'D:\ray\dev\conradapps\lib1\build.gradle' line: 15

    * What went wrong:
    Execution failed for task ':myListRepositories'.
    > `Could not find property 'url'` on org.gradle.api.internal.artifacts.repositorie
    s.DefaultFlatDirArtifactRepository_Decorated@a7a0831.

构建文件:

apply plugin: 'java'
repositories {
    //jcenter()
    flatDir {
        name "localRepository"
        dirs "d:/ray/gradlerepository/"
    }
}
dependencies {
    testCompile 'junit:junit:4.12'
}
task myListRepositories << {
    println "Repositories:"
    project.repositories.each { println "Name: " + it.name + "; url: " + it.url }
}
task myListArchives << {
    println "Archives Artifacts: " + configurations.archives.allArtifacts
}
task myCheckRepository << {
    if(new File("d:/ray/gradlerepository").exists()) println("file exists");
        else println("file not found!");
}

【问题讨论】:

    标签: java gradle


    【解决方案1】:

    根据API,FlatDirectoryArtifactRepository 没有 url 属性(但它有一个dirs),尽管您尝试在此处访问它

    project.repositories.each { println "Name: " + it.name + "; url: " + it.url }
    

    这适用于 jcenter,因为它是一个 maven repo(只是另一种存储库类型)并且它具有这样的属性。

    您可以修改您的任务,使其仅显示ArtifactRepository interface 的公共存储库字段或添加一些逻辑来检查存储库类型,以便针对不同存储库类型以不同方式打印存储库信息并防止访问这些字段, 不存在。

    【讨论】:

    • 去掉了it.url,工作正常。但仍然没有上传到存储库。
    • 我没有在您的 build.script 配置中看到 uploadArchives 任务。只需声明一些存储库就足以下载依赖项,而不是发布它们。要上传 em,您必须将此 repo 添加为 uploadArchives { repositories { add project.repositories.localRepository } }
    • 如果你已经完成了(指定的 uploadArchive 配置),那么你必须用一些额外的信息来更新你的问题,比如完整的 build.script。因为从现在开始,这不是您在问题中描述的例外。
    • 这是完整的脚本。不知道如何指定uploadArchive 配置。
    • 阅读用户指南。您必须添加 uploadArchives{ repositories { add project.repositories.localRepository } } 才能将工件发布到本地存储库 docs.gradle.org/current/userguide/…
    猜你喜欢
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 2015-03-17
    • 2019-07-21
    相关资源
    最近更新 更多