Maven scm 和 svn

Maven scm and svn

我无法通过 Maven 访问 svn 修订号。我从 SCM 使用页面收到的唯一真正帮助如下:

<scm>
    <connection>scm:svn:http://somerepository.com/svn_repo/trunk</connection>
    <developerConnection>scm:svn:https://somerepository.com/svn_repo/trunk</developerConnection>
    <tag>HEAD</tag>
    <url>http://somerepository.com/view.cvs</url>
</scm>

这对我来说毫无意义,因为我无法弄清楚连接、developerConnection 和 url 是什么意思。我只是将 url 插入到所有 3 个元素的存储库中。我也不知道为什么 Maven 不要求我提供存储库的用户名和密码。

我是 Maven 的新手,可能会问一个非常基本的问题,但希望能得到关于我如何访问 svn 存储库的完整解释。

首先,我将首先澄清 Maven 的用法,这似乎会导致您的情况混乱:

Apache Maven is a software project management tool... that can manage the project's build.

Apache Maven 与将您的修订推送到源代码管理系统无关(SVN)。

通常,您将通过 IDE(EclipseIntelliJ IDEA 等)或通过命令行访问您的 SVN 存储库,您 不会以任何方式 将这些更改推送到 Maven 在这种情况下你会破坏它的使用目的。

问题来了,为什么您可能需要那些与 SCM 相关的属性? 答案很简单并且应该是相关的,因为 Maven 是一个项目构建工具,它必须处理您的项目发布周期,这是项目构建周期的最后一部分......而且它不会无需 更新您的远程项目信息 即可以连贯的方式完成此操作,因为您使用的是 SCM 远程存储库。

现在回到那些 SCM 相关属性,它们是什么意思:

  • connection:URL 连接端点到您的 SCM 存储库和这将仅用于 read 访问。
  • developerConnection:到您的 SCM 存储库的 URL 连接端点和这将用于 write 访问。 (毕竟这就是开发人员角色的目的,将更改推送到存储库)。
  • tag:它指定了项目所在的标签,我只看到了HEAD 在那里使用并假设将是默认值。
  • url:它指定了一个可浏览存储库,例如一个通过 viewvc (在大多数情况下,您可以替换连接下的 /svn/ 路径 URL 与 /viewvc/)

SCMS软件C配置M管理,也叫SCode/C控制M管理,或者简而言之,版本控制)是任何健康项目不可或缺的一部分。如果您的 Maven 项目使用 SCM 系统(确实如此,不是吗?),那么您可以在此处将该信息放入 POM 中。

connectiondeveloperConnection:这两个连接元素传达了一个是如何通过Maven连接到版本控制系统。其中 connection 需要 Maven 的读取访问权限才能找到源代码(例如,更新),developerConnection 需要将提供写入访问权限的连接。 Maven 项目产生了另一个名为 Maven SCM 的项目,它为任何希望实现它的 SCM 创建了一个公共 API。最流行的是 CVS 和 Subversion,但是,其他受支持的 SCM 的列表越来越多。所有 SCM 连接都是通过一个通用的 URL 结构建立的。

scm:[provider]:[provider_specific]

其中 provider 是 SCM 系统的类型。例如,连接到 CVS 存储库可能如下所示:

scm:svn:https://somerepository.com/svn_repo/trunk

tag:指定此项目所在的标签。 HEAD(意思是 SCM 根)应该是默认值。

url:一个可公开浏览的存储库。例如,通过 ViewCVS.

Source

类比:https://www.youtube.com/watch?v=9In7ysQJGBs