2011-11-22 48 views
4

已解決 P.S.因爲我沒有足夠的聲望來回答我自己的問題,所以我把解決方案放在問題中。Maven項目定義庫不起作用

我剛開始在我的android項目中使用Maven。我使用了一個名爲libgdx的遊戲引擎,它不在中央倉庫中,所以我必須自己安裝它。

檢查指令後,我使用這種方法。 https://stackoverflow.com/q/2230464/531223。 我添加下面定義的XML代碼根的pom.xml

<repositories> 
<repository> 
    <id>my-local-repo</id> 
    <url>file://${basedir}/common/repo</url> 
</repository> 
</repositories> 

並安裝我在這個問題的答案的方法成功所需的jar文件。但是,當我執行命令mvn installmvn -o install時,它仍然告訴我無法找到該jar文件。我不確定我在根pom.xml中添加的存儲庫是否正常工作。
任何人都可以告訴我我犯了什麼錯誤,以及如何檢查項目定義的存儲庫是否正常工作?謝謝。

謝謝死亡,我想通了,這是我的愚蠢的錯。

在我的項目中,我有3個模塊。常見的android和桌面。我使用common/repo目錄作爲我的存儲庫。這就是爲什麼我開始使用Maven。我做了一切都是正確的,除了兩個錯誤。

1.將根目錄pom.xml中的存儲庫代碼放在android dir中的pom.xml中。我只是認爲它會起作用,但事實並非如此。

2.如果我把代碼放在正確的目錄中,我應該修改url,baseir會改變。

這節課我花了3小時〜

+0

安裝JAR文件到本地回購後,你檢查它是否真的出現在回購? – melihcelik

+0

謝謝,我只是想通了。 –

回答

1
  1. 運行mvn幫助:有效-POM

  2. 查找到<repositories>部分,找​​到你的my-local-repo,並期待其真正路徑(不包括文件://前綴)

  3. 運行此命令(從您發現自己的鏈接) mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file -Dfile=/path/to/your.jar -DgroupId=yourGroup -DartifactId=yourArtifactId -Dversion=1.0 -Dpackaging=jar -DlocalRepositoryPath=the_path_you_looked_up_excluding_file://

  4. 如果(3)產生錯誤他們張貼在這裏,如果不是 - 確保文件夾the_path_you_looked_up_excluding_file://包含子文件夾結構grp/yourArtifactId/1.0/your.jar在那裏畢竟,你的項目必須能夠找到

  5. 這一定義

    <dependency> 
        <groupId>grp</groupId> 
        <artifactId>yourArtifactId</artifactId> 
        <version>1.0</version> 
    </dependency> 
    
+0

謝謝你的回答! –

10

我同意Oleg的答案,但如果他的所有步驟後,問題仍然存在,檢查喲依賴你的全局settings.xml文件中可能使用了標籤。

鏡像設置始終指向相同的倉庫並忽略您可能在項目中定義的任何項目。

例如你的朋友。XML已經

<repositories> 
    <repository> 
     <id>project.local</id> 
     <name>project</name> 
     <url>file://${project.basedir}/repo</url> 
    </repository> 
</repositories> 

確保您<USER_HOME>\.m2\settings.xml忽略它

<mirrors> 
    <mirror> 
     <id>central</id> 
     <name>Central</name> 
     <url>http://my.nexus.ip/nexus/content/repositories/central/</url> 
     <mirrorOf>!project.local,*</mirrorOf> 
    </mirror> 
</mirrors> 
+0

幫助:-) –

+0

我需要排除我試圖從鏡像中使用的本地存儲庫 - 您可以通過將「!your-repo-id」添加到捕獲所有mirrorOf中來執行此操作。換句話說,!your-repo-id,* cwash

+0

這是我的問題的唯一有效解決方案。 –