Maven 从错误的地方读取 settings.xml

Maven reading settings.xml from wrong place

我是 Maven 的新手并且 Ubuntu。我在构建 Maven 项目时遇到问题。当我 运行 mvn clean -X 命令时,我可以看到下面的 DEBUG 日志。

[DEBUG] Reading global settings from /space/user/programs/apache-maven-3.5.3/conf/settings.xml
[DEBUG] Reading user settings from ?/.m2/settings.xml
[DEBUG] Reading global toolchains from /space/user/programs/apache-maven-3.5.3/conf/toolchains.xml
[DEBUG] Reading user toolchains from ?/.m2/toolchains.xml
[DEBUG] Using local repository at /space/user/git/receiver/?/.m2/repository

我在 .bashrc 文件中有以下设置

export JAVA_HOME=/space/user/programs/jdk1.8.0_162
export M2_HOME=/space/user/programs/apache-maven-3.5.3
export MAVEN_HOME=/space/user/programs/apache-maven-3.5.3

我在 /home/user/.m2 文件夹中有 settings.xml 个文件

为什么 maven 不采摘 /home/user/.m2/settings.xml?请问我在这里缺少什么?如果您需要任何进一步的信息,请告诉我,我会更新问题。

我正在使用 Ubuntu 16.04.

更新: mvn --version 命令的输出

Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-24T19:49:05Z)
Maven home: /space/user/programs/apache-maven-3.5.3
Java version: 1.8.0_162, vendor: Oracle Corporation
Java home: /space/user/programs/jdk1.8.0_162/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "4.13.0-37-generic", arch: "i386", family: "unix"

更新: 像这样 mvn --settings /home/user/.m2/settings.xml clean -X 覆盖命令行上的设置工作正常。但这不是我想要的解决方案。

解决方案是在 64 位系统上使用 64 位 JDK。我以某种方式复制了 32 位 JDK,这就是问题所在。它在 64 位运行时上按预期工作。

这个问题帮我解决了问题 - Java: System.getProperty("user.home") returns "?"

注意:您的 linux 机器可能同时安装了 32 位和 64 位版本的 JVM。甚至 Java 11。@Newbee 是正确的,这会导致他们描述的奇怪的 maven 行为。检查您的备选方案以查看指向哪个(对于 CentOS / RHEL 机器):

 ls -l /etc/alternatives/java_sdk_11
 sudo alternatives --display java_sdk_11
 sudo alternatives --config java_sdk_11