簡體   English   中英

缺少Eclipse多模塊項目中的Maven依賴項

[英]Missing Maven dependencies in Eclipse multi-module project

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

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

我試過了:

  • 項目>清潔,
  • Maven>更新依賴項,
  • Maven>更新項目配置,
  • 取消選中該復選框:Project> Properties> 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>

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

問題是從不久前開始,但我解決了這個問題,創建了一個Maven項目並添加了Maven模塊:右鍵單擊項目和“New> Project ...> Maven> Maven Module”。 之后,代碼中不再顯示錯誤。

我看到的第一件事是你在pom父級中定義依賴項。 在那里我期望看到<dependencyManagement>參見此處的doc )結構。 通過這種方式,子模塊將正確地繼承那些公共依賴項。

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

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

Maven Dependencies Library為空的事實意味着Eclipse Maven插件無法正確解析您的poms。 我對嵌入式STS maven插件的體驗非常糟糕。 嘗試將其降級到m2e 0.10版本。 您只需要打開STS DashBoard / Find Updates / Install m2e 0.10

我希望其中一些技巧可以幫到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM