从Gradle中的Maven Repository获取最新的快照版本

时间:2017-09-26 19:33:52

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

我有一个项目,使用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); 

但没有成功。让我知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我遇到了和你一样的情况。

  • 开发环境: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存储库,一个存储库具有与所需项目相同的项目,但是每个版本代码只有一个版本,它位于Maven存储库的前面,我们可以从中下载最新的jar,因此它阻止了更新最新版本。 我们交换了这两个仓库的序列,问题就消失了。

在我的情况下,它与Maven配置或缓存无关,这是由于gradle中包含了回购协议。进一步的原因仍然需要挖掘。

希望可以帮助遇到相同问题的人。