- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我相信我已经正确配置了所有内容,这样 grape 应该询问存储库是否有新的修订版,但事实并非如此。只要 jar 存在于 .groovy/grapes 中,它就会使用它。
我正在通过我们应用程序的 API 通过 Java 代码进行抓取,因此如果脚本有 @Grab,可能会有一些预处理不太容易处理,如果这很重要......
Map<String,Object> args = new HashMap<String, Object>();
args.put("validate", true);
args.put("classLoader", gcl);
Map<String,Object> dependencies = new HashMap<String, Object>();
dependencies.put("group", groupID);
dependencies.put("module", artifactID);
dependencies.put("version", version);
dependencies.put("force", true);
dependencies.put("changing", true);
Grape.grab(args, dependencies);
其中 groupID、artifactID 和 version 是从调用者的脚本中传入的。
如果我删除葡萄缓存,它总能正确找到最新版本。如果我随后上传同一个 jar 的新版本,它甚至不会尝试查看是否有新版本(我查看了 Artifactory 日志,它恰好是我正在使用的存储库,并且它也得到了确认因为它列出的下载计数是 0)。
我试过不使用 grapeConfig.xml(即所有默认值,并使用 Grape.addResolver 来添加存储库),并且有一个 grapeConfig.xml 有我的存储库,还有这一行,我从另一篇文章中收集的是应该告诉它假设缓存有效多长时间(除非我误解了它,但在任何情况下都不起作用)。
<property name="ivy.cache.ttl.default" value="2m"/>
我还观察到,如果我为版本指定“*”,葡萄确实会向存储库询问元数据,但似乎仍然不知道有更新的修订版。此外,一旦我这样做了,它就再也找不到特定的版本了。我必须删除缓存才能使其恢复特定版本的功能。
不幸的是,我是在这里发帖的新手,所以不允许包括我正在谈论的依赖项的图像,如在 Artifactory 中所见,但它会是这样的:
test
|----sample
|--------1.0-SNAPSHOT
|----------sample-1.0-20141125.185508-1.jar
|----------sample-1.0-20141125.185508-1.pom
grab("test","sample","1.0-SNAPSHOT") 正确返回 -1 版本。如果我随后上传新的修订版:
test
|----sample
|--------1.0-SNAPSHOT
|----------sample-1.0-20141125.185508-1.jar
|----------sample-1.0-20141125.185508-1.pom
|----------sample-1.0-20141125.191916-2.jar
|----------sample-1.0-20141125.191916-2.pom
grab("test","sample","1.0-SNAPSHOT") 甚至不询问存储库是否有新内容,而是返回缓存的 -1 jar。
grab("test","sample","*") 向存储库询问元数据,但仍返回缓存的 jar,然后呈现 grab("test","sample","1.0-SNAPSHOT") 无效(返回 NOT FOUND)。
我觉得我一定遗漏了一些明显的东西......
最佳答案
我的下意识 react 是您以非预期的方式使用它,因此得到了奇怪的结果。相反,也许您应该更明确地获取依赖项,而不要使用 Grape/Grab。
这是一些示例代码,您可以如何执行此操作...
def downloadArtifact(repo, groupId, artifactId, version, e) {
println "Fetching ${artifactId}..."
def artifactResUrl = "${nexusServerUri}${resolvePath}?r=$repo&g=$groupId&a=$artifactId&v=$version&e=$e"
def artifactRes = new XmlSlurper().parse(artifactResUrl)
def repoPath = artifactRes.data.repositoryPath
def address = "${nexusServerUri}${contentPath}/${repo}${repoPath}"
def filename = "${artifactId}-$version.${e}"
def file = new File('lib', filename)
def fos = new FileOutputStream(file)
def out = new BufferedOutputStream(fos)
out << new URL(address).openStream()
out.close()
println "Done."
}
nexusServerUri = 'http://some.server.com:8081/nexus'
resolvePath = '/service/local/artifact/maven/resolve'
contentPath = '/content/groups'
repo = 'sprn-maven2'
groupId = 'com.abc.somethign'
version = '1.0-SNAPSHOT'
e = 'jar'
downloadArtifact(repo, groupId, 'artifact-id', version, e)
显然这需要认真调整,但应该获得最新的依赖项(我的项目需要这个)并且如果它与当前的相同,它不应该看起来不同。
关于java - Groovy Grape 没有下载新的修订版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27136532/
我的 Grape 端点中有这样一行来检查 POST 正文的内容,以提供测试端点: return 'OK' if request.body.string == 'TEST' 在我笔记本电脑上的开发环境中
我正在尝试在没有 grape-api gem 的情况下使用 grape-entity。所以只需将它用作原始 Rails Controller 的序列化器即可。 当尝试通过以下方式展示我的资源时: 呈现
在 Grape 中,如果您使用 错误! 方法它会抛出一个错误并且永远不会调用 Grape::Endpoint “after”回调。 我希望应用程序在出错时调用后 Hook !已被调用。 我添加了这个中
我正在尝试使用葡萄来制作 Rest API。 为此,我在一个目录中创建了一个 config.ru 文件: require 'rubygems' require 'rack' require './gr
我想做的是在葡萄和葡萄实体 gem 之间重用类型和描述。 在文档中我阅读了以下内容: You can use entity documentation directly in the params b
我想在我的 groovy 程序中使用 @Grape,但我的程序由几个文件组成。 Groovy Grape page上的例子所有人似乎都假设您的脚本将由一个文件组成。我怎样才能做到这一点?我应该将它添加
我正在尝试使用org.xhtmlrenderer:core-renderer:R8pre2在常规脚本中,但我收到链接错误: Caught: java.lang.LinkageError: loader
我需要创建一个POST,可以在同一请求中上传多个文件,但我不知道如何用grape编写它。现在只上传一个文件,这就是我正在做的事情,并且工作正常: desc 'Creates a new attachm
对于我的其中一种方法,以下方法不起作用。我几乎直接从官方文档中复制了所有内容: params do requires :authenticationType, type: Array[String],
如何让 Grape 中的多个路由参数在 grape 中工作? 我可以使这条路线可行: .../api/company/:cid 但是当我尝试这样做时: .../api/company/:cid/mem
您如何配置 Grape 以在默认位置之外的位置查找自定义配置文件 ~/.groovy/grapeConfig.xml ?不幸的是,官方文档位于 http://groovy.codehaus.org/G
我相信我已经正确配置了所有内容,这样 grape 应该询问存储库是否有新的修订版,但事实并非如此。只要 jar 存在于 .groovy/grapes 中,它就会使用它。 我正在通过我们应用程序的 AP
我对 Ruby 有点陌生,但我在 Ruby 中使用 Grape API 编写了以下代码。每次点击 GET/api/v1/foo 时,我都会调用 @data = YAML.load(),在 Grape
我使用 Ember 作为我的前端和 Grape API 来为我的 API 提供服务。 前端发送类似: { "service"=>{ "name"=>"Name", "duratio
我在部署从 groovy 脚本创建的 JAR 时遇到问题,我认为这是因为在脚本中我使用 Grape 的 Grab 功能来引入一些库,然后当我构建 JAR 时,这些库是'包含在类路径或任何东西中。 我怎
因此,我正在使用 Rails 4 和 Grape Api 开发这个系统。基本上,它汇总了有关在车辆上执行的维护服务的信息。我的模型定义如下: # service.rb class Service <
我正在使用 Grape redtful-api。我无法继承 Grape 中的 common_params。我定义了共同 _params 类 API1 并在 API2 中调用它会引发错误。如何更改代码以
我有一个 format :xml Grape::API 对于删除请求,我想返回一个空响应。 我尝试输入的所有内容,true,false,nil,它都会尝试转换为 xml。我该怎么做呢? 谢谢 最佳答案
我正在尝试使用 Rails 和 Grape 构建一组 API。用户模型如下: { "email": "foo@bar.com" "name": "Foo Bar" } 现在,在 API
这个问题已经有答案了: Groovy - Grab - download failed (9 个回答) 已关闭 6 年前。 我有一个 Groovy 文件,其中包含以下代码: @Grab(group='
我是一名优秀的程序员,十分优秀!