【问题标题】:How define for Maven's Environment Variable to define Local Repository and Wrapper download location?如何定义 Maven 的环境变量来定义本地存储库和包装器下载位置?
【发布时间】:2020-12-08 18:35:27
【问题描述】:

我需要提及 Gradle 才能理解并找到适用于 Maven 的相同解决方案。

在 Gradle 中存在 GRADLE_HOME 和 GRADLE_USER_HOME(存储库)环境变量,对于 Maven,前者通过 M2_HOME 和关于 存储库 我使用 @ 987654324@ 文件来定义<localRepository> 位置

对于 Maven 和 Gradle,我可以放心地定义软件的安装位置,例如除 .m2 和 .gradle 之外的其他位置到辅助磁盘,甚至可以自定义目录名称。关于存储库位置的相同目标,都用于辅助磁盘(通过settings.xml 文件记住 Maven)

注意:因此.gradle 和.m2 为空且未使用。

在 Gradle 关于创建的包装器中,gradle-wrapper.properties 文件有:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-#.#.#-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

那么最后的路径就是:GRADLE_USER_HOME/wrapper/dists 因此观察GRADLE_USER_HOME(自定义位置 - 否则默认为.gradle)是如何定义的:

  • 本地存储库
  • 通过包装器安装下载的 Gradle 的基本路径

目标:如何为 Maven 完成相同的行为?我的意思是,Maven 应该自动识别的本地存储库的 环境变量 名称(类似于MAVEN_USER_HOME)应该是什么? (不使用settings.xml 文件)。它的目的是根据配置的 环境变量 名称安装任何 Maven 包装器(自定义位置 - 否则默认为 .m2),当然也定义了本地存储库。

因此:我需要 maven-wrapper.properties 使用类似 MAVEN_USER_HOME(自定义位置 - 否则默认为 .m2)根据其机器中的开发人员/用户。

【问题讨论】:

  • 不在用户目录中使用默认位置.m2有什么好处?
  • 有一个自定义的位置,如果主磁盘空间也用完了,本地存储库和包装器分布可能从一开始就放在其他地方(大容量的pendrive)。
  • 由于 IO 是构建的主要因素,我会将本地存储库放在 SSD 上。
  • 同意,也可以考虑使用 SSD,关键是定义与主磁盘不同的位置。
  • 我的查询和乔丹一模一样。我觉得我们应该直截了当地回答,乔丹要求的能不能做,而不是问他的优势,或者他应该把本地存储库放在哪里。因为如果他问这个问题,他肯定有自己的理由不使用默认目录。即使我们说服他更改默认位置没有任何优势,但至少从学习的角度来看,在使用环境变量控制本地存储库位置方面,Maven 是否有这样的限制仍然是件好事。

标签: maven maven-3 maven-wrapper


【解决方案1】:

对我来说,我使用的是从 spring.io 生成的 Spring Boot 样板代码。里面有mvnw.cmd。通过将MAVEN_USER_HOME 设置为自定义位置,运行mvnw.cmd 会将maven 下载到该自定义位置。

完成后,我仍然需要手动转到下载的 maven 位置,将 settings.xml 配置为指向 maven 库 repo 的自定义位置。

因此,遗憾的是,目前看来 settings.xml 似乎是配置 repo 所必需的,而 MAVEN_USER_HOME 环境变量与 repo 无关。

【讨论】:

  • 你能分享源代码添加的部分吗?如果您可以添加更详细的步骤说明将很有价值
猜你喜欢
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
  • 2018-12-23
  • 2016-04-09
相关资源
最近更新 更多