【发布时间】:2019-08-13 10:07:18
【问题描述】:
我需要在 Maven 上构建一个 Java 项目。我正在开发一个构建在 Nexus 存储库中的 Jenkins 管道上的多模块 Maven 项目。我有一些在 Nexus 存储库中不可用的库。我无法手动上传库。我正在管道上构建这个项目。
我做了什么:
我在 Git hub 存储库的项目根目录中创建了一个名为 jars 的文件夹,并手动放置了所有在 Nexus 上不可用的 jar 文件。在依赖项中,我像在依赖项参数中一样引用了所有这些本地 jar。
在存储库中,我给出了 jar 文件夹的 git hub repo 的 URL。詹金斯无法选择图书馆。我收到以下错误:依赖项:依赖项版本 - 构建错误 - 无法为未发布的依赖项构建,并且我收到 jars 文件夹中所有 jar 的错误。我尝试将 jars 文件夹放在 src/main/resources 中,但仍然出现相同的错误。
如何引用这个 jar 文件夹以便 Jenkins Pipeline 可以使用它?我无法控制所涉及的 Jenkins / Scripts。我是一名开发人员,只是在 Pipeline 上构建它。
P.S:我无法访问我公司的互联网来发布 POM 或构建失败错误。
添加更多细节:
它建立在管道上。有两个存储库:Nexus 2 和 Nexus 3。特定库在 Nexus 3 上不可用,并且管道仅在 Nexus 3 上构建。
我们已提出上传这些库的请求,但不会很快实现。 Jenkins Pipelines 从 Github 存储库中获取文件,并使用 Maven 构建 Java 项目。我无法控制管道或 Jenkins 中的任何脚本。
我们下载了所有不可用的库并将其放在 git hub 的文件夹中。流水线中有 4 个周期。 Github 周期/Jenkins 周期/部署周期/发布周期。
Github Cycle:在这个循环中,它遵循三个阶段。它从代码中获取代码,构建它。它构建快照并将其上传到 Nexus 存储库。在这两个阶段中,它能够通过从 GitHub 获取代码并构建它并生成工件来成功构建。第三阶段:在这个阶段真的很奇怪,在这个阶段它再次构建和构建失败,引用了在 git hub 中上传的 jar 的非发布依赖项的代码。
这可能是什么原因:当它可以在 Github 周期的前两个阶段构建并在第三阶段因未发布依赖项的构建失败而失败时。
管道的设计方式使其仅在 Nexus 3 上查看并在周期的每个阶段构建。
【问题讨论】:
-
然后与管理 Nexus 的人员交谈。将您的工件放入 Nexus 是正确的做法。 Git 不适合托管依赖项。
-
已请求在 Nexus 3 中添加这些库,但短期内不会发生。它正在管道上运行。我无权设置自定义存储库管理器。
-
然后和你的老板谈谈,告诉他/她你不能添加你想添加的库,因为 Nexus 人不添加它们。构建规避公司限制的方法不是stackoverflow的目的。要么你的老板给问题施加压力,让你尽快拿到图书馆,要么你需要在没有图书馆的情况下处理你的问题。