【问题标题】:How to declare repository details outside build.gradle如何在 build.gradle 之外声明存储库详细信息
【发布时间】:2019-04-10 01:04:51
【问题描述】:

我正在使用 repositories{} 块在 build.gradle 文件中声明用于依赖解析的存储库。有没有办法在 build.gradle 文件之外声明存储库,这样我就不必为每个其他项目声明。

我来自 maven 背景,我们可以在 .m2 文件夹中的 settings.xml 中声明存储库。

请指教。

【问题讨论】:

  • 我后来想通了。对此的答案是将 gradle.properties 文件中的存储库详细信息声明为用户目录中 .gradle 文件夹中的全局变量。您可以将 build.gradle 中的这些全局变量用于所有本地项目。

标签: java gradle build.gradle


【解决方案1】:

依赖项的来源是构建的重要组成部分。它是帮助提供可重复构建的众多元素之一。 Maven 假定给定版本的依赖项在所有存储库中都是相同的。可悲的是,这不是真的。

因此在每个 Gradle 构建中声明存储库是很自然的。 这可以通过让声明来自项目中的external script which is applied 来实现。

并且该脚本应该依赖allprojects 块来确保将存储库添加到多项目构建的所有项目中。

【讨论】:

  • 我相信仍然应该在本地提供 build.gradle 之外的存储库,因为通常在一个组织中,我们通常有非常标准的存储库结构来解决依赖关系并在每个文件中声明这些存储库build.gradle 文件没有意义。这是在每个项目上创建硬依赖。此外,在开发区域移动时,Jenkins 可以在构建作业配置中处理依赖关系解析,该配置再次位于 build.gradle 之外。
  • 我也不确定在代码存储库中硬编码存储库是否是个好主意。当存储库不可用或完全消失(例如 Codehaus)时,这可能会导致问题。能够在组织内指定存储库实际上也有利于再现性:一旦库被缓存,您就不会那么依赖外部因素。 (此外,Maven/Gradle 似乎倾向于“泄露”您尝试下载的库的名称,甚至是内部名称,这可能是一个问题。)至少能够用本地配置覆盖会很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-22
相关资源
最近更新 更多