我正在使用Maven,它将本地存储库存储在用户主文件夹下。
我决定将用户个人资料从C:\Users\Dany移到D:\Users\Dany,以节省我的SSD磁盘空间。我也改变了Windows注册表中的几个键。
一切正常,但Maven仍将 Artifact 保存到C:\Users\Dany\.m2\repository

知道如何更改settings.xml中的本地存储库位置。
但是有人可以解释Maven的行为吗?

附言
IntelliJ IDEA还将其数据保存到C:\Users\Dany\.IntelliJIdea11

UPD System.getProperty("user.home");返回C:\Users\Dany

UPD2
Windows comand行中的set USERPROFILE表示USERPROFILE=D:\Users\Dany

UPD3
问题是有关Java如何获取用户主文件夹位置的问题,而不是有关如何设置Maven存储库位置的问题

最佳答案

在Windows上,Java从注册表获取user.home属性:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell文件夹\桌面
然后它将删除最后一个文件夹。

例如:%userprofile%\Desktop =>%userprofile%

这将在Java 8中修复。

在此之前,解决方案是将其添加到环境变量中:
_JAVA_OPTIONS:-Duser.home =%HOMEDRIVE %% HOMEPATH%

或在命令行中:set _JAVA_OPTIONS = -Duser.home =%HOMEDRIVE %% HOMEPATH%

我在此页面的评论中看到了解决方案:
http://www.timehat.com/javas-user-home-is-wrong-on-windows/

10-04 12:33