【问题标题】:maven publish jar to .ivymaven 将 jar 发布到 .ivy
【发布时间】:2016-02-29 00:30:52
【问题描述】:

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

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

【问题讨论】:

    标签: scala maven sbt


    【解决方案1】:

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

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

    您可以使用ant task in the maven build 来实现这一点。

    不过我想建议不同的角度:

    让 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 repo(不要'如果它确实解决了您的问题,请不要忘记接受答案... ;)
    • 谢谢!其实我是在下面回复这个评论的,我一开始是用绝对路径,后来也试过mavelLocal,但是都不行。
    • 在您对 github 问题的评论中,您提到您使用的是 0.13.7,我强烈建议您升级到 0.13.9。我发现大多数插件都可以正常工作,但 0.13.8 和 0.13.9 有许多重要的修复(测试内存泄漏、解析器内容等)问题本身已标记为里程碑 0.13.8 的关闭...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2012-02-10
    相关资源
    最近更新 更多