2012-04-17 164 views
3

我在STS(v1.0.200.20111228-1245)捆綁的m2e插件上使用了STS 2.9.1(構建於Eclipse 3.7.2上)。
我有一個關於在包含幾個模塊的Eclipse項目中缺失依賴關係的問題,或者我可能沒有完全理解它應該如何工作。在Eclipse多模塊項目中缺少Maven依賴關係

這是一個maven項目。
在我的項目>屬性> Java構建路徑>庫我有「Maven Dependencies」庫,但它是空的(這就是問題所在)。
主POM沒有任何依賴關係,但它有幾個聲明的模塊。 向模塊的POM添加依賴不會將它添加到「Maven Dependencies」庫(我的期望是什麼),並導致Eclipse在源文件中顯示錯誤。
向主POM添加一個依賴關係將它添加到「MD」庫中,但是當然我不想將所有模塊的依賴關係添加到主POM中,只需將它放入「MD」庫並添加每個對構建路徑的單一依賴似乎並不正確也不實際。

我已經試過:

  • 項目>清潔,
  • 的Maven>更新的依賴,
  • 的Maven>更新項目配置,
  • 取消選中該複選框:項目>屬性>的Maven>解析Workspace項目的依賴關係。

以上都不是好伎倆。

實施例:
簡化項目結構:

  • simple.project
    • ...
    • 採樣模塊
      • ...
      • 的pom.xml
    • 的pom.xml

simple.project/pom.xml中:

<project ...> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>test</groupId> 
    <artifactId>simple.project</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>pom</packaging> 
    <modules> 
     <module>sample-module</module> 
    </modules> 
    <dependencies> 
     <dependency><!-- This dependency is present in "MD" lib. --> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 
</project> 

simple.project /採樣模塊/ POM .xml:

<project ...> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <artifactId>simple.project</artifactId> 
     <groupId>test</groupId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <groupId>test</groupId> 
    <artifactId>sample-module</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <dependencies> 
     <dependency><!-- I've expected this dependency also to appear in "MD" lib. --> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
</project> 
+0

沒有你的POM我幫不了你。請粘貼相關部分。粘貼也是Eclipse顯示你的錯誤。 (我假設你正在使用m2e 1.0或更高版本。) – 2012-04-17 13:14:16

+0

我編輯了我的原始文章,以更好地描述我的問題。 – efesjan 2012-04-17 13:40:43

+0

Eclipse中顯示的錯誤是無關緊要的。他們是基本錯誤,說我的代碼中引用的某些類從類路徑中丟失(因爲它們沒有添加到「MD」庫,因爲我已經預料到它們是)。 – efesjan 2012-04-17 13:46:55

回答

1

它不應該工作。如果項目依賴於該項目(使用dependency)或者它從中繼承(使用parent),則項目只會從另一個項目導入依賴項。 module元素僅表示aggregation

0

我看到的第一件事就是你正在定義一個pom父項的依賴關係。在那裏,我期望看到一個<dependencyManagement>see here the doc)結構。通過這種方式,子模塊將正確地繼承這些常見的依賴關係。

除此之外,讓我們開始進行最簡單的測試。嘗試從命令行中的maven實用程序編譯您的項目。如果它有效,那麼你的Eclipse配置有問題,否則問題就在於你定義了你的項目。

如果您的項目從命令行正確編譯,讓我們看看還有什麼可以發生。

Maven Dependencies Library爲空意味着Eclipse Maven插件無法正確解析您的poms。我對嵌入式STS maven插件有很不好的經驗。嘗試將其降級到m2e 0.10版本。您只需要打開STS DashBoard /查找更新/安裝m2e 0.10

我希望這些提示中的一些可以幫助您。

+0

當然你對「」的用法是正確的,但在這種情況下這不是問題。項目可以從STS和命令行正確構建。我也會嘗試降級m2e版本,但是您不認爲Fabricio可能是正確的,我遇到的問題實際上是IDE/m2e的正確行爲? – efesjan 2012-04-18 07:25:25

1

問題是從不久前,但我解決了這個創建一個Maven項目並添加Maven模塊:右鍵單擊項目和「新建>項目...」> Maven> Maven模塊。之後,代碼中不再顯示任何錯誤。