Windows上的Gradle flatdir获取:找不到属性' url'

时间:2016-06-14 19:14:27

标签: java gradle

尝试在我的Windows PC上运行flatdir存储库。

但是当我尝试列出存储库时,它会因以下错误而失败。

列出档案显示了jar。

运行check repository任务会显示该目录存在。

运行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!");
}

1 个答案:

答案 0 :(得分:1)

根据API FlatDirectoryArtifactRepository没有url属性(但它有/* - - - - - - Additional page info - - - - - - - */),虽然你试图在这里访问它

dirs

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

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