2011-06-21 167 views
18

當我打開一個POM文件並點擊底部的「Dependency Hierarchy」選項卡時,它給我提供了錯誤「Project read error」。它可以與同一工作區中的其他項目協同工作,而不是與其他項目一起工作。有任何想法嗎?在Eclipse中打開Maven POM文件依賴關係層次結構時出錯 - 「Project read error」

enter image description here

編輯

在迴應@ Yhn的答案。

  1. 按預期從命令行工作中在Eclipse之外運行編譯和包階段。它編譯應用程序並構建最終的WAR文件。
  2. Eclipse確實指向Maven settings.xml文件的默認位置,所以它應該知道在其中定義的自定義存儲庫(我的公司有它自己的Maven存儲庫)。
  3. 我可以從Eclipse打開和編輯POM文件,因此它必須具有對文件的讀/寫權限。
  4. 該項目未在Eclipse中配置爲Maven項目,所以我無法從Eclipse運行包階段(我只能從命令行運行它)。

我不知道是否有什麼關係的事實,我遇到了麻煩建設與Maven 3的項目,因爲顯然有些的傳遞依賴的配置Maven的1,這Maven 3 does not support(這是我的理論,無論如何,基於一些錯誤消息)。我可以與Maven 2生成項目,但我仍然得到消息,如下列:

Downloading: http://dist.codehaus.org/mule/dependencies/maven2/org/codehaus/xfie/bcprov-jdk14/133/bcprov-jdk14-133.pom 
[INFO] Unable to find resource 'org.codehaus.xfire:bcprov-jdk14:pom:133' in repsitory mule (http://dist.codehaus.org/mule/dependencies/maven2) 

它必須能夠但是找到這些相關性,因爲它下載JAR文件就好了,可以構建應用程序。似乎問題在於依賴關係沒有與它們關聯的POM文件,這也許是爲什麼它們不能與Maven 3一起使用。這也可能是我無法查看Eclipse中的依賴關係層次結構的原因。

EDIT 2

我進入 「配置>轉換爲Maven項目」 轉換的項目Maven項目。當我打開POM文件,我看到的錯誤:

ArtifactDescriptorException: Failed to read artifact descriptor for woodstox:wst (Click for 140 more)

(woodstox:WST是該項目的另一個傳遞依賴)。 「標記」視圖中出現一個錯誤,表明我的項目中每個依賴項和傳遞依賴項都存在。但是,我可以通過執行「Run As> Maven構建」來成功構建項目。 (編輯:這可能是因爲這個項目沒有Java源代碼,但是依賴關係的JAR正確地出現在最終的WAR中。)依賴層次依然給出了同樣的錯誤 - 「項目讀取錯誤」。

關於「無法找到資源」消息 - 但這隻適用於少數傳遞依賴項。該項目有更多的傳遞依賴項,但這些消息不會顯示給他們。看起來好像是,因爲依賴關係沒有POM文件,所以Maven在每次構建項目時都會嘗試搜索它們。這是正常的沒有POMs?

我該如何去得到一個回購管理器?這是否必須安裝在公司的Maven存儲庫中,或者可以將它安裝在您自己的工作站上?

+0

如果我記得正確;當這種事情發生時,eclipse有一個maven控制檯顯示錯誤。你能否檢查一下這個控制檯是否顯示了任何有助於識別這個原因的東西? – Yhn

+0

該項目是否可以通過控制檯正確編譯打包等? – khmarbaise

+0

@YY你知道我怎麼打開那個控制檯嗎? – Michael

回答

8

我有一些非Maven的罐子,我需要包括在我的Maven項目中的問題。我把瓶子在我的本地庫使用此命令行家:

mvn install:install-file -Dfile=/test/gov.nist.xccdf-1.2.jar -DgroupId=gov.nist -DartifactId=xccdf -Dpackaging=jar -Dversion=1.2 

然後,我稱他們爲我的pom.xml依賴關係:

<dependency> 
     <groupId>gov.nist</groupId> 
     <artifactId>xccdf</artifactId> 
     <version>1.2</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 

這一段時間工作得很好,但我必須在eclipse中升級了一些東西,我開始得到你描述的錯誤。

解決方法是把它們從本地存儲庫,並重新安裝文件要求的Maven生成一個POM你:

mvn -DgeneratePom=true install:install-file -Dfile=/test/gov.nist.xccdf-1.2.jar -DgroupId=gov.nist -DartifactId=xccdf -Dpackaging=jar -Dversion=1.2 

該命令將導致要生成一個POM放置jar的相同目錄(位於本地回購站內)。

在eclipse maven支持的最新版本中,maven構建仍然使用maven 2完成(如果右鍵單擊您的pom.xml,請選擇以mvn包爲例運行)。依賴分析現在用一個嵌入式maven 3插件完成,它不喜歡沒有pom.xml的依賴項。

+0

謝謝格倫,那工作。 – Michael

+1

你有一個提示,我可以找出哪個依賴導致這個問題? –

2

鑑於通過註釋的信息:

MVN編譯通過控制檯/ MVN包的工作(我假定Eclipse之外)。基於此,POM文件應該是正確的,並且可以解決依賴關係。

但是;這可能是日食的設置不正確。例如,如果eclipse有一些自己的maven屬性(而不是默認的〜/ .m2/settings.xml文件);我可以想象它會無法解決在maven本身使用的settings.xml中配置的依賴關係。這個設置應該在Eclipse Preferences @ Maven> User Settings中。

還要確保Eclipse能夠真正讀取文件(未鎖定,正確的權限等)。

這似乎是正確的;你可以嘗試從Eclipse中運行mvn目標嗎?您可以通過右鍵單擊該項目並選擇run as > maven package來完成此操作。這樣它應該運行與eclipse使用的相同設置的maven,並且可能會在其配置中顯示任何其他錯誤。

- 針對其他信息:

基本上,它會告訴你 - 使用Maven 2時 - 在給定存儲庫,它無法找到一個依賴資源(在這種情況下bcprov-JDK14)(Codehaus的/騾)。當我搜索該maven模塊(bcprov-jdk14)時,我在Maven中央庫(通過我們的本地連接點)找到它@repo1.maven.org/maven2。也許這會導致你用Maven2得到的錯誤?

正如Maven 3 doc所說;爲Maven 1.x回購;你應該通過一個repo管理器來代理它們,它可以作爲maven 2 repository來存儲它(我相信我們也是通過Sonatype Nexus OSS來做一些repo)

ps .:在eclipse中啓用Maven依賴管理應該是足以能夠使用Maven運行目標;如果你想測試它。

-

聽起來像它可以是多種問題...考慮到正常的Maven構建工作正常,人們會認爲Maven可以至少得到它取決於工件及其依賴關係......然而, ,日食似乎沒有能力。

仔細檢查您的Eclipse互聯網連接設置是否正確?既然你在談論一個公司回購協議,我猜想有可能也是一個代理(我必須設置我的Eclipse中使用一個過;儘管對於插件(見下點))。

另一種可能性,從經驗來說,可以是* .pom url請求上的基於規則的代理塊(我們的代理在這裏阻止強制使用本地回購管理器,這是多麼邪惡和令人討厭的是:()。可能想嘗試打開它嘗試手動下載.pom文件瀏覽器中看到,如果是這樣的話(我不能,例如...)。

,以獲得回購成立,你可能不得不要求負責存儲庫的人將其添加爲maven2代理

至少,Eclipse似乎有問題從獲取依賴關係樹(它是構建依賴關係樹所需的)互聯網。你總是可以嘗試問一些ICT船員(如果他們有足夠的能力...),它在你的公司,也許他們有一些有用的提示。

+0

@Yhn感謝您的幫助。請參閱我的問題的編輯。 – Michael

+0

@邁克爾:在我的回答中看到編輯內容,希望他們能幫助你更多。 – Yhn

+0

@Yhn謝謝,再次看到我編輯的問題。 – Michael

5

我有同樣的問題。如果您將項目作爲maven項目,您應該運行:

  • 鼠標右鍵單擊項目| Maven |更新依賴項或
  • 右鍵單擊項目| Maven |更新項目配置

這對我有效。

1

當我在沒有網絡連接的情況下向pom.xml添加新的依賴關係時,我遇到了同樣的問題。在此之後,我遇到了很多問題,例如「缺失文物」,「缺少描述符」或「項目讀取錯誤」。我解決了這個問題

  1. 刪除剛剛從本地存儲庫添加的壞依賴項。
  2. 重建本地索引。
  3. 重新添加依賴
+0

1.和maven之後 - '更新工程'一切正常 – user2657714

1
<properties> 
    <!-- ********************** --> 

    <!-- Plugin's properties --> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.7</java.version> 
</properties> 

這個POM設置爲我工作

0

通常出現這種情況,如果存在這樣的Maven無法理解的POM一個錯字,然後將其拋出Project read error。就像我的情況一樣,我複製了一個maven依賴片段,然後通過了這個版本。而不是輸入實際版本#它是動態獲取它${asciidoctorj.version},我的pom在屬性部分沒有這個。所以我得到了這個錯誤。一旦我刪除它,並把它的版本號開始工作。

0

我從另一臺機器上覆制了一個本地資源庫文件夾後有這個。修復是進入我複製的存儲庫文件夾中,刪除 _remote.repositories以及'LastUpdated'文件,然後刷新Eclipse中的Maven依賴關係(Alt + F5)

相關問題