Eclipse + Subversion(subclipse)+ Maven(m2eclipse)多模块项目

时间:2010-10-29 18:00:25

标签: eclipse svn maven

我有一些相关的遗留项目是一团糟,我想将它们作为一个在subversion上共享的多模块项目(第一个多模块项目,我们总是把它们分开)。有几个关键部分1)webservice,2)各种swing客户端,3)模型(w /持久性来自hibernate),4)核心JSE任务。

我一直在努力使用Eclipse(Helios),Maven(2.2.1),m2eclipse(0.10.0)和Subversion(1.6)为我们的团队正确设置它几天。我一直在捣乱自己,或者随机出现错误,迫使我回溯。我希望有人可以帮我解决一些最好的做法。

以下是一些问题:

m2eclipse需要一个“扁平”的eclipse项目结构。这是否意味着我应该为每个模块创建一个subversion存储库?如果我做一个存储库并尝试从父项目签入,我很难在嵌套项目目标(和其他)目录上设置svn:ignore属性。

如果我为每个存储库执行一个模块,我似乎可以在ok中检查它们。那么问题是通过subclipse检查的最佳方法是什么?有最好的订单吗?父母或子女项目首先?我是否需要签出父项目并修改子项目的结帐路径以嵌套在文件目录中,以便我从父项目中“清理安装”?

或者,我应该放弃subclipse和m2eclipse并结帐并从命令行运行我的maven目标。

或者,我应该只使用SCM与Maven集成。或者,甚至可能只是尝试获得多模块项目设置。

其他人做了什么?有没有人有一些文件(我错过了)或一些链接(谷歌不推荐)?

提前感谢您的反馈。

2 个答案:

答案 0 :(得分:8)

  

m2eclipse需要一个“扁平”的eclipse项目结构。

嗯,m2eclipse支持嵌套项目AFAIK(或至少导入嵌套项目结构)。我没有使用Eclipse向导来创建我的项目,所以也许我不知道什么。

  

这是否意味着我应该为每个模块创建一个subversion存储库?

不,不,绝对没有,我不会这样做(这很难维护)。但是,根据您的项目发布周期,您可能需要考虑存储库的布局(单个与多个中继/标记/分支),尤其是在您计划使用maven发布插件时。如果某些部分具有独立的释放周期,那么我会选择几个主干/标签/分支。如果你总是将它们全部一起发布(作为单个产品),那么单个主干/标签/分支应该这样做。我就可能感兴趣的话题写了几个答案:

  

如果我做了一个存储库并尝试从父项目签入,我很难在嵌套项目目标(和其他)目录上设置svn:ignore属性。

具体问题是什么?

  

如果我为每个存储库执行一个模块,我似乎可以在ok中检查它们。那么问题是通过subclipse检查的最佳方法是什么?有最好的订单吗?父母或子女项目首先?我是否需要签出父项目并修改子项目的结帐路径以嵌套在文件目录中,以便我从父项目中“清理安装”?

无论你做出什么选择(多个存储库或不存在多个主干/标签/分支),都应该可以一次检查整个项目结构(如果需要,可以使用svn:externals)。至少,您应该尝试使其成为可能(并且,请参阅上面发布的链接)。

但我再说一遍,我不建议使用多个存储库(除非你想要独立的修订版号)并且没有任何东西强迫你这样做。

  

或者,我应该放弃subclipse和m2eclipse并结帐并从命令行运行我的maven目标。

我成功地使用Eclipse,m2eclipse,subclipse,所有这些都很好地集成(至少对于构建和“签入”部分)。但我在命令行上进行初始导入和初始检出,然后导入

  

或者,我应该使用SCM与Maven集成。

我不使用它,我不需要它。

  

或者,甚至可能只是尝试进行多模块项目设置。

没有理由禁止使用多模块项目设置,multi-modules builds是Maven的关键部分之一。

  

其他人做了什么?有没有人有一些文件(我错过了)或一些链接(谷歌不推荐)?

查看我发布的链接:)

答案 1 :(得分:1)

起初有点棘手。我通常看到它设置的方式是这样的:

在颠覆中:

- Parent Project
-- Module A
--- pom.xml (module A)
-- Module B
--- pom.xml (module B)
-- Module c
--- pom.xml (module C)
-- pom.xml (parent project)

有些事情要注意(你已经知道):

  • 您必须拥有子项目 在父级中列为模块 项目
  • 您必须列出父项目 在你的孩子pom(作为父母 小组,神器,版本)
  • 当您从中检出项目时 svn,你需要做'结账为 maven项目'而不是 标准'结账'(这个可以 a gotcha)

我希望这会有所帮助。