为什么maven安装到错误的地方?

Cug*_*uga 3 java maven-2

我尝试运行mvn安装,它编译得很好,但由于某些原因,maven正试图安装到这个位置:

[INFO] Installing /home/username/workspace/projectname/pom.xml to 
/home/username/workspace/projectname/?/.m2/repository/artifactname/artifact.pom
Run Code Online (Sandbox Code Playgroud)

注意,位置有一个?在里面.这个位置确实需要是主目录/ .m2.知道是什么导致它安装到错误的位置?

编辑:执行mvn --help:effective-settings给出:

  <localRepository xmlns="http://maven.apache.org/SETTINGS/1.0.0">
      /home/username/workspace/projectname/?/.m2/repository
  </localRepository>
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我从不同的目录运行mvn --help:effective-settings,比如:/ tmp,它会给出:

  <localRepository xmlns="http://maven.apache.org/SETTINGS/1.0.0">
      /tmp/?/.m2/repository
  </localRepository>
Run Code Online (Sandbox Code Playgroud)

Pas*_*ent 9

请在您的项目上运行以下目标:

mvn help:effective-settings
Run Code Online (Sandbox Code Playgroud)

并检查localRepository(并使用值更新问题)的值.

后续行动:好的,到目前为止,事情是连贯的.下一个...

localRepository应该是默认值${user.home}/.m2/repository.仔细检查您是否未将其覆盖:

  • settings.xml从Maven的安装:$M2_HOME/conf/settings.xml
  • settings.xml从用户的安装:${user.home}/.m2/settings.xml

如果不是,请检查${user.home}(在项目上运行以下命令)的实际值:

mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=user.home
Run Code Online (Sandbox Code Playgroud)

如果未获得预期值,请检查%USERPROFILE%您是否在Windows上的实际值.

后续2:我不确定如何${user.home}在Linux下正确得到重视但是前一个问题Java:System.getProperty("user.home")返回"?"描述了同样奇怪的行为 - 并且解决方法:使用 64-在64位系统上运行JDK.

你正在使用什么JDK?在什么平台上?你可能处于相同的情况(在这种情况下,我真的认为这是一个JDK错误,32位JDK也应该在64位系统上返回正确的值).

后续3:这实际上是错误ID:6972329(未确认为JDK错误,可能是系统错误).