关于 scala:maven 将 jar 发布到 .ivy | 珊瑚贝

maven publish jar to .ivy


我有一个 maven 项目,它会生成一个 jar 文件,我想在另一个 sbt 项目中使用它。有什么方法可以将 jar 文件发布到 .ivy 而不是 .m2?

我尝试将jar文件放在sbt项目下的libs中,但它不起作用。并使用 mvn 将 jar 安装到 .m2 也不起作用。


据我了解,您有一个 Maven 项目和一个 SBT 项目。 SBT 项目取决于您的 maven 项目生成的工件。

您询问如何将 maven 生成的工件发布到您的本地 .ivy,以便 SBT 项目可以获取它。

您可能可以在 maven 构建中使用 ant 任务来实现这一点。

不过我想建议不同的angular:

让 sbt 项目了解本地 .m2

只需将 resolvers += Resolver.mavenLocal 添加到您的 sbt 构建定义中,如果您不想污染主构建定义,请将该行添加到主构建定义旁边的 local.sbt 文件中。 SBT 合并在项目根目录中找到的所有 .sbt 文件。

发布到受控存储库

如果您希望构建可以在本地计算机之外轻松复制,这将特别有用。
这个想法只是将 maven 项目发布到一个实际的服务器,要么是用于专有代码的内部 nexus/artifactory 服务器,要么是公共工件托管(例如 bintray)
我一直使用 bintray 发布开源项目的自定义构建,同时等待 PR 合并到 master 并发布官方构建。

将您的工件服务器作为解析器添加到 SBT 项目,您就可以开始了 :)

  • 感谢您的回复。你的建议是解决我的问题的方法。前段时间,我一开始选择第一种方法,这行得通,但是我最近修改了maven项目,再次发布到本地m2,现在sbt找不到它,它尝试在公共repos中找到,这是很奇怪,因为我什么都没改变,所以也许我将它发布到本地 .ivy2 可以解决这个问题。这是 sbt 中的一个问题:github.com/sbt/sbt/issues/321。
  • 我会尝试第二种方法,我只是不想配置一个nexus服务器,看来bintray是一个好方法。谢谢!
  • 关于链接的问题,请查看此评论 github.com/sbt/sbt/issues/321#issuecomment-159500317 似乎包含的 mavelLocal 快捷方式在最近的 SBT 版本中可能不起作用,您需要定义 .m2 存储库手动(如果它确实解决了您的问题,请不要忘记接受答案……;)
  • 谢谢!其实我是在下面回复这个评论的,我一开始是用绝对路径,后来也试过mavelLocal,但是都不行。
  • 在您对 github 问题的评论中,您提到您使用的是 0.13.7,我强烈建议您升级到 0.13.9。我发现大多数插件都可以正常工作,但 0.13.8 和 0.13.9 有许多重要的修复(测试内存泄漏、解析器内容等)问题本身标记为里程碑 0.13.8 已关闭…
  • 感谢您的指出。我会尝试看看这是否可行。
  • 最后一件事,如果由于某种原因您的网络限制对某些存储库的访问,您应该查看自定义 sbt.boot.properties scala-sbt.org/release/docs/Launcher-Configuration.html 或强制将 dns 解析为 localhost 以便快速失败;)
  • 让我们在聊天中继续这个讨论。


来源:https://www.codenong.com/33929695/

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?