2012-05-03 79 views
0

我有一個簡單的maven插件,而這又取決於父pom文件。父pom文件有10個(第10個)第三方jar依賴項,這些依賴項已使用以下命令安裝在本地repo中。如何使用maven uber pom與依賴關係?

mvn install:install-file -Dfile=foo.jar -DgroupId=com.foo.bar -DartifactId=foo1.jar -Dversion=1.1.0.0 -Dpackaging=jar 

同樣,我已經安裝了所有其他9罐到我當地的回購。這是uber pom.xml文件。

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.foo.bar</groupId> 
    <artifactId>maven-uber-pom</artifactId> 
    <packaging>pom</packaging> 
    <version>1.1.0.0</version> 
    <name>maven-uber-pom</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>com.foo.bar</groupId> 
     <artifactId>foo1.jar</artifactId> 
     <version>1.0.0.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.foo.bar</groupId> 
     <artifactId>foo2.jar</artifactId> 
     <version>1.0.0.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.foo.bar</groupId> 
     <artifactId>foo3.jar</artifactId> 
     <version>1.0.0.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.foo.bar</groupId> 
     <artifactId>foo4.jar</artifactId> 
     <version>1.0.0.0</version> 
    </dependency> 
    : 
    : 
    </dependencies> 

我試圖通過引用在我的插件的pom.xml文件,這個超級POM如下:

<project> 
    <parent> 
    <groupId>com.foo.bar</groupId> 
    <artifactId>maven-uber-pom</artifactId> 
    <version>1.1.0.0</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.foo.bar</groupId> 
    <artifactId>foo-maven-plugin</artifactId> 
    <packaging>maven-plugin</packaging> 
    <version>1.1.0.0</version> 
    <name>foo bar plugin</name> 
    <url>http://maven.apache.org</url> 
</project> 

這之後我嘗試

安裝使用pom.xml文件我的插件
mvn install     <command> 

Maven嘗試從中央倉庫http://repo1.maven.org/maven2下載第三方工件依賴關係,隨後失敗。因爲在中央回購中沒有可以找到這種協調的人爲因素。

我也曾嘗試使用超級pom作爲插件依賴項,因爲我很絕望。有任何想法嗎?

+0

如果我看上去正確,你已經安裝了foo.jar,但是不要在你的父pom中引用這個工件,只有foo1.jar,foo2.jar等等。此外,你已經安裝了mavenn-uber-pom,通過mvn安裝在你的本地儲存庫?如果你有第三方的jar文件,那麼我建議你特別使用版本庫管理器,這可能在maven central中不可用。 – khmarbaise

+0

謝謝你指出我。這是一個錯字,編輯了這個。實際上我已經安裝了maven install的所有jar:install-file到我的本地倉庫。 – JourneyMan

+0

'mvn install'是否在父POM項目上運行?如果沒有,那麼它不會被發現。 –

回答

0

默認情況下,Maven會先搜索本地存儲庫中的依賴項。如果找不到,它會搜索您的全局/自定義存儲庫(默認情況下僅設置中央存儲庫)。你是否在uberpom上運行mvn install?如果是這樣,請檢查您的本地倉庫中的路徑是否正確。

我不確定您是否忘記將其適用於您的示例,但「uberpom」定義爲com.foo.bar作爲groupId且插件上的用法爲com.oracle.weblogic.test。這可能是一個錯字。我也假設你所有的第三方依賴都被正確安裝(檢查他們的pom)。

只是爲了它,請檢查您的settings.xml中是否設置了<localRepository>。通常情況下,你不必設置它,但可以嘗試一下。

我不是專家,但我希望它有幫助!

+0

我有我的localrepository設置爲自定義位置。我編輯了groupIds以匹配。這是一個錯字:-(我的壞 – JourneyMan

0

父POM中的groupId和父POM的引用中的groupId不匹配。 groupId,artifactId和version必須完全匹配,以便Maven找到父級。

+0

謝謝你指出這一點。我已經匹配他們,仍然發現在中央存儲庫搜索罐。 – JourneyMan

0

嘗試「mvn install -o」強制脫機模式。可能會指出問題所在。

當您運行install-file命令時,您是否指定了生成pom並生成校驗和?

手動檢查您的Maven回購罐的罐子,看他們是否正確安裝。