4

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

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

4

3 回答 3

4

忘记这些东西被称为“Maven Repositories”的事实,虽然 Maven 对存储库结构有一定的期望,但同样的结构也是几乎所有其他 Java 构建工具所使用的结构。将这些东西视为具有坐标的工件的通用存储:groupId、artifactId、version、qualifier。

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

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

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

于 2012-06-18T12:47:40.837 回答
1

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

如果这对您不起作用,您将学习如何实现一些 Maven。

于 2012-06-12T20:12:57.750 回答
1

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

由于 Artifactory 完全可以通过 HTTP 访问,因此任何可以发送 GET 和 PUT 查询(分别用于解析和发布)的构建工具都可以与它对话。一个常见的用例是使用 curl,但 Artifactory 还与领先的 CI 工具具有很好的 OOTB 集成,以便于基于配置的解析和发布。作为有关使用 Artifactory 运行非 Java/非 Maven 构建的一般信息,您可能会发现这篇博文很有帮助。

于 2012-06-13T06:25:52.307 回答