gpt4 book ai didi

Gradle 搜索本地 maven 或 gradle 存储库

转载 作者:行者123 更新时间:2023-12-03 05:09:53 26 4
gpt4 key购买 nike

我正在使用 gradle,它的本地存储库位于 \.gradle\caches\modules-2\files-2.1其中有所有下载的 jar,但没有我的模块。我应该在哪里搜索它?

我需要 settings.gradle 中的原样我有一个指定的依赖路径,如:

include ':model'
project (':model').projectDir = new File(settingsDir, './model')

在一个新项目中。此外,我不想以这种方式给出路径,因为如果我依赖于该项目的多个项目,那么提及路径将是困难和奇怪的。

如何从本地 maven 或 gradle 存储库中进行 gradle 搜索。

最佳答案

我仍然不确定这里问的是什么,我怀疑多项目构建的工作方式存在一些混淆。所以我将尝试提供一个通用的答案。

您需要回答的第一个问题是您是否对属于同一构建的项目之间的依赖关系感兴趣——如 multi-project build 的一部分。 - 或在单独的版本中。

项目依赖项(多项目构建)

user manual 中涵盖了项目依赖项。并且仅适用于多项目构建。他们使用逻辑路径,使用冒号作为“路径”分隔符,来指定目标模块的位置,如下所示:

dependencies {
implementation project(":model")
}

此时,Gradle 需要知道“:model”在文件系统上的位置。没有办法解决这个问题。你有几个选择:
  • 遵循与逻辑路径结构匹配的目录结构约定,即有一个 MyBigProject/model 目录,其中包含 ":model"子项目
  • 在 settings.gradle 中指定 ":model"的文件路径,例如与 project(":model").projectDir = new File(rootDir, "unusual/path/to/model")
  • 自动发现项目

  • 最常见的方法是第一种。第二个并不罕见,特别是如果你想把子项目放到一个单独的目录中,比如子项目——Gradle 的构建本身就是这样做的。我还没有看到最后一个选项完成,我不知道它是否会遇到问题。

    为了完整起见,如果您使用类似的东西,风险自负,这里有一个在 settings.gradle 文件中自动发现项目的示例:
    rootDir.eachDir { File dir ->
    if ("build.gradle" in dir.listFiles()*.name) {
    include dir.name
    }
    }

    该片段主要在根项目文件夹中查找包含 build.gradle 文件的目录,并将它们添加为子项目。子项目的目录名称成为项目的名称。

    它不是特别聪明,你应该为构建文件使用不同的名称,但它可能会给你一些想法。

    非项目依赖

    与项目依赖项一样,Gradle 需要知道从何处获取指定模块的相应 JAR 或其他形式的工件。您通常为此指定 Maven Central 或类似的东西,但还有其他有用但不太常见的选项:
  • 将项目的工件复制到本地 Maven 存储库中——Maven PluginMaven Publish Plugin支持这个
  • 使用 file://URL 而不是 HTTP/HTTPS 发布到与 Maven 兼容的存储库,这样可以保护您的项目免受 Maven Local
  • 的损坏

    值得注意的是,Gradle 支持 composite builds这允许您用(有效地)来自另一个构建的项目依赖项替换普通依赖项。因此,如果模型是单独构建的一部分,但您拥有源代码并在本地构建,您可以进行更改并立即在另一个构建的项目中测试它们,而无需经历 Maven 世界(和 Gradle 中常见的整个“安装”中间步骤)预复合构建)。

    希望这一切都有意义。

    关于Gradle 搜索本地 maven 或 gradle 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49795417/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com