gpt4 book ai didi

eclipse - Maven多模块项目: Modules missing in Eclipse

转载 作者:行者123 更新时间:2023-12-04 16:31:40 26 4
gpt4 key购买 nike

我使用描述多模块项目的原型(prototype)在 Eclipse 中创建了一个新的 Maven 项目。它部分地作为异常(exception)和我习惯的那样工作。在项目资源管理器中,模块显示为顶层项目,而不是父项目的子文件夹。在我的硬盘上,文件夹结构显示了父项目根文件夹下的模块。我现在习惯在 Navigator 中看到相同的结构,但它显示的文件夹结构与 Project Explorer 相同。

为了让这更烦人,我使用 Maven=>New Maven Module Project 手动创建了另一个模块。该模块按预期运行。它在导航器中显示为父级的子文件夹,我可以提交它。

将其可视化:

硬盘结构(在 Navigator 中是预期的):

- parentProject
| - module1
| - module2
| - manuallyCreatedModule

Navigator 和 Project Explorer 的结构:

-parentProject
| - manuallyCreatedModule
- module1
- module2
- manuallyCreatedModule

我已经将手动创建的模块和其他模块的 pom 和项目首选项与最后一个细节进行了比较,但似乎无法找到导致这种不同行为的原因。 pom 的相关部分似乎是相同的:

父pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>myId</groupId>
<artifactId>parentProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>module1</module>
<module>mdoule2</module>
<module>manuallyCreatedModule</module>
</modules>
</project>

Acrhetype 模块 pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>parentProject</artifactId>
<groupId>myId</groupId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>module1</artifactId>
</project>

手动创建的模块 pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>parentProject</artifactId>
<groupId>myId</groupId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>manuallyCreatedModule</artifactId>
</project>

您会发现没有明显的差异。对于模块 poms,我只是省略了依赖项。手动创建的模块还在构建部分使用 maven-ear-pluginjboss-as-maven-plugin,但我无法想象它们是相关的解决问题。

我还尝试从导航器创建模块文件夹,它告诉我它们已经存在。它只是没有显示它们。

我不能使用这种行为的原因是,如果我想将父项目共享到我们的 CVS,Eclipse 不提供提交模块。无论如何我已经尝试过了,并且已经提交了父项目和一个可见的模块。如果我现在同步,其他模块仍然没有出现。我可以手动将每个模块共享到 CVS 的父文件夹中,但我害怕副作用。

有谁知道导致这种情况的原因以及我如何获得一致的行为?我可以接受所有这些都没有显示在导航器中,但是我还需要一种方法来提交它们。我想最好的解决方案是让所有模块显示在导航器的父项目文件夹中。

更新

从 Eclipse 中删除项目(不删除文件)并重新导入它们解决了行为不一致的问题。现在我看不到父级下方的任何模块。这给我留下了如何正确提交它们的问题。我可以手动将每个模块共享到已提交的父文件夹中,但这对我来说似乎不是正确的方法。

更新 2

在@Behe 和@cowls 的联合帮助下,我设法想出了这个解决方法:

  • 从 Eclipse 中删除项目(不删除文件)
  • 仅重新导入父项
  • 现在显示了模块,我能够进行初始提交
  • 再次删除项目
  • 重新导入父模块和所有模块

现在模块已正确提交并且可以同步。由于这是一种解决方法(或者至少感觉像是一种解决方法),我仍然对以下问题的答案感兴趣:

如何让模块显示在它们的 parants 目录中,这样我就可以提交它们,而不会失去在 Project Explorer 中将模块作为单独项目的优势?

最佳答案

我有同样的问题。我正在使用 Spring Tool Suite 的版本:4.4.2.RELEASE。要解决此问题,我右键单击父项目并转到配置 --> 配置和检测嵌套项目。这产生了我的子模块。在此之前,我已将所有子模块添加到与父级相同的工作集中。您可以通过右键单击每个子模块或单击包资源管理器中的向下箭头“V”来执行此操作。

关于eclipse - Maven多模块项目: Modules missing in Eclipse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22477459/

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