maven - 如何定义 Maven 的环境变量来定义本地存储库和包装器下载位置?

标签 maven maven-3 maven-wrapper

我需要提及 Gradle 来理解并找到 Maven 的相同解决方案。

在 Gradle 中存在 GRADLE_HOMEGRADLE_USER_HOME (存储库)环境变量,对于 Maven,前者通过 M2_HOME关于存储库我使用 settings.xml文件来定义 <localRepository>位置

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

注意:因此.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 默认情况下)根据其计算机中的开发人员/用户。

最佳答案

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

完成后,我仍然需要手动转到下载的 Maven 位置来配置 settings.xml 以指向 Maven 库存储库的自定义位置。

因此,遗憾的是,目前似乎需要 settings.xml 来配置存储库,而 MAVEN_USER_HOME 环境变量与存储库无关。

关于maven - 如何定义 Maven 的环境变量来定义本地存储库和包装器下载位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65204834/

相关文章:

java - 为什么未指定版本的netty已经阴影到jar中了?

maven - 在 Maven 中,如何递归地构建文件系统中但 react 器外部存在的 -SNAPSHOT 依赖项?

java - 从jar文件编译和运行时读取文件差异

intellij-idea - Intellij - 配置为使用 Maven Wrapper 时未找到有效的 Maven 安装

java - 多个持久性单元出现未知实体异常

java - 将同一父pom下模块的公共(public)groupId移动到Maven中的单个位置

java - Maven Embedder - 运行 hibernate3 :hbm2java programmatically

java - 单个文件中目标命名空间的多个 <schemaBindings>

带有 Maven Wrapper 的 Java 17 导致无法识别的 VM 选项 'MaxPermSize=512m'