我们有一个相当大的Maven2项目组,其中一个根POM文件列出了10多个模块和模块使用的许多属性(依赖版本号,插件配置,公共依赖项等)。与根项目一样,某些模块是其他模块的父项。
为了澄清,根项目和所述父项目被设置为pom包装(而不是例如jar)。
由于不同项目之间存在许多依赖关系,我喜欢在根项目中使用mvn eclipse:eclipse,这使我能够随时调试/步入任何项目。
但是,使用这种方法,根POM本身以及所有其他pom打包的项目在Eclipse中都不可用。所以,如果我想编辑它们,我必须以其他方式打开它们。这变得有点麻烦。
所以,我的问题是:是否有可能以某种方式在Eclipse中提供pom打包的项目?如果没有,您是否有任何提示可以使我对这些项目的工作更容易?
为了记录,我目前正在使用MyEclipse 7.0。
答案 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不支持嵌套项目)。