【发布时间】:2016-12-31 17:52:48
【问题描述】:
我认为这里最令人惊讶的是,这个功能默认嵌入到 Maven 和 Gradle 中,然而,在 Ant/Ivy 环境中没有它存在的痕迹(你自己看看!)。
我继承了一套使用 Ant/Ivy 作为构建/依赖系统的 JVM 组件。每个组件之间都有很多依赖关系,这意味着对其中一个组件进行更改通常会产生连锁反应,需要您更新 Ivy 依赖项并发布新版本的上游依赖项。
维护这些项目的旧团队通过将快照 jar 发布到快照存储库来处理本地开发。 我想用一个新的范式替换这个范式,将快照发布到本地 Ivy 缓存/从本地 Ivy 缓存中解析。
我能够找到this very similar question,但发现答案有点缺乏细节(特别是完全拼接在一起的代码 sn-p),部分原因是该问题缺少任何具体的代码示例。所以我在这里创建了一个SSCCE 并推送了2个GitHub repos:
- fizzbuzz-model,一个定义数据模型的Java库(一些无意义的POJO)
-
fizzbuzz-app,一个简单的可执行 jar,依赖
fizzbuzz-model作为依赖项
我在这里寻找的是确切(即实际代码,不是伪代码)更改(可能是build.xml,@ 987654328@ 或 ivy-settings.xml,或全部三个!)这将允许我使用以下本地开发/测试周期:
- 我对@987654330@ 进行更改并将更改本地发布到Ivy 缓存,最好是作为快照版本(例如
1.0.0-SNAPSHOT或类似版本) - 从
fizzbuzz-app根目录内部,我运行ant resolve从缓存快照中提取这些更改 - 现在我可以在
fizzbuzz-app中使用这些更改
虽然不是硬性要求,但我希望不必手动管理版本号。也就是说,当我在本地发布fizzbuzz-model 时,它覆盖 具有相同版本的当前二进制文件(再次,如fizzbuz-model-1.0.0-SNAPSHOT.jar),而不是将内部版本号增加到fizzbuzz-model-1.0.1-SNAPSHOT.jar 或类似的) .这样我在本地测试时所要做的就是发布fizzbuzz-model并解析fizzbuzz-app。
目前,当我发布fizzbuzz-model 时,出现以下错误:
/Users/myuser/workspace/fizzbuzz-model/build.xml:52: impossible to publish artifacts for hotmeatballsoup#fizzbuzz-model;1.0: java.io.IOException: missing artifact hotmeatballsoup#fizzbuzz-model;1.0.0-SNAPSHOT!fizzbuzz-model.pom
at org.apache.ivy.core.publish.PublishEngine.publish(PublishEngine.java:225)
at org.apache.ivy.core.publish.PublishEngine.publish(PublishEngine.java:172)
要在本地复制,请克隆这两个项目并按照它们的自述文件,从 fizzbuzz-model 开始。 谁能发现我哪里出错了?随时在这里回答和/或提交 PR,无论你喜欢哪一个! 谢谢!
【问题讨论】:
-
为什么投反对票?这个问题是关于主题的,不是骗人的,显示研究并且是SSCCE的教科书定义。
-
我不是投反对票的人,但您没有确认我的回答,也没有处理您要求的拉取请求。