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

标签 eclipse maven m2e

我使用描述多模块项目的原型(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/

相关文章:

java - 如何通过为我的代码创建新方法来减少主方法中的代码?

eclipse - 如何解决 Gradle 插件依赖?

java - Maven 项目 - Spring MVC 错误

java - IDE 的 Maven 支持比带有 m2e 的 Eclipse 更好吗?

Eclipse - manifest.mf 插件依赖项 - 不同的图标

java - 没有 autoddl 的 Sakai 11 SQL 迁移

maven - Gradle子项目版本控制

eclipse - svn checkout 和 checkin maven 多模块项目如何

eclipse - 在 Eclipse 简单示例中使用 Maven 时缺少 Artifact log4j :log4j:bundle:1. 2.16

Java 添加到 ArrayList<String> 然后转换为 Object[][]