gpt4 book ai didi

java - Ivy:在本地解析和发布 JAR

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:28:37 25 4
gpt4 key购买 nike

我们已经使用 Ivy 几个月了,并且在办公室的 Web 服务器上拥有我们自己托管的“Ivy Repo”。我们所有的项目都配置为转到此 repo 以解决依赖关系。

我们有几个“通用”类型的 JAR,供我们的许多项目使用。正因为如此,并且因为我们只有 1 个 repo 协议(protocol),我们发现来自以下场景的大量丑陋开销:

  • 开发人员的任务是向项目 1 添加功能(依赖于 Common jar)
  • 在开发项目 1 的过程中,开发人员意识到他/她需要对 Common jar 进行更改
  • 进行了常见的 jar 更改
  • 普通jar都要经过code review和正常的code promotion
  • Build master 发布新的Common jar
  • 既然 Common jar 已经更新,项目 1 可以恢复开发

这对我们的团队来说变得荒谬和痛苦。

对我来说,显而易见的解决方案是在每个项目中提供 ant 目标,允许开发人员在本地发布/解析(到他们的文件系统或从他们的文件系统)。这样他们就可以将 Common jar 打破 9 种方式到星期天,而不会在等待 Common 发布时浪费 2 - 4 天。这样,开发人员对 Project 1 和 Common 都进行了本地更改,并且代码同时通过了我们的升级过程。

我知道 Ivy 可以做到这一点,但我对它太陌生了,我什至不知道从哪里开始。

目前,我们为所有项目使用全局 ivy.settings 文件。在设置文件中,我们使用一个链式解析,其中包含 1 个 url 解析器,它连接到我们的“ivy repo”。

相信以下是唯一必要的更改,但我不是 100% 确定:

  • ivy.settings 中,我们需要添加一个本地文件系统解析器 before 调用 url 解析器;通过这种方式,我们在继续使用 ivy 存储库(网络服务器)之前检查本地文件系统的依赖关系
  • 使用允许本地缓存发布的选项配置每个项目的 ivy.xml
  • 调整 Ant 构建,使其具有一个本地发布 目标,该目标可以执行上述选项

相信这些更改将使我们能够:(1) 在查找 Web 服务器之前始终在本地查找依赖项,(2) 作为构建选项(目标)在本地发布。

如果这不是真的,或者如果我遗漏了任何步骤,请指教!否则,我可能可以从 Ivy 文档中找出如何添加文件系统解析器,但我不知道如何让 publish-locally 目标工作。有任何想法吗?提前致谢!

最佳答案

我也更喜欢 Marks 方法。

至于publish-locally,您可以告诉发布任务使用哪个解析器(resolver="local")。这样它就可以发布到本地文件系统或任何定义的解析器。

<ivy:publish 
resolver="local"
overwrite="true"
revision="${project.version}">
<artifacts pattern="dist/[artifact]-[revision].[type]" />
</ivy:publish>

如果您使用链式解析器,您应该设置 returnFirst="true" 以便在本地找到某些内容时解析将停止。

关于java - Ivy:在本地解析和发布 JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8865187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com