Maven多模块项目:Eclipse中缺少模块

Maven多模块项目:Eclipse中缺少模块,eclipse,maven,m2e,Eclipse,Maven,M2e,我在Eclipse中使用一个描述多模块项目的原型创建了一个新的Maven项目。它部分地起作用,就像我习惯的那样。在项目资源管理器中,模块在顶层显示为项目,而不是父项目的子文件夹。在我的硬盘上,文件夹结构显示父根项目文件夹下的模块。我现在习惯于在Navigator中看到相同的结构,但它显示的文件夹结构与Project Explorer相同 为了让这个问题变得更加烦人,我使用Maven=>newmaven模块项目手动创建了另一个模块。该模块的行为符合预期。它在导航器中显示为父文件夹的子文件夹,我可以

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

为了让这个问题变得更加烦人,我使用
Maven
=>
newmaven模块项目
手动创建了另一个模块。该模块的行为符合预期。它在导航器中显示为父文件夹的子文件夹,我可以提交它

要将其可视化:

硬盘上的结构(应在Navigator中):

导航器和项目浏览器中的结构:

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

4.0.0
粘虫
父项目
0.0.1-快照
聚甲醛
模块1
mdoule2
人工合成模块
ACHETYPE模块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>
<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>

4.0.0
父项目
粘虫
0.0.1-快照
../pom.xml
模块1
手动创建的模块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>
<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>

4.0.0
父项目
粘虫
0.0.1-快照
../pom.xml
人工合成模块
你会发现没有明显的区别。对于POM模块,我只是省略了依赖项。手动创建的模块还在build部分使用
maven-ear插件
jboss作为maven插件
,但我无法想象它们与问题相关

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

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

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

更新

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

更新2

在@Behe和@cowls的共同帮助下,我设法找到了以下解决方法:

  • 从Eclipse中删除项目(不删除文件)
  • 仅重新导入父级
  • 现在显示了模块,我能够进行初始提交
  • 再次删除项目
  • 重新导入父模块和所有模块
现在模块已正确提交并可以同步。由于这是一个解决方法(或者至少感觉是这样),我仍然对以下问题的答案感兴趣:


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

我不确定这是一个问题

但这只是通过在Eclipse中导入项目的方式来定义的

如果您只在eclipse中导入父项目,您将在项目浏览器中的一个项目中看到它们


如果选择导入所有maven项目,它们将被视为单个项目。无论哪种方式,如果您从Eclipse提交它们,它们都会被提交到同一个位置。

我也有同样的问题。我使用的是Spring工具套件的版本:4.4.2.RELEASE。 要解决此问题,我右键单击父项目并转到配置-->配置和检测嵌套项目。这就产生了我的子模块。
在此之前,我已将所有子模块添加到与父模块相同的工作集中。您可以通过右键单击每个子模块或单击PackageExplorer中的向下箭头“V”来实现

请显示pom.xml文件的相关部分以及文件夹结构。@Behe done!我没有这样做,因为POM似乎不是问题。你能详细说明你的问题吗?你好像有两个?如果你能展示它的样子以及你期望它是什么样子,这将是很有帮助的。另外,您如何尝试提交,例如,您使用什么插件。@Behe它看起来像什么以及我期望的内容已经包含在我的问题中(两个结构“图表”)。我已经尝试过了,我会在我的问题中添加细节。也许这只是一件小事,没有引起你的注意,我们可以从截图中推断出来。这就是我询问更多信息的原因。我的问题是它们在导航器中甚至没有正确显示。而且我也没有办法一次提交它们。听上去,你想从工作区中删除所有内容(或创建一个新的),只导入父级。注意,可以在eclipse之外使用命令行或windows gui客户端提交源代码管理