Build 使用gradle访问存储库中的最新文件

Build 使用gradle访问存储库中的最新文件,build,gradle,artifactory,Build,Gradle,Artifactory,我已经创建了一个可以提取本地.tar文件(我以前从Artifactory手动下载)作为测试的任务。当文件位于gradle脚本的Artifactory上时,如何引用这些文件?我应该只使用服务器路径吗?我对gradle所做的只是一些基本的东西,没有使用过存储库 我还想根据自上次运行脚本以来文件是否已更改来执行特定操作,这是否可能?一种方法是为TAR文件创建一个新的配置。在我的示例中,我给它命名为myTar。在repositories闭包中,您定义了到您的Artifactory存储库的URL,并在de

我已经创建了一个可以提取本地.tar文件(我以前从Artifactory手动下载)作为测试的任务。当文件位于gradle脚本的Artifactory上时,如何引用这些文件?我应该只使用服务器路径吗?我对gradle所做的只是一些基本的东西,没有使用过存储库


我还想根据自上次运行脚本以来文件是否已更改来执行特定操作,这是否可能?

一种方法是为TAR文件创建一个新的
配置。在我的示例中,我给它命名为
myTar
。在repositories闭包中,您定义了到您的Artifactory存储库的URL,并在
dependencies
闭包中将TAR文件作为依赖项引用。运行Gradle时,它将为您下载文件并将其放入本地存储库。据我所知,您已经创建了一个提取TAR文件的任务。我创建了一个名为
extractMyTar
的任务,它通过配置名引用下载的TAR文件,并将其解压到本地目录中

configurations {
    myTar
}

repositories {
    mavenRepo urls: 'http://my.artifactory/repo'
}

dependencies {
    myTar 'your.org:artifact-name:1.0@tar'
}

task extractMyTar << {
    File myTarFile = configurations.getByName('myTar').singleFile

    if(myTarFile.exists()) {
        ant.untar(src: myTarFile, dest: file('myDestDir'))
    }
}
配置{
myTar
}
存储库{
mavenRepo URL:'http://my.artifactory/repo'
}
依赖关系{
myTar'your.org:artifact name:1。0@tar'
}

任务:Mytar我现在无法尝试,但我感谢你的帮助。但是我有一个问题,在依赖项部分,myTar中的路径必须是文件的完整路径?或者我在上面声明为存储库URL之后的路径?1.0是我必须指定的版本吗?我建议您阅读关于的章节。这就解释了一切。它不是文件的完整路径。它是您将工件上载到Artifactory时使用的组ID、名称和版本。1.0版只是一个例子。多亏了你的帮助,我才得以运行。作为补充,您是否知道如果依赖项被更新,是否可以执行特定操作?类似于if(myTar.wasdupdated){runsomecode},通常由依赖项的版本决定。在上载文件的较新版本之前,请增加版本号。或者,将其设置为快照版本。对于快照工件,版本不会更改。每当你上传一个新版本,它的哈希值就会改变。Gradle将检测到并下载最新版本。在提取任务中,删除现有的分解文件结构可能是有意义的。否则,您还必须考虑一些版本控制策略