我之前一直在管理一个3模块项目,作为3个单独的maven项目。随着这个项目的不断发展,我决定利用maven2的依赖管理来简化这三个不断发展的模块之间的集成。
我定义了一个部署为POM的超级项目。这里定义了一些共享依赖项,并且模块在POM中按照从最小依赖模块到最依赖模块的依赖顺序定义。每个模块都有一个返回父级的POM定义,在应用的位置,存在从一个模块到另一个模块的已部署工件的依赖关系。我将在最后包括可能有价值的pom.xml行。
关于这个问题,我昨天设置了这个项目,并且能够让每个模块构建并独立工作。然后我今天回来开始研究其中一个模块,现在已经出现了一些新的要求,突然间一切都在破碎。我在Eclipse中编辑项目,每次修改文件时,它都不再能解析同一项目中定义的任何类。也就是说,如果我有一个类foo.bar.class1并且它有一个foo.bar.class2的对象,Eclipse(以及整个编译器)抱怨它无法解析类foo.bar.class2 ......现在这个因为这个其他课程在同一个项目和包中,所以我在想。对于不在同一包中的类也存在类似的问题。
我的maven设置中是否存在某些问题,或者是否有人知道为什么这些项目甚至无法解析同一个包中的类?
- ::的POM :: -
父母 - > /路径/到/项目/ 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>
经纪人 - &gt; /路径/到/项目/ 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>
肥皂 - &gt; /路径/到/项目/ 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>
...
用户界面 - &gt; /路径/到/项目/ 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>
...
答案 0 :(得分:2)
听起来问题在于您的Eclipse设置而不是Maven。
mvn compile
是否可以在项目中的命令行中运行?从父项目和每个单独的模块(对依赖项进行mvn install
后)?
您是否正在使用Eclipse的Maven插件,例如m2eclipse?检查它是否配置为从Eclipse中加载相关项目,而不是查看存储库(“启用工作区解析”)。如果您执行Project
&gt;会发生什么? Clean
清除所有项目?