我尝试运行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>
答案 0 :(得分:9)
请在您的项目上运行以下目标:
mvn help:effective-settings
并检查localRepository
的值(并使用值更新问题)。
跟进:好的,到目前为止,事情是连贯的。下一步...
localRepository
的默认值应为${user.home}/.m2/repository
。仔细检查您是否未将其覆盖:
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”。 (脸红)