【问题标题】:How do I let jenkins and m2eclipse share the same maven repository如何让 jenkins 和 m2eclipse 共享同一个 maven 存储库
【发布时间】:2012-08-27 17:05:21
【问题描述】:

如何配置 m2eclipse(用于 eclipse 的 maven 插件)以使用 jenkins 中也使用的集中式 maven 存储库。

m2eclipse 中的默认用户设置类似于“home/user/.m2” 我们怎样才能做类似“ssh user@192.168.1.200:/var/lib/jenkins/.m2”的事情?

【问题讨论】:

  • 您能否详细说明为什么您要这样做?那么可能会有完全不同的答案。
  • 嗨,我们在程序员共享的工作场所使用 jenkins。我们有很多单独的 Eclipse 项目,每个项目都在包含版本控制的 jenkins maven 构建系统中管理。因此,我的最低要求是我正在处理的项目应该能够下载 pom.xml 中指定的正确版本的依赖项,因此它必须访问我们在 jenkins 中使用的 maven 存储库。有没有人没有设置过这样的东西?或者工作场所如何使用 jenkins 和 m2eclipse?

标签: eclipse maven ssh jenkins


【解决方案1】:

一个简洁而简单的方法是使用存储库管理器。 Sonatype 的 Nexus 似乎是最受欢迎的,但还有其他的(例如 JFrog Artifactory 和 Apache Archiva)。它们作为 HTTP 服务器运行,您可以将任何 Maven 存储库(例如 Central Maven 存储库)的 Maven 配置(本地和 Jenkins)更改为 use it as a mirror,或使用它来托管您自己的存储库。

【讨论】:

  • 只是一个观察:最流行!=最好。
  • 我知道,但我提到的方程式与特定产品无关,但确实如此:)
【解决方案2】:

没有必要这样做。您的 POM 文件列出了依赖项,它们列出了存储库。然后,Maven 将解析您对所有已知存储库(列出的存储库和“内置”存储库,如 Maven 中心)的依赖关系。

Maven 将在 m2eclipse 中运行 Maven 构建时执行此操作。在 Jenkins 上运行构建时,Maven 也会这样做。因此,如果两台机器都可以连接到您的 POM 文件中列出的所有存储库,那么它们都将检索相同的工件并执行相同的构建。

您真的不应该尝试共享工件的本地副本。这就像我和你尝试使用网络共享来共享我们的 Maven 工件一样糟糕。 Maven 旨在查找和管理这些工件,而您正试图解决这个问题。

【讨论】:

  • 您的意思是,maven 可以在我的工作空间中引用项目,而无需在项目构建路径(.classpath)中配置它们?那么,我仍然必须在我们自己的内部存储库中检查所有项目依赖项.我正在考虑让 maven 下载构建在我们的 jenkins 中的依赖项目的 jar 文件,而不必处理原始项目源代码以及哪些项目我仍然必须签入我的工作区,所以我的主要项目可以构建.
  • 另外,如何添加在 maven 存储库中找不到的独立 jar 文件?每个人都必须使用该 jar 文件进行 maven 安装吗?
  • 你走在正确的轨道上:要么一起检出所有内部项目,因此 Maven 可以一起构建它们(使用多模块 POM)。或者您构建一个项目,将其发布到您选择的 Maven 存储库(可能是公司内部的,如在另一个答案中),然后让其他构建再次从那里获取 jar。对于“仅限 jar”库,您可以将它们添加到为它们提供虚拟 id 的存储库中:maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
猜你喜欢
  • 2018-02-23
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-02
  • 2021-04-25
相关资源
最近更新 更多