3

这源于询问 Apache Maven 和 IBM Rational ClearCase 是否集成良好的问题。我想我应该写下我发现的东西——需要进行各种编辑,但我最终会按我希望的方式添加它。

环境

ClearCase - ClearCase 版本 7.0.1.2.

Maven - 所有这些,来自Maven 网站

Hudson - 1.307 版直接从Hudson 网站下载


问题

  • Maven 是否从 VOB 运行?

我将所有版本的 Maven2 安装到 VOB 'stacked' 中,即我添加了 2.0 版本 - 标记它,锁定标签 - 然后在顶部添加 2.0.1。

为了防止出现无关文件,我在 clearfsimport 中使用了 -rnname 标志。

这样,我可以简单地使用标签在我的配置规范中指定我想要访问的 Maven 版本,但仍然为 maven 可执行文件保留相同的路径 - /maven/bin/mvn。

一旦安装了所有版本,我就可以通过动态视图从那里运行 Maven 。存储库像往常一样从 Nexus 的内部安装下载到用户主目录 - 这可以避免签入和签出的任何问题。

将工具保留在源代码控制中的一个好处是您可以设置公司范围的设置(例如指向内部存储库) - 然后在任何平台上从 VOB 运行单个 Maven 实例,这会保留您最初设置的设置!

在 Maven 项目中,我只将 src 目录和 pom.xml 保留在源代码管理中,因为之后可以自动生成其他所有内容。

  • Hudson 是否与 ClearCase 一起使用?

我在设置 Hudson 以使用 ClearCase 动态视图运行时没有问题。所需要的只是从 Hudson 的工作目录到视图根目录(在本例中为 /view/xxx)的符号链接。ClearCase 插件成功运行ct lshistory以查找开发人员合并到的集成分支中是否有任何更改。

我确实编写了一个小脚本来设置作业的初始环境 - 只是 config.xml 和动态视图符号链接 - 以便在作业中列出正确的视图并且初始设置是正确的。之后用户所做的任何增强都是对默认模板的更改,而不是他们自己设置。

在 Hudson 的整体设置中,我使用了 $CLEARCASE_VIEW 环境变量来设置 Maven 可执行文件的路径。这样,Maven 的版本取决于配置规范中设置的版本——而不是他们在 Hudson 中选择的版本。

这为我(管理员)和我的用户节省了额外的管理。

  • 您使用的是什么内部存储库管理器?

我将 Sonatype Nexus 设置为内部存储库管理器 - 主要是因为我在Sonatype 博客中读到 Hudson 将与 Nexus 进行更多集成,我们不妨为未来的新增强功能做好准备。我还相信,当我设置并尝试它时,它更适合大型商业环境,因为您可以调整存储库管理器中的组以更加灵活 - 对于大量项目很有用。

4

3 回答 3

2

我在 ClearCase 之外有一些 Maven 存储库,供一些第三方库参考。

但我从未将 MavenClearCase 一起使用,因为它们遵循不同的逻辑(Maven 需要文件的签名名称,例如 myfile-1.2.jar,而 ClearCase 只能存储 myfile.jar,并记录它的版本标记为 1.2)

romaintaz报告的Maven2 ClearCase 插件可能已经改变了这种情况,但是这个新产品中仍然存在一些错误,正如这个线程所示,当一个人在没有解开 pom 文件的情况下第二次运行它时。Maven 正在顺利完成结帐,但无论下一步是什么都无法完成。

INFO Checking out file: /opt/viewstore/common/maven/my_lf_ss/vobs/test_alm/LF_Build/pom.xml
INFO ERROR BUILD FAILURE
INFO INFO Unable to enable editing on the POM
Provider message:
The cleartool command failed.
Command output:
cleartool: Error: Element "/opt/viewstore/common/maven/my_lf_ss/vobs/test_alm/LF_Build/pom.xml" is already checked out to view "my_lf_ss".
于 2008-11-18T09:57:29.023 回答
1

我没有使用这个 SCM,但是有一个名为 SCM 的Maven2 插件可以处理 Clearcase。

于 2008-11-18T09:23:18.703 回答
1

我有一个使用 Maven 2 构建的团队,并使用 Clearcase 作为版本控制系统。我们使用 Archiva 作为构建工件的存储库,因此开发团队不需要使用 SCM 插件。

但是,持续集成服务器是 Continuum,它依赖于 POM 中的 SCM 信息。我们遇到了 Clearcase SCM 使用分支策略抓取快照视图的问题。我的一位开发人员不得不调整 Clearcase SCM 代码以使其与我们的分支一起工作。在我们开始为他的修复做出贡献之前,我们都继续前进。

于 2008-11-18T13:12:29.393 回答