2016-04-28 83 views
2

我有下面的gradle任务,解压缩已下载到tmp的依赖关系。Gradle - 解压缩最新版本的依赖关系

task unzip(type: Copy) { 
    def zipFile = file('tmp/dist-1.0.1.zip') 
    def outDir = file("unpacked/dist") 

    from zipTree(zipFile) 
    into outDir 
} 

不过,我在寻找下载最新版本的依赖,而不是某个特定版本(即该脚本将下载dist-1.0.+)的。

有没有一种方法可以解压缩依赖项,不管哪个版本的依赖项已经被下载?

+0

要在运行时找出最新版本的依赖关系,最好使用gradle的依赖关系解析机制。 – RaGe

回答

3

添加一个新的配置,以免污染现有项目配置:

configurations{ 
    download 
} 

添加依赖到申报配置,版本通配符作为期望。只需使用+的版本将让你获得最新的版本中声明库:

dependencies{ 
    download `foo:bar:+` 
} 

解压解决依赖性:

task unzip(type: Copy) { 
    def zipPath = project.configurations.download.find {it.name.startsWith('bar') } 
    def zipFile = file(zipPath) 
    def outDir = file("unpacked/dist") 

    from zipTree(zipFile) 
    into outDir 
} 

注:它通常是一种不好的做法在项目依赖使用通配符版本。这使得构建非确定性 - 如果具有重大更改的更新版本的依赖项发布到源回购,它可能会破坏构建。