Maven 如何下载Gradle依赖项的所有版本?
我在我的公司网络上有一个项目(离线),我想设置Gradle来构建它 我们有一个Maven存储库(Artifactory 4.0.2),我们想用它来解决依赖关系,但我们首先需要将依赖关系从全球互联网导入公司网络 我尝试在我的家用计算机上设置一个虚拟hello world项目,其中包含Maven 如何下载Gradle依赖项的所有版本?,maven,gradle,Maven,Gradle,我在我的公司网络上有一个项目(离线),我想设置Gradle来构建它 我们有一个Maven存储库(Artifactory 4.0.2),我们想用它来解决依赖关系,但我们首先需要将依赖关系从全球互联网导入公司网络 我尝试在我的家用计算机上设置一个虚拟hello world项目,其中包含build.gradle中定义的所有依赖项,然后构建它,触发依赖项解析,并将所有工件及其POM文件下载到gradle的缓存中(在~/.gradle/caches中) 然后,我将整个Gradle缓存复制到公司网络的计算机
build.gradle
中定义的所有依赖项,然后构建它,触发依赖项解析,并将所有工件及其POM文件下载到gradle的缓存中(在~/.gradle/caches
中)
然后,我将整个Gradle缓存复制到公司网络的计算机中,在将所有内容部署到Artifactory之前,我决定使用本地Maven存储库(在~/.m2
中)进行尝试。为此,我创建了一个脚本,从Gradle的缓存中创建相应的.m2/repository
文件夹
当我尝试在公司网络上构建实际项目时,依赖项解析失败,表示无法解析其中一个依赖项,例如:
> Could not find io.netty:netty:3.7.0.Final.
Searched in the following locations:
[...]/.m2/repository/io/netty/netty/3.7.0.Final/netty-3.7.0.Final.pom
[...]/.m2/repository/io/netty/netty/3.7.0.Final/netty-3.7.0.Final.jar
Required by:
gradleTestProj:test:1.0 > org.apache.hadoop:hadoop-auth:2.6.0-cdh5.4.0 > org.apache.zookeeper:zookeeper:3.4.6
问题是,在我的家用计算机中,Gradle的缓存中确实没有这样的目录,只有3.6.2.Final
(只包含POM文件)和3.8.0.Final
(同时包含工件和POM文件)
3.7.0.Final版的POM文件
3.6.2.Final
版本的工件将与3.7.0.Final
的工件和3.8.0.Final
POM&artifact一起下载)任何帮助都将不胜感激 您不需要将外部依赖项导入Artifactory。Artifactory将从预定义的存储库中自动下载它们,并将它们放入其缓存中。您只需要配置Maven/Gradle以指向您的工件。我们公司的工件也没有互联网接入,因此我无法让它从存储库(如Maven central)下载依赖项。我正在努力实现同样的目标,我需要从我的笔记本电脑(Gradle/Maven缓存)中填充工件这样,在公司网络上未连接internet的生成服务器就可以解决依赖关系。你是如何将Gradle缓存的初始副本放入artifactory的?@janh我在家里的计算机上创建了一个虚拟项目,并使用Gradle构建。为了让它下载我需要的依赖项,我让虚拟项目依赖于我在公司网络中的项目所需的直接依赖项。然后,我将
~/.gradle/caches/modules-2/files-2.1
从我的家庭计算机复制到公司网络,并在其上运行一个脚本,在所有子目录中循环,并将pom/jar文件从{group}/{artifact}/{version}/{hash}/
复制到{group}/{artifact}/{version}/
。然后它将{group}
目录拆分为点(a.b
->a/b
),然后对所有文件运行CURL。@janh CURL命令是:CURL-X PUT-u user:pass-T“path/to/local/file”http://corporate-artifactory-server/artifactory/my-repo/path/to/local/file“
例如:curl-xput-u用户:pass-T“%userprofile%/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar”http://corporate-artifactory-server/artifactory/my-repo/com/google/guava/guava/16.0.1/guava-16.0.1.jar“
您不需要将外部依赖项导入Artifactory。Artifactory将从预定义的存储库中自动下载它们,并将它们放入其缓存中。您只需要配置Maven/Gradle以指向您的工件。我们公司的工件也没有互联网接入,因此我无法让它从存储库(如Maven central)下载依赖项。我正在努力实现同样的目标,我需要从我的笔记本电脑(Gradle/Maven缓存)中填充工件这样,在公司网络上未连接internet的生成服务器就可以解决依赖关系。你是如何将Gradle缓存的初始副本放入artifactory的?@janh我在家里的计算机上创建了一个虚拟项目,并使用Gradle构建。为了让它下载我需要的依赖项,我让虚拟项目依赖于我在公司网络中的项目所需的直接依赖项。然后,我将~/.gradle/caches/modules-2/files-2.1
从我的家庭计算机复制到公司网络,并在其上运行一个脚本,在所有子目录中循环,并将pom/jar文件从{group}/{artifact}/{version}/{hash}/
复制到{group}/{artifact}/{version}/
。然后它将{group}
目录拆分为点(a.b
->a/b
),然后对所有文件运行CURL。@janh CURL命令是:CURL-X PUT-u user:pass-T“path/to/local/file”http://corporate-artifactory-server/artifactory/my-repo/path/to/local/file“
例如:curl-xput-u用户:pass-T“%userprofile%/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar”http://corporate-artifactory-server/artifactory/my-repo/com/google/guava/guava/16.0.1/guava-16.0.1.jar“