当前位置: 首页 > 知识库问答 >
问题:

Gradle下载不需要的依赖项

武彭薄
2023-03-14

我正试图使用Gradle从Maven Central下载我最新发布的依赖项:

repositories {
  mavenCentral()
}

dependencies {
  implementation 'io.github.iltotore:ec-client_2.13:1.0-fixed'
}

当尝试构建时,我得到一个错误:

Could not find io.github.iltotore:core:1.0-fixed.
Required by:
    project : > io.github.iltotore:ec-client_2.13:1.0-fixed

但是io。github。iltotore:core:1.0-fixed不在lib的pom中,我的朋友可以毫无错误地使用它。

为了解决这个问题,我尝试了:

>

删除~/. gradle/中的缓存

使用Intellij IDEA使缓存无效

删除我的maven local

但这个问题仍然存在。

我将Gradle 6.5与Intellij IDEA 2020.1.2结合使用。

共有1个答案

年健
2023-03-14

从Gradle 6.0开始,Maven Publish插件还将发布Gradle Module元数据。元数据的文件扩展名为。模块,您可以在此处的存储库中看到它。

如果打开pom文件,您会注意到顶部有一条注释,上面写着:

xml prettyprint-override"><!--  This module was also published with a richer model, Gradle metadata,   -->
<!--  which should be used instead. Do not delete the following line which   -->
<!--  is to indicate to Gradle or any Gradle module metadata file consumer   -->
<!--  that they should prefer consuming it instead.  -->
<!--  do_not_remove: published-with-gradle-metadata  -->

这指示Gradle使用元数据文件而不是pom文件。

如果打开元数据文件,可以看到它确实对不存在的模块具有依赖性:

"dependencies": [
    ...
    {
        "group": "io.github.iltotore",
        "module": "core",
        "version": {
            "requires": "1.0-fixed"
        }
    }
]

由于核心在任何版本中都不存在,我认为这是一个错误。可能您正在自定义pom文件,但没有对模块元数据进行自定义。

有几种方法可以解决这个问题(以下所有代码片段都是针对Groovy DSL的)。

这样,您就可以完全依赖pom文件。您可以通过以下方式实现:

tasks.withType(GenerateModuleMetadata) {
    enabled = false
}

请参见《Gradle用户指南》中的“了解Gradle模块元数据”。

请注意,这对所有模块都有效,而不仅仅是损坏的模块:

repositories {
    mavenCentral {
        metadataSources {
            mavenPom()
            artifact()
            ignoreGradleMetadataRedirection()
        }
    }
}

请参见《Gradle用户指南》中的声明存储库。

像这样的东西:

dependencies {
    dependencies {
        components {
            // Fix wrong dependency in client_2.13
            withModule("io.github.iltotore:ec-client_2.13") {
                allVariants {
                    withDependencies {
                        removeAll { it.group == "io.github.iltotore" && it.name == "core" }
                    }
                }
            }
        }
    }

    implementation 'io.github.iltotore:ec-client_2.13:1.0-fixed'
}

请参阅Gradle用户指南中的使用组件元数据规则修复元数据。

 类似资料:
  • 我有一个MultiProject gradle,但在我的控制器模块中gradle似乎没有下载spring引导依赖项(或任何其他的东西)。根级构建运行顺利,没有任何错误,但我不能导入任何依赖项类到我的源代码。 以下是gradle文件: 多项目的根生成.级 内部项目Build.Gradle 编辑:settings.gradle 任何帮助都将不胜感激。

  • 我正在学习创建java ee web应用程序。在intellij idea中,我使用项目向导创建了一个项目:Java Enterprise->Web Application。然后,我在项目根中创建了一个构建文件.gradle,并在终端中调用、。这是构建文件。Gradle 当我添加依赖项并进行渐进式构建时,它们不会加载到项目中。例如,Gson库在代码中不可用。如何告诉Gradle下载这些库以便我可以

  • 我正在尝试添加以下依赖项:

  • 有没有办法下载Gradle实现。aar文件的名称。例如,有一个在build.gradle文件中编写的实现,比如实现'com.squareup.picasso:2.5.2',是否可以在没有gradle的情况下按名称'com.squareup.picasso:2.5.2'下载。aar库文件。我正在寻找一种方法来下载任何类型的库在一个android项目的build.gradle文件中提到。

  • 我可以使用Gradle下载Java外部依赖项而不编译源代码吗?