【问题标题】:How should I configure my MAVEN project(s) in SCM?我应该如何在 SCM 中配置我的 MAVEN 项目?
【发布时间】:2012-02-24 09:37:39
【问题描述】:

我是否应该提交整个代码库以及 POM,并让用户为多个 maven 项目一次签出一个项目,其中一个项目包含多个模块?

我应该只提交 POM,并在每个 POM 中配置 SCM 信息吗?

当您配置 maven SCM 插件时,提交/签出是如何工作的?您是否通过 subversion 存储 POM,检查它们,然后物化 POM,以便 maven 将其余相应文件下载到该项目?如果您需要添加新文件,但您是通过 maven 使用 SCM 怎么办?

我对仅使用 svn(标准方式)存储文件与基于每个 pom 存储 SCM 信息之间的区别感到非常困惑。似乎完全没有关于如何使用 Maven 并使用 SCM 信息加载它的文档。

最好将 SCM 信息直接存储在 POM 中,还是如我之前所说,我应该将整个项目添加到 SVN 中,包括它们各自的 POM?

或者将 SCM 信息直接嵌入到 maven 中,并让 maven 实现所述项目是否更好? Maven SCM 插件是否与 subclipse 配合得很好?例如 - 在您从 Maven POM“实现”一个项目之后,它是否从 SVN 导入项目文件,然后在 Eclipse 中将它们显示为受版本控制?如果我将 SCM 信息嵌入到 maven POM 中,那么我是否会仅为我的 pom 文件创建一个单独的 SVN 存储库?还是我将所有 POM 文件直接放在我的工程存储库的主干中?

希望有人可以帮助我澄清这一点。我很困惑。谢谢!

【问题讨论】:

    标签: svn version-control maven maven-scm


    【解决方案1】:

    始终在 SCM 中提交所有源代码。否则,您将没有源代码的历史记录。

    还要在 SCM 中提交你的 pom,否则你没有关于它应该如何构建的历史。这样的历史对于能够构建软件的旧分支至关重要,并且由于构建和源代码是如此紧密耦合,因此最好将 pom.xml 提交到与源代码相同的存储库中。

    为了方便其他 maven 工具,您可能需要在 pom.xml 中提及您的 SCM。这是可选的,但我强烈建议您这样做。这允许 CI 系统验证他们的源代码副本是最新的,并在必要时为他们提供检出新副本所需的配置。

    我不知道有任何工具或插件可以实际为您检查代码。如果您不签入源代码,那么所有其他工具都会签出一个简单的 pom.xml(因为这就是 SCM 中的全部内容),而 SCM 参考将无法告诉任何人源代码在哪里代码是(因为它不在 SCM 中)。

    【讨论】:

    • 我认为它被称为引导。但我不确定
    • 当我将项目存储在 SVN 中时,我不包括 eclipse .project 设置和其他任何自动生成的内容。我也应该提交 Eclipse 项目吗?当您通过 svn(导入 > 从 svn 导入)签出我的 maven 项目并选择“作为工作区中的项目签出”时,它不会将其识别为 maven/java 项目。它只显示 pom 和文件,但没有任何 maven 支持。但是,如果我将该项目作为 Maven 项目签出,则它可以工作,但它不会将文件显示为受 SVN 控制。有点奇怪。我错过了什么?
    • @SamLevin,通常我不会检查 eclipse .project 设置,因为在执行 svn 更新时,对项目的任何修改(包括设置运行时配置的参数)都会被删除,或在执行 svn 提交时不受欢迎地传播。但是,分发文件很有用,以方便初始设置(并避免使用手册详细说明要设置的项目和位置)。所以我创建了一个文件夹,将配置文件放在它们正常位置之外,并在其中放置一个“设置”脚本,它将文件复制到它们的正确位置。
    • maven-release-plugin 可以签入您的 pom.xml 文件并创建一个标签。看到这个回答类似的问题stackoverflow.com/a/8125575/2272572
    • @newur maven-release-plugin 可以签入 pom.xml 文件;但只有在将其签出后(并将其签入分支,以准备发布)。我认为您跳过了问题和答案,这不是关于发布,而是关于检查发展变化(以及检查多少)。 Maven 中没有自动化工具可以告诉您应该签入什么或何时签入(因为您可能尚未完成开发更改,并且有效的源文件只是构建中间 yacc 到 c 文件,例如)。
    猜你喜欢
    • 2012-03-25
    • 2012-08-31
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 2012-01-01
    • 2011-04-06
    相关资源
    最近更新 更多