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

时间:2010-08-27 17:20:36

标签: java maven-2

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

[INFO] Installing /home/username/workspace/projectname/pom.xml to 
/home/username/workspace/projectname/?/.m2/repository/artifactname/artifact.pom
注意,位置有一个?在里面。这个位置确实需要是主目录/ .m2。知道是什么导致它安装到错误的位置?

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

  <localRepository xmlns="http://maven.apache.org/SETTINGS/1.0.0">
      /home/username/workspace/projectname/?/.m2/repository
  </localRepository>

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

  <localRepository xmlns="http://maven.apache.org/SETTINGS/1.0.0">
      /tmp/?/.m2/repository
  </localRepository>

3 个答案:

答案 0 :(得分:9)

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

mvn help:effective-settings

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

跟进:好的,到目前为止,事情是连贯的。下一步...

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

  • Maven安装中的settings.xml$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

如果您没有获得预期值,请检查%USERPROFILE%的实际值(如果您使用的是Windows。)

后续行动2:我不确定${user.home}在Linux下的价值是如何得到的,但前一个问题Java: System.getProperty(“user.home”) returns “?”描述了同样奇怪的行为 - 以及解决方法: 使用64-bit JDK on a 64-bit system

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

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

答案 1 :(得分:0)

settings.xml中查看localRepository的值。

答案 2 :(得分:0)

查看您的环境变量! 检查您是否未设置“ MAVEN_OPTS”变量,因为该变量将覆盖所有其他设置。

我从另一台机器上剪切并粘贴了该文件,但没有注意到它里面有“ -Dmaven.repo.local = XXXX”。 (脸红)