如何使maven项目可以为客户构建

时间:2011-07-29 09:03:35

标签: maven-2 maven nexus

我们有一个项目,应该由客户使用maven构建。它有一些开源的依赖关系,它们是mavenized(没问题),一些不是mavenized,专有的东西(oracle jdbc驱动程序)和一些内部的东西。

到目前为止,除了第一个类别与项目本身打包在一个本地存储库(存储库中包含file://项目pom.xml中指定的path-in-project-folder)之外,我们已经拥有了所有内容。

我们很乐意将这些项目移出项目,因为我们也将在其他项目中使用它们。目前,我们计划将nexus用作内部maven存储库。

最好的做法是为客户提供这样的依赖/ maven存储库,以便他可以继续构建项目。

到目前为止的想法:

  • 客户也设置了一个nexus存储库,我们以某种方式将所有这些非公共依赖项部署到他的存储库(如镜像)
  • 我们提供非公共依赖项的“哑”转储/快照,客户将此快照作为存储库添加到此settings.xml中(但这怎么可能)。
  • 使我们的内部nexus repo可供客户构建服务器使用(在我们的案例中不是选项)

我想知道其他人如何解决这些问题。

谢谢!

2 个答案:

答案 0 :(得分:1)

当然,托管某种存储库是一种简单的选择,只要您可以满足正常运行时间/带宽/身份验证要求。

如果您要发送物理工件,您会发现此模式很有用:https://brettporter.wordpress.com/2009/06/10/a-maven-friendly-pattern-for-storing-dependencies-in-version-control/

依赖于在源代码管理中创建的存储库 - 如果您希望项目构建存储库,请考虑以下内容:http://svn.apache.org/viewvc/incubator/npanday/trunk/dist/npanday-repository-builder/pom.xml?revision=1139488&view=markup(使用程序集插件构建存储库的功能)。

基本上,通过构建存储库,您可以使用源代码发送它,并使用file://从构建中引用它。

答案 1 :(得分:0)

有两种选择:

  1. 准确记录您需要编译哪些工件而不是 可通过Maven Central获取
  2. 实施Nexus并使用Nexus进行导出以进行导出 对客户而言,他们需要对其进行导入。我不确定 如果你来许可证问题。
  3. 我认为你已经拥有了一个Repository Manager,但它读起来就像你没有。