java - 为什么maven在settings.xml中未配置的目录中使用本地存储库

标签 java maven repository

当我使用 Maven 构建时,我看到了一个奇怪的行为。我发现 Maven 使用的目录中的本地存储库与我在 settings.xml 中配置的目录不同。更糟糕的是,我不知道maven正在使用的目录来自哪里。 为了进行调查,我在执行 maven cmd 时启用了 -X,并且可以看到使用了setting.xml 和本地 repo 目录。 我可以看到settings.xml(全局和用户)是我配置的。而且本地的repo目录和我在tag中配置的完全不一样(只在user settings.xml中配置)。

我不明白为什么。有人有想法吗?是否有其他配置文件可供 maven 检查以覆盖 settings.xml 中的 localRepository 配置?

提前致谢。

最佳答案

既然您确定全局和用户设置文件,那么本地存储库可以被系统/用户属性“maven.repo.local”覆盖 这可以通过多种方式指定:

  1. 作为用户属性:来自 maven cli,如 mvn -Dmaven.repo.local= ...

  2. 作为系统属性:在 MAVEN_OPTS 中设置时,例如 -Dmaven.repo.local=(可以在 maven.bat 或 maven.sh 中设置)

如果 maven.repo.local 没有设置为用户或系统属性,那么 maven 将首先在用户设置中查找 localRepository 配置,然后在全局设置中查找: 如果您在 localRepository (repo/dir1) 中指定相对路径,则将在您的项目目录下使用指定路径创建 repo 目录 如果没有可用的选项,则使用路径/.m2/repository

关于java - 为什么maven在settings.xml中未配置的目录中使用本地存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60493567/

相关文章:

java - 如何配置 persistence.xml 提供者标签

git - 如何设置本地 Git 存储库和本地备份目录?

git - 在远程 repo 上删除本地 Git 分支后删除它们

java - 如果我的 Web 应用程序需要 20 秒来完成请求,这是不是一个糟糕的设计?

java - IIS 在性能和可伸缩性方面与企业 Web 应用程序的 weblogic 和 websphere 相比如何?

java或c库读取svn authz文件

java - 是否有一个轻量级的 Java 代码指标分析器,我可以在 Eclipse 中使用 Maven、Jenkins/Hudson 运行?

java - 如何扩展由另一个类实例化的 java 类?

maven - 为什么没有原型(prototype) :generate with parameters work for me?

git - 编写一个 git post-receive hook 来处理特定的分支