2010-07-13 55 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