Windows用户配置文件和Java

Windows用户配置文件和Java,java,windows,maven,environment-variables,Java,Windows,Maven,Environment Variables,我使用的是Maven,它将本地存储库存储在用户主文件夹下。 我决定将我的用户配置文件从C:\Users\Dany移动到D:\Users\Dany,以节省SSD磁盘空间。我还更改了windows注册表中的几个键。 所有工作正常,但Maven仍将工件保存到C:\Users\Dany\.m2\repository 我知道如何在settings.xml中更改本地存储库位置 但是有人能解释一下Maven的行为吗 附加说明 IntelliJ IDEA还将其数据保存到C:\Users\Dany\.Intell

我使用的是Maven,它将本地存储库存储在用户主文件夹下。
我决定将我的用户配置文件从
C:\Users\Dany
移动到
D:\Users\Dany
,以节省SSD磁盘空间。我还更改了windows注册表中的几个键。
所有工作正常,但Maven仍将工件保存到
C:\Users\Dany\.m2\repository

知道如何在
settings.xml
中更改本地存储库位置
但是有人能解释一下Maven的行为吗

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

UPD
System.getProperty(“user.home”)返回
C:\Users\Dany

UPD2
在windows Com中设置用户配置文件
,命令行显示
USERPROFILE=D:\Users\Dany

UPD3

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

将settings.xml文件放入D:\Users\Dany.m2\并将类似的内容放入settings.xml

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <localRepository>D:/WhatEverLocationYouWant</localRepository

</settings>


D:/WhatEverLocationYouWant首先,您需要更新主文件夹中settings.xml中的


接下来,您需要更新M2_REPO环境变量以指向新位置。您可能还需要为个人设置它,可以使用maven本身,也可以从Eclipse设置中设置环境变量。

我明白了。只是遇到了完全相同的问题。我找到了答案,然后我也找到了相关的。

如果两个分区上都有NTFS,您可以创建一个从D:\Users\Dany到C:\Users\Dany的符号链接。软件不会看到任何差异。

在Windows上,Java从注册表获取user.home属性: HKEY\U当前\U用户\软件\ Microsoft\Windows\CurrentVersion\Explorer\Shell文件夹\桌面 然后删除最后一个文件夹

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

这在Java8中是(将)固定的

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

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

我在本页的评论中看到了解决方案:

我一直想移动我的个人资料,Maven成了我的理由。你能从intelliJIDEA IDE中运行的程序打印System.getProperty(“user.home”)的值吗?Maven解析本地存储库位置w.r.t这个JVM环境变量。它打印“C:\Users\Dany”您的
USERPROFILE
环境变量的值是多少?谢谢,我知道如何更改settings.xml中的本地存储库位置。但为什么所有Java应用程序都指向旧位置?我的环境变量还可以。我想你不明白我的问题。defaulf Maven将其回购协议存储在Home user profile文件夹中。我改变了它,也改变了windows注册表,我的环境变量指向新的位置。但是Maven(IDEA,Eclipse)认为主文件夹位于旧位置!为什么?可能是在JDK安装期间,Java保存当前主文件夹位置,然后使用它?我不知道。Eclipse和IntelliJ都有允许您指定本地repo位置的设置。你试过设置它们吗?是的,它很有效。但当我运行
mvn compile
时,它会保存到settings.xml中配置的位置。问题在于Java如何获取用户主文件夹,而不是如何设置存储库位置。单独的链接是因为它本身毫无意义,而且目标资源也不能保证在将来处于活动状态。请尝试至少包含您链接到的信息摘要。谢谢!这正是我一直在寻找的!