【问题标题】:Maven Multi Module Project breaking compile-time class resolutionMaven 多模块项目打破编译时类解析
【发布时间】:2010-07-13 17:28:48
【问题描述】:

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

我定义了一个部署为 POM 的超级项目。这里定义了一些共享依赖,在POM中按照依赖从最小依赖模块到最大依赖模块的顺序定义模块。每个模块都有一个返回给父模块的 POM 定义,并且它适用于从一个模块到另一个模块的已部署工件的依赖关系。我将在最后包含可能有价值的 pom.xml 行。

关于这个问题,我昨天设置了这个项目,并且能够让每个模块自行构建和工作。然后我今天回来处理其中一个模块,因为一些新的需求已经出现,突然间一切都被打破了。我在 Eclipse 中编辑项目,每次修改文件时,它都无法解析同一项目中定义的任何类。也就是说,如果我有一个类 foo.bar.class1 并且它有一个 foo.bar.class2 的对象,Eclipse(以及整个编译器)抱怨它无法解析类 foo.bar.class2 ......现在这个让我大吃一惊,因为这个其他类在同一个项目和包中。不在同一个包中的类也存在类似问题。

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

-::POMs::-

父级 -> /path/to/project/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>

代理 -> /path/to/project/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>

Soap -> /path/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>

...

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>

...

【问题讨论】:

    标签: java eclipse maven-2 compiler-errors


    【解决方案1】:

    听起来问题出在您的 Eclipse 设置上,而不是 Maven。

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

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

    【讨论】:

    • 好像就是这样。奇怪,但感谢您的提示(尤其是在 Eclipse 中的 Project > Clean)。
    • m2eclipse 可能很棒,但有时真的很烦人——我经常需要做 Project > Clean 才能让 Eclipse 查看类路径上的资源等。
    • 该死,就是这样。我还操纵了依赖项目,突然出现了这个问题。项目 > 清洁解决了我的问题。谢谢。
    猜你喜欢
    • 2012-07-05
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 2013-06-08
    • 2016-09-24
    • 1970-01-01
    • 2019-05-05
    相关资源
    最近更新 更多