有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Maven多模块项目打破编译时类解析

我以前管理过一个3模块的项目,作为3个独立的maven项目。随着这个项目的推进,我决定应该利用maven2的依赖关系管理来简化这3个不断发展的模块之间的集成

我定义了一个部署为POM的超级项目。这里定义了一些共享依赖项,并且在POM中按照从依赖性最小的模块到依赖性最大的模块的顺序定义了模块。每个模块都有一个返回到父模块的POM定义,在它应用的地方,一个模块与另一个模块的已部署工件之间存在依赖关系。我将包括可能值得的pom。最后是xml行

关于这个问题,我昨天设置了这个项目,能够让每个模块独立构建和工作。然后我今天回来处理其中一个模块,现在有了一些新的需求,突然间一切都崩溃了。我在Eclipse中编辑项目,每次修改一个文件时,它都无法解析同一项目中定义的任何类。也就是说,如果我有一门课。酒吧它有一个对象foo。酒吧类2,Eclipse(以及整个编译器)抱怨它无法解析类foo。酒吧类别2。。。现在这让我大吃一惊,因为另一个类在同一个项目和包中。不在同一包中的类也存在类似问题

在我的maven设置中是否存在一些问题,或者有人知道为什么这些项目甚至不能在同一个包中解析类吗

-::POMs::-

家长->/路径/收件人/项目/主应用程序

<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/Broker

 <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>

肥皂->/路径/to/project/mainApp/Soap

<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>

...

用户界面->/路径/收件人/项目/主应用程序/用户界面

<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>

...

共 (1) 个答案

  1. # 1 楼答案

    听起来问题在于Eclipse设置,而不是Maven

    mvn compile是否在项目中通过命令行工作?来自父项目和每个单独模块(在对依赖项执行mvn install之后)

    您是否在为Eclipse使用Maven插件,例如m2eclipse?检查它是否配置为从Eclipse中加载依赖项目,而不是查看存储库(“启用工作区解析”)。如果执行Project>Clean清理所有项目