从Maven访问自定义(非Java)工件库

时间:2012-06-12 20:10:22

标签: c++ c maven repository

我正在寻找一种使用Maven访问自定义非Java工件库的方法。我们在Windows共享上有一个工件存储库(或多或少)包含一堆zip文件(包含本机可执行文件,头文件等)。这些可以通过Ruby脚本访问,该脚本可以根据需要实现/解压缩这些工件。还有一些工件没有存储在磁盘上,但是从其他地方实现(例如Subversion)。

我希望能够将这些存储库集成到Maven构建中,以便(例如)集成测试可以使用本机工件中的.exe和.dll文件。我看过Nexus和Artifactory,但很难说它们对这种情况有多好。关于“自定义布局”的大多数文档似乎都假设我们正在讨论某种类型的Java工件。

3 个答案:

答案 0 :(得分:4)

忘记这些东西被称为“Maven Repositories”,而Maven对存储库结构有一定的期望,这个结构也是几乎所有其他Java构建工具所使用的。将这些事物视为具有坐标的工件的常规存储:groupId,artifactId,version,qualifier。

一个好的存储库管理器并不关心您在此存储库中存储的内容。它可以是ZIP文件,EXE,无论你想存储什么。它所关心的是工件存储在此存储库结构中。使用存储库管理器时最终得到的结果是可以通过这些坐标寻址的工件集合。

我使用存储库管理器执行许多与Java无关的操作,包括存储在部署过程中使用的ZIP文件。我使用curl访问我的存储库管理器。在这种情况下,它可以被视为一个简单的REST可访问位桶,它将一些结构应用于您存储在其中的文件。

(另外,请注意我的答案不是Artifactory或Nexus的营销。; - )

答案 1 :(得分:1)

这里最简单的解决方案是通过HTTP公开您的存储库,以便恰好具有标准的Maven布局和元数据。

如果这对您不起作用,您将学习如何实现Maven的某些部分。

答案 2 :(得分:1)

Artifactory不与Maven绑定,可以存储和搜索任何二进制文件,无论布局如何(只有在您希望Artifactory提取有关您的工件的模块信息时才需要自定义布局,用于版本自动清理,交叉布局转换等。)。

由于Artifactory只能通过HTTP访问,任何可以发送GET和PUT查询的构建工具(分别用于解析和发布)都可以与它通信。 一个常见的用例是使用curl,但Artifactory还具有与领先CI工具的良好OOTB集成,可轻松进行基于配置的解析和发布。 您可能会发现this blog post有助于作为有关使用Artifactory运行非Java /非Maven构建的一般信息。