【问题标题】:Commit multi-module maven project to SVN提交多模块maven项目到SVN
【发布时间】:2014-09-25 14:18:01
【问题描述】:

我使用 Maven 在 Eclipse 中创建了几个基于 Maven 原型的项目,最终得到了这个项目结构(具有多个模块的父项目):

  • 父项目 - pom.xml:
<name>backoffice-root</name>    
<modules>
    <module>backoffice-web</module>
    <module>backoffice-ejb-core</module>
    <module>backoffice-ws</module>
    <module>backoffice-ear</module>
</modules>

现在我想使用 Subclipse 将它们提交到 SVN 存储库。

在我的第一种方法中,我将这些项目以平面层次结构添加到 SVN。我添加的第一个项目是 root,否则我会收到警告说模块中的 .svn 文件夹将被删除:

backoffice-root    
backoffice-web
backoffice-ejb-core
backoffice-ws
backoffice-ear

如果我在此之后尝试提交,则会收到错误“backoffice-root/backoffice-web 已在版本控制之下”。我相信会发生这种情况,因为当我将项目添加到 SVN 时,在每个项目中创建了一个 .svn 文件夹,但我不知道如何在不删除这些文件夹并丢失其中包含的信息的情况下解决这个问题。

所以我尝试了第二种方法:将 root 添加到 SVN,然后在 root 下添加所有其他(将我的 Maven 项目结构映射到 SVN 存储库),在存储库中创建此结构:

backoffice-root    
    backoffice-web
    backoffice-ejb-core
    backoffice-ws
    backoffice-ear

但是当我尝试提交所有这些时,我得到了与方法 #1 相同的错误。

我让事情正常工作的唯一方法是将根添加到 SVN 并提交它(它提交所有模块,因为它们是根内的文件夹)。但我想处理每个项目并单独提交它们。我是否需要像this 帖子中解释的那样以平面布局构建我的 Maven 项目?我的原始布局如何以这种方式工作?

【问题讨论】:

    标签: eclipse maven svn


    【解决方案1】:

    我正在使用与您相同的布局,并且一切正常。我的项目的骨架如下:

    parent
      -model
      -util
      -services
      -web
    

    model、util、services 和 web 都是父模块,并放在父目录中。然后我提交了父项目(包含所有模块),最后我签出并导入(在 eclipse 文件->导入->Maven->现有 Maven 项目中)所有模块。

    更新1

    试着用一些截图来描述这个过程:

    Step1 我已经提交了父模块和所有模块

    结帐后会出现以下情况:

    只有父节点与 svn 链接。现在你必须做 (File->Import->Maven->Existing Maven Project 并选择所有模块。然后你将自动将所有模块链接到 svn

    更新2

    我的父定义如下:

    <modules>
        <module>model</module>
        <module>util</module>
        <module>services</module>
        <module>vaadin-webapp</module>
    </modules>
    

    每个模块都有这个配置

    <parent>
        <groupId>myCompany</groupId>
        <artifactId>myProject</artifactId>
        <version>2.2.1-SNAPSHOT</version>
    </parent>
    

    【讨论】:

    • 我的工作区中已经有 maven 项目(我创建了每个项目),所以我不能像你说的那样导入它们。你如何提交一个项目?你是在父项目下选择它的文件夹并提交吗?
    • 这不会修改您的父和模块 pom 文件,以便它们像在平面布局中一样相互引用吗?
    • @Bederous 我不明白你在说什么,但按照上面描述的方式,我能够以独立于其他模块的方式管理(提交、恢复 ecc)每个模块
    • 我在问你的父项目 pom.xml 文件是否有这样定义的模块: ../service../models 并且模块引用父项目是这样的:../parent
    • 我从 Eclipse 中删除了模块项目(没有从磁盘中删除它们),因为这是 Eclipse 让我此后导入的唯一方法。然后我做了你建议的导入,它似乎正在工作。然而,我发现这个过程非常不自然。我想知道平面布局方法是否正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 2011-05-25
    • 2012-06-14
    • 1970-01-01
    • 2016-01-12
    • 2021-02-09
    相关资源
    最近更新 更多