Java 对于多模块Maven项目,是否可以使我的根(pom打包)项目在Eclipse中可用?

Java 对于多模块Maven项目,是否可以使我的根(pom打包)项目在Eclipse中可用?,java,eclipse,maven-2,pom.xml,Java,Eclipse,Maven 2,Pom.xml,我们有一个相当大的Maven2项目组,一个根POM文件列出了10多个模块和模块使用的许多属性(依赖项版本号、插件配置、公共依赖项等)。有些模块(如根项目)是其他模块集的父级 为了澄清,根项目和所述父项目被设置为pom打包(与例如jar相反) 因为不同的项目之间有很多依赖关系,所以我喜欢在根项目上使用mvn eclipse:eclipse,这使我能够在任何时候调试/单步执行任何项目 但是,使用这种方法,根POM本身以及所有其他POM打包项目在Eclipse中都不可用。所以,如果我想编辑它们,我必须

我们有一个相当大的Maven2项目组,一个根POM文件列出了10多个模块和模块使用的许多属性(依赖项版本号、插件配置、公共依赖项等)。有些模块(如根项目)是其他模块集的父级

为了澄清,根项目和所述父项目被设置为pom打包(与例如jar相反)

因为不同的项目之间有很多依赖关系,所以我喜欢在根项目上使用mvn eclipse:eclipse,这使我能够在任何时候调试/单步执行任何项目

但是,使用这种方法,根POM本身以及所有其他POM打包项目在Eclipse中都不可用。所以,如果我想编辑它们,我必须以其他方式打开它们。这变得有点麻烦了

所以,我的问题是:是否有可能以某种方式使pom打包的项目在Eclipse中可用?如果没有,你有什么建议可以让我在这些项目上的工作更轻松吗


作为记录,我目前正在使用MyEclipse 7.0。

您可以尝试编写一个任务,为其目录中的每个POM项目手动创建.project文件。不确定具体细节,但您可以生成如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>${project.name}</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
        </buildSpec>
        <natures>
        </natures>
</projectDescription>

${project.name}
在项目的根目录中,应该没有问题


我不确定这样做是否会阻止您将子项目导入eclipse(您可能知道,您需要首先导入所有非pom项目,然后为其他项目创建“常规”项目,路径与mvn结构下的物理路径匹配)。Eclipse将阻止您在另一个项目中创建一个项目,因此,如果它识别出项目层次结构中更高层次的任何内容,那么您将回到过去。

我成功地处理了有父项目的maven项目。这个插件有一些缺陷,但总的来说是可以维护的,你应该能够很好地处理它。

很好。许多人通过将父POM作为兄弟项目,并在根中使用一个简单的reactor POM来实现这一点。但是,这可能会导致网站生成和发布插件出现问题,因为两者都不完全支持这种模式

我们经常遇到的一个大问题是,人们试图使用Subclipse检查主干,这会在根目录中添加一个.project文件,从而阻止导入低于该级别的项目。相反,我们必须走出去检查,然后导入项目


我听说有传言说Subversive可以更好地处理嵌套项目,这才是真正的问题所在。除此之外,我这里没有绝对的解决方案。

我用伽利略和最新版本的m2eclipse再次尝试了这个方法。现在可以直接导入Maven项目(无需mvn eclipse:eclipse),而且根POM也可以作为项目导入,这正是我想要的。

通常我只需要eclipse中可用的父级来添加依赖项和利用XML格式。一种廉价而愉快的方法是创建资源项目,并将父pom链接到该项目中。文件->新建->其他->常规->文件->高级

如果您使用2.8+版本的eclipse插件,您可以让它在每个子项目中为您生成链接,例如

<plugin>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.8-SNAPSHOT</version>
    <configuration>
        <linkedResources> 
            <linkedResource>
                <name>parent.xml</name> 
                <type>1</type>
                <location>${basedir}/${parent.relativePath}</location> 
            </linkedResource>
        </linkedResources> 
    </configuration>
  </plugin>

实际上,如果您不想依赖m2eclipse,那么“正确”的方法是使用(因为问题是Eclipse不支持嵌套项目).

如果我这样回答,我只会被否决:netbeans和intellij Idea现在都有功能性的maven集成,因此您可以直接从根pom打开项目。如果您在回答中提到这一点,我会给您投票:)从Eclipse 4.5.M5(Mars M5,3月份发布)开始,Eclipse现在支持包资源管理器中项目的分层视图:
svn co http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-eclipse-plugin/
cd maven-eclipse-plugin
mvn clean install