使用多模块Maven项目,是否可以在Eclipse中使用我的root(pom-packaged)项目?

时间:2008-12-17 09:08:27

标签: java eclipse maven-2 pom.xml

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

为了澄清,根项目和所述父项目被设置为pom包装(而不是例如jar)。

由于不同项目之间存在许多依赖关系,我喜欢在根项目中使用mvn eclipse:eclipse,这使我能够随时调试/步入任何项目。

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

所以,我的问题是:是否有可能以某种方式在Eclipse中提供pom打包的项目?如果没有,您是否有任何提示可以使我对这些项目的工作更容易?

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

6 个答案:

答案 0 :(得分:2)

我再次尝试使用Galileo和m2eclipse的最新版本。现在可以直接导入Maven项目(没有mvn eclipse:eclipse),事实证明根POM也是作为项目导入的,这正是我想要的。

答案 1 :(得分:1)

好。很多人通过使父POM成为兄弟项目,并在根中拥有一个简单的反应器POM来实现这一点。但是,这可能会导致网站生成和发布插件出现问题,因为它们都不像人们所希望的那样完全支持此模式。

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

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

答案 2 :(得分:0)

您可以尝试编写任务,为其目录中的每个POM项目手动创建.project文件。不确定具体细节,但你可以产生类似的东西:

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

在项目的根目录中,它应该没问题。

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

答案 3 :(得分:0)

我设法与codehaus eclipse plugin合作,与父母合作的maven项目。该插件有一些缺陷,但总体来说它是维护的,你应该能够与它相处。

答案 4 :(得分:0)

通常我只需要eclipse中可用的父级来添加依赖项并利用XML格式。廉价而愉快的方式是创建资源项目并将父pom链接到其中。档案 - &gt;新 - &gt;其他 - &gt;一般 - &gt;档案 - &gt;先进

如果您使用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>

虽然你现在需要从subversion中检查它并自己构建它,因为它似乎无法从中心解析。

svn co http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-eclipse-plugin/
cd maven-eclipse-plugin
mvn clean install

答案 5 :(得分:0)

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