2010-08-27 71 views
3

我嘗試運行MVN安裝,它編譯罰款,但由於某種原因Maven是要安裝到以下位置:爲什麼maven安裝到錯誤的地方?

[INFO] Installing /home/username/workspace/projectname/pom.xml to 
/home/username/workspace/projectname/?/.m2/repository/artifactname/artifact.pom 

注意,該位置有一個?在裏面。這個位置確實需要是主目錄/ .m2。任何想法是什麼導致它安裝到錯誤的位置?

編輯: 運行mvn --help:有效的設置提供了:

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

有趣的是,如果我運行mvn --help:從不同的目錄中有效的設置,比如:/ tmp目錄,它給出:

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

Maven對事物屬於哪裏有自己的想法。這可能是它告訴你從一開始就習慣它的方式。 – erickson 2010-08-27 17:28:13

+0

爲什麼它安裝在workspace/projectname中?通常它的$ HOME/.m2 – extraneon 2010-08-27 17:28:55

+0

@extraneon是的,那就是我希望它去的地方 - $ HOME/.m2。我不知道爲什麼它被安裝到錯誤的位置。 – Cuga 2010-08-27 17:32:10

回答

8

請對項目運行的以下目標:

mvn help:effective-settings 

,並檢查localRepository值(和更新與價值的問題)。

後續行動:好的,到目前爲止,事情是連貫的。 Next ...

默認值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 

如果你這樣做沒有得到預期值,請檢查實際值%USERPROFILE%,如果您在Windows上。

後續2:我不知道如何${user.home}恰好獲得Linux下的價值,但這個前面的問題Java: System.getProperty(「user.home」) returns 「?」描述相同怪異的行爲 - 和解決方法:使用64-bit JDK on a 64-bit system

您正在使用哪個JDK?在什麼平臺上?你可能會遇到同樣的情況(在這種情況下,我真的認爲這是一個JDK bug,32位JDK應該在64位系統上返回正確的值)。

後續3:這實際上是Bug ID: 6972329(它沒有被確認爲JDK錯誤,它可能是一個系統錯誤)。

+0

謝謝,我編輯的問題有輸出。並嘗試從不同的位置和價值的變化。 – Cuga 2010-08-27 17:58:10

+0

運行該命令(以-Dexpression = user.home結尾)返回?作爲輸出。在linux上執行'echo〜'和'echo $ HOME'都會轉到用戶正確的home:/ home/username。這真的讓我感到煩惱 – Cuga 2010-08-27 18:44:33

+0

由於它在更改目錄時發生變化,我懷疑影響user.home的一個環境變量被設置爲當前目錄「。」。 – 2010-08-27 18:59:45

0

查看settings.xml中localRepository的值。

+0

我檢查了 - 沒有設置值,它應該是默認值。實際上,我確定它甚至沒有在〜.m2中看到settings.xml,因爲它不知道在那裏安裝東西。 – Cuga 2010-08-27 17:34:12

+0

@Cuga在這一點上,我會試圖在整個/ home/username上做一個'grep -r -H「workspace/projectname」',看看這裏提到的是什麼。雖然帕斯卡的答案肯定更好。 – extraneon 2010-08-27 17:47:13