【问题标题】:Windows User Profile and JavaWindows 用户配置文件和 Java
【发布时间】:2012-11-18 16:14:54
【问题描述】:

我正在使用 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
set USERPROFILE 在 Windows 命令行中显示为 USERPROFILE=D:\Users\Dany

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

【问题讨论】:

  • 我一直想移动我的个人资料,而 Maven 成为了一个原因
  • 您能否从您的 intelliJIDEA IDE 中运行的程序打印 System.getProperty("user.home") 的值? Maven 通过这个 JVM 环境变量解析本地存储库位置。
  • 当然。它打印“C:\Users\Dany”
  • USERPROFILE 环境变量的值是多少?

标签: java windows maven environment-variables


【解决方案1】:

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

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

这是(将)在 Java 8 中修复。

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

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

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

【讨论】:

    【解决方案2】:

    我得到了这个问题。只是遇到完全相同的问题。我找到了答案here,然后我也找到了相关的bug entry

    【讨论】:

    • 孤立链接是considered a poor answer,因为它本身没有意义,并且不能保证目标资源在未来仍然存在。请尝试至少包含您链接到的信息摘要。
    • 谢谢!这正是我一直在寻找的!
    【解决方案3】:

    将 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>
    

    【讨论】:

    • 谢谢,我知道如何在 settings.xml 中更改本地存储库位置。但是为什么所有 Java 应用程序都指向旧位置?我的环境变量没问题。
    【解决方案4】:

    首先,您需要更新主文件夹中 settings.xml 中的<localRepository> setting

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

    【讨论】:

    • 我想你不明白我的问题。默认情况下,Maven 将其 repo 存储在 Home 用户配置文件文件夹中。我已经更改了它,也更改了 Windows 注册表,我的环境变量指向新位置。但是Maven(IDEA,Eclipse)认为主文件夹位于旧位置!为什么?可能是在 JDK 安装期间 Java 保存当前主文件夹位置然后使用它?我不知道。
    • Eclipse 和 IntelliJ 都有允许您指定本地 repo 位置的设置。你试过设置它们吗?
    • 是的,它有效。但是,例如,当我运行mvn compile 时,它会保存到settings.xml 中配置的位置。问题是关于 Java 如何获取用户主文件夹,而不是关于如何设置存储库位置。
    【解决方案5】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-17
      • 2013-05-14
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      相关资源
      最近更新 更多