2013-11-22 109 views
2

我正在用maven構建一個簡單的項目。由於傳遞依賴關係丟失,我無法構建它,即objenesis 1.0maven - 如何解決此錯誤:「XXX的POM無效」?

我調試模式運行Maven和得到這個消息:

[DEBUG] ======================================================================= 
[WARNING] The POM for org.jmock:jmock-junit4:jar:2.6.0 is invalid, transitive dependencies (if any) will not be available: 1 problem was encountered while building the effective model for org.jmock:jmock-junit4:2.6.0 
[ERROR] Invalid packaging for parent POM org.jmock:jmock-parent:2.6.0, must be "pom" but is "jar" @ org.jmock:jmock-parent:2.6.0 
... 

當我看到JMock的父母,我似乎無法找到參考既不POM或jar類型。

我該如何解決這個問題?

注意:我們使用我們公司的nexus來獲取依賴關係。


的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>Poc</groupId> 
<artifactId>Poc</artifactId> 
<version>0.0.1-SNAPSHOT</version> 

<properties> 
    <maven.compiler.source>1.6</maven.compiler.source> 
    <maven.compiler.target>1.6</maven.compiler.target> 
</properties> 

<dependencies> 
     <dependency> 
     <groupId>org.jmock</groupId> 
     <artifactId>jmock-junit4</artifactId> 
     <version>2.6.0</version> 
     </dependency> 
</dependencies> 
    </project> 

JMock的父母,2.6.0.pom

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.jmock</groupId> 
    <artifactId>jmock-parent</artifactId> 
    <version>2.6.0</version> 
    <description>POM was created by Sonatype Nexus</description> 
</project> 

回答

4

這聽起來像的依賴性沒有正確下載。我會嘗試從本地M2存儲庫中刪除org.jmock目錄,然後讓Maven嘗試新下載該jar。

編輯:當您在文本編輯器中查看M2_REPO\org\jmock\jmock-parent\2.6.0\jmock-parent-2.6.0.pom時是否具體說明了<packaging>pom</packaging>?您可能需要確保您的Nexus回購協議中的依賴關係也是正確的。我只是從Maven Central拉出了依賴關係,並沒有問題。

jmock-parent pom excerpt

編輯2:這有可能是你喜歡的Nexus會自動創建一個父POM,如果它不能從Maven的中央下載。您的Nexus安裝是否配置爲從Maven Central下載依賴項?您是否已經將您的jmock-junit4.jar手動mvn deploy:deploy-file添加到您的Nexus回購?我確信有一種方法可以強制Nexus更新該pom,或者您可以通過從maven central下載它,然後運行上面列出的mvn deploy命令來手動部署適當的父pom。

+0

我做到了,但仍然存在。 – Stephan

+0

有趣的問題...更新我的回答 – jmcmahon

+0

看看我的問題中的更新。看起來,我們的連結在下載pom文件時遇到了麻煩。 – Stephan