2010-07-13 56 views
1

我以前曾經將3模塊項目作爲3個獨立的Maven項目進行管理。隨着這個項目的不斷推進,我決定我應該利用maven2的依賴管理來簡化這三個不斷髮展的模塊之間的集成。Maven Multi模塊項目打破編譯時類的解析

我定義了一個部署爲POM的超級項目。這裏定義了一些共享依賴關係,並且在POM中按照依賴性順序從最小依賴模塊到最依賴模塊定義模塊。每個模塊都有一個POM定義返回給父代,並且它適用的位置存在從一個模塊到另一個模塊的已部署工件的依賴關係。我會在最後包含可能值得的pom.xml行。

關於這個問題,我昨天設置了這個項目,並且能夠獲得每個模塊的構建和工作。然後,我今天回到現在工作的其中一個模塊,現在已經有一些新的要求出現了,突然之間所有的事情都破滅了。我正在編輯Eclipse中的項目,並且每次修改文件時,它都不能解析同一項目中定義的任何類。也就是說,如果我有一個類foo.bar.class1並且它有一個foo.bar.class2對象,那麼Eclipse(以及編譯器)會抱怨它無法解析類foo.bar.class2 ...現在,因爲這個其他班級在同一個項目和包裝中,我正在吹拂我的思想。類別問題也存在於不在同一個包中的類。

有沒有什麼東西在我的maven安裝程序中被破解,或者沒有人知道爲什麼這些項目甚至無法解析同一個包中的類?

- ::多金屬氧酸鹽:: -

父 - > /路徑/到/項目/ mainApp

<modelVersion>4.0.0</modelVersion> 
<groupId>com.moremagic</groupId> 
<artifactId>mainApp</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>pom</packaging> 
<name>Main App</name> 

<modules> 
    <module>Broker</module> 
    <module>Soap</module> 
    <module>UI</module> 
</modules> 

經紀商 - > /路徑/到/項目/ mainApp /經紀人

<parent> 
    <artifactId>mainApp</artifactId> 
    <groupId>com.moremagic</groupId> 
    <version>0.0.1-SNAPSHOT</version> 
    <relativePath>../</relativePath> 
</parent> 

<modelVersion>4.0.0</modelVersion> 

<groupId>com.moremagic</groupId> 
<artifactId>Broker</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>jar</packaging> 

香皂 - > /路徑/到/項目/ mainApp /肥皂

<parent> 
    <artifactId>mainApp</artifactId> 
    <groupId>com.moremagic</groupId> 
    <version>0.0.1-SNAPSHOT</version> 
    <relativePath>../</relativePath> 
</parent> 

<modelVersion>4.0.0</modelVersion> 

<groupId>com.moremagic</groupId> 
<artifactId>SOAP</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>jar</packaging> 

... 

<dependency> 
    <groupId>com.moremagic</groupId> 
    <artifactId>Broker</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <type>jar</type> 
    <scope>compile</scope> 
</dependency> 

... 

UI - >/path/to/project/mainApp/UI

<parent> 
    <artifactId>mainApp</artifactId> 
    <groupId>com.moremagic</groupId> 
    <version>0.0.1-SNAPSHOT</version> 
    <relativePath>../</relativePath> 
</parent> 

<modelVersion>4.0.0</modelVersion> 
<groupId>com.moremagic</groupId> 
<artifactId>UI</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>war</packaging> 

... 


<dependency> 
    <groupId>com.moremagic</groupId> 
    <artifactId>SOAP</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <scope>compile</scope> 
</dependency> 
<dependency> 
    <groupId>com.moremagic</groupId> 
    <artifactId>Broker</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <type>jar</type> 
    <scope>compile</scope> 
</dependency> 

... 

回答

2

聽起來問題在於您的Eclipse設置而不是Maven。

mvn compile是否從您的項目中的命令行工作?從父項目和每個單獨模塊(在爲依賴關係做mvn install之後)?

您是否在使用Eclipse的Maven插件,例如m2eclipse?檢查它是否配置爲從Eclipse內部加載依賴項目,而不是查看存儲庫(「啓用工作空間分辨率」)。如果您執行Project>Clean以清除所有項目,會發生什麼情況?

+0

這似乎是它。奇怪,但感謝提示(特別是Eclipse中的項目>清理)。 – Rich 2010-07-13 18:31:17

+0

m2eclipse可以很好,但有時它確實會加重 - 我經常需要執行Project> Clean才能讓Eclipse查看類路徑中的資源等。 – 2010-07-13 18:46:28

+0

該死的,就是這樣。我還操縱了依賴項目,突然出現了這個問題。項目>清潔解決了我的問題。謝謝。 – vitrums 2016-11-25 19:52:13