【问题标题】:Get latest snapshot version from Maven Repository in Gradle从 Gradle 中的 Maven 存储库获取最新的快照版本
【发布时间】:2017-09-26 19:33:52
【问题描述】:

我有一个项目,它使用 Gradle 将我们的 SNAPSHOT 工件发布到远程 Maven 存储库。

当我发布到 Maven 时,时间戳和内部版本号会附加到 Jar 名称中。我正在尝试从其他项目之一下载最新版本,即 myjar-1.6.0-20170926.190543-10.jar。除非我从 .gradle 中删除它或重新启动我的工作空间,否则我无法下载。

myjar-1.6.0-20170926.162756-7.jar        
myjar-1.6.0-20170926.162756-7.jar.md5    
myjar-1.6.0-20170926.162756-7.jar.sha1   
myjar-1.6.0-20170926.162756-7.pom        
myjar-1.6.0-20170926.162756-7.pom.md5    
myjar-1.6.0-20170926.162756-7.pom.sha1   
myjar-1.6.0-20170926.182639-8.jar        
myjar-1.6.0-20170926.182639-8.jar.md5    
myjar-1.6.0-20170926.182639-8.jar.sha1   
myjar-1.6.0-20170926.182639-8.pom        
myjar-1.6.0-20170926.182639-8.pom.md5    
myjar-1.6.0-20170926.182639-8.pom.sha1   
myjar-1.6.0-20170926.182748-9.jar        
myjar-1.6.0-20170926.182748-9.jar.md5    
myjar-1.6.0-20170926.182748-9.jar.sha1   
myjar-1.6.0-20170926.182748-9.pom        
myjar-1.6.0-20170926.182748-9.pom.md5    
myjar-1.6.0-20170926.182748-9.pom.sha1   
myjar-1.6.0-20170926.190543-10.jar       
myjar-1.6.0-20170926.190543-10.jar.md5   
myjar-1.6.0-20170926.190543-10.jar.sha1  
myjar-1.6.0-20170926.190543-10.pom       
myjar-1.6.0-20170926.190543-10.pom.md5   
myjar-1.6.0-20170926.190543-10.pom.sha1  

依赖项目如下

configurations.all {
  resolutionStrategy.cacheDynamicVersionsFor 0, 'seconds'
  resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

 compile ( group: "com.test", name:"myjar", version: "1.6.0-SNAPSHOT", changing: true ); 

也尝试过

compile ( "com.test:myjar:latest.integration); 

但没有任何结果。让我知道如何解决这个问题?

【问题讨论】:

  • 您尝试从 Eclipse/任何其他 IDE 或命令行运行它?
  • 我正在从 Eclipse IDE 尝试它..

标签: java eclipse maven build.gradle maven-publish


【解决方案1】:

您可以使用--refresh-dependencies 运行本地构建。有关更多信息,请参阅此问题的答案How can I force gradle to redownload dependencies?

【讨论】:

  • Guenther,我相信 --refresh-dependencies 会强制所有模块刷新。但我只想刷新快照版本
  • 这是正确答案。 AFAIK 没有更新单个工件的选项。
【解决方案2】:

我遇到和你一样的情况。

  • 开发环境:Android Studio 4.0
  • 构建工具:gradle 3.6
  • 电脑:Mac

我在应用程序端,当我使用来自服务器端的 jar 时,通过添加 maven repo 并在 build.gradle 中添加项目依赖项来包含 jar,如下所示:

buildscript {
repositories {
    mavenLocal()
    maven { url 'http://maven.xxx.com/xxx/xxx/‘ }        
 }}
dependencies {
   ...
   implementation ‘project_group_id:artifact_id:latest.integration’
   }

我没有使用./gradlew build --refresh-dependencies清除缓存,而是直接进入缓存文件夹/Users/your_user_name/.gradle/caches/modules-2/files-2.1并删除本地jar以便下载更新的jar。

但还是失败了……

最后我们发现原因很奇怪: 我们包括了几个maven repo,一个repo与我们需要的项目相同,但是每个版本代码只有一个版本。它在maven repo前面,我们可以从中下载最新的jar,因此它阻止了更新的最新版本。 我们交换这两个repo的顺序,问题就消失了。

在我的情况下,这与 maven 配置或缓存无关,这是由于 gradle 中包含的 repo。进一步的原因还有待挖掘。

希望能帮助遇到同样问题的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    相关资源
    最近更新 更多