Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 如何下载Gradle依赖项的所有版本?_Maven_Gradle - Fatal编程技术网

Maven 如何下载Gradle依赖项的所有版本?

Maven 如何下载Gradle依赖项的所有版本?,maven,gradle,Maven,Gradle,我在我的公司网络上有一个项目(离线),我想设置Gradle来构建它 我们有一个Maven存储库(Artifactory 4.0.2),我们想用它来解决依赖关系,但我们首先需要将依赖关系从全球互联网导入公司网络 我尝试在我的家用计算机上设置一个虚拟hello world项目,其中包含build.gradle中定义的所有依赖项,然后构建它,触发依赖项解析,并将所有工件及其POM文件下载到gradle的缓存中(在~/.gradle/caches中) 然后,我将整个Gradle缓存复制到公司网络的计算机

我在我的公司网络上有一个项目(离线),我想设置Gradle来构建它

我们有一个Maven存储库(Artifactory 4.0.2),我们想用它来解决依赖关系,但我们首先需要将依赖关系从全球互联网导入公司网络

我尝试在我的家用计算机上设置一个虚拟hello world项目,其中包含
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文件)

  • 有没有办法让Gradle下载
    3.7.0.Final版的POM文件
  • 有没有办法告诉Gradle下载所有版本的依赖项(例如,在上面的例子中,
    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“