试图让一个flatdir仓库在我的Windows PC上工作。
但是,当我尝试列出存储库时,它失败并显示以下错误。
列出文件将显示 jar 。
运行检查存储库任务显示该目录存在。
运行uploadArchves似乎不执行任何操作(本地存储库中没有文件)。
谢谢。
编辑:事实证明flatdir没有url属性,因此可以解释生成错误,但是在上载存档之后,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!");
}
最佳答案
根据API的要求,FlatDirectoryArtifactRepository没有url属性(但它具有dirs
),尽管您尝试在此处访问它
project.repositories.each { println "Name: " + it.name + "; url: " + it.url }
这适用于jcenter,因为它是一个Maven存储库(只是另一个存储库类型),并且具有这样的属性。
您可以修改您的任务,使其仅显示ArtifactRepository interface的公共(public)存储库字段,或添加一些逻辑以检查存储库类型,以便针对不同存储库类型以不同方式打印存储库信息,并防止访问不存在的字段。