gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:11:29 25 4
gpt4 key购买 nike

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

我定义了一个作为 POM 部署的 super 项目。这里定义了一些共享的依赖关系,并且在POM中按照依赖关系从最少依赖模块到最依赖模块的顺序定义模块。每个模块都有一个返回到父级的 POM 定义,并且在应用它的地方,存在从一个模块到另一模块的已部署工件的依赖关系。我将在最后添加可能有值(value)的 pom.xml 行。

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

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

-::POM::-

父级 ->/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>

...

最佳答案

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

mvncompile 可以在您的项目中通过命令行工作吗?来自父项目和每个单独的模块(在对依赖项执行 mvn install 之后)?

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

关于java - Maven 多模块项目打破编译时类解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3239731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com