2012-12-07 149 views
0

在svn仓库中,我有一个文件夹'product',其中的所有Eclipse插件和功能都与之相对应,其中还有父POM。当我在Jenkins中构建时,这个设置很好,我只是检查'product'并安装pom.xml。但是,我无法弄清楚这个设置在Eclipse工作区中是如何工作的?我无法将pom.xml自己检出到工作区中,如果需要,我需要将它作为单个文件检查,然后将其路由到父POM的路径。我应该如何检查并建立这样的设置?Maven项目结构

另外,我需要在我的插件中定义父POM的relativePath吗?我发现如果我忽略它,那么我会错过有关路径丢失的错误。

只是总结一下,我的SVN仓库的结构是这样的:

  • 回购/
    • 主干/
      • 产品< - Maven项目(与.project文件设置为Maven的性质文件夹)
        • pluginA
        • pluginB
        • featureA
        • 的pom.xml
        • 我想的.project

回答

0

你有两种选择:

  1. 你的父POM部署到本地可用储存库,例如你的公司Nexus服务器?这将随后供所有产品和所有同事使用。

  2. 重构您的项目以使其看起来更像Maven-like,

    |-- plugin1 
        |-- pom.xml 
        |-- .... 
    |-- plugin2... 
    |-- feature1... 
    |-- ... 
    pom.xml <-- parent POM 
    

    这第二种选项可在长期的更好,否则你的詹金斯服务器依赖于你记住在本地安装更新的父POM,而不是从SVN刚刚采摘它。

+0

谢谢。我最初是由项目重组的,因为我认为这是Maven工作的最佳方式。在/ plugins和/ features文件夹中有插件和功能之前。然而,这个结构有点难以处理,但是现在我想我可能没有正确地引用父POM,因为我相信即使有这样的结构,Maven也可以通过正确的GAV找到父POM,那是正确的假设吗? –

0

如果您使用m2eclipse(例如,可从Juno站点获得),则可以将任何Maven项目结构导入到Eclipse中。在你的情况下,产品文件夹将作为Eclipse项目导入,以及各个功能和捆绑包。

<relativePath>默认为..,所以如果父POM不在父文件夹中,您需要指定它。如果父POM在本地不可用,您可以将其设置为未定义(例如,通过空的<relativePath/>标记)。在这种情况下,Maven将始终从本地Maven存储库或配置的远程(Maven)存储库中解析父POM。

+0

谢谢。我通过Maven SCM向导导入了产品项目。这导入了我所有的插件和功能作为Java项目,并导入产品项目以及我所有的Java项目作为子项目。没有检查适当的操作,我在导入过程中做错了什么?我将SCM指向了具有Maven特性的父文件夹。 –