【问题标题】:Gradual switch from Maven to SBT从 Maven 逐渐切换到 SBT
【发布时间】:2014-12-10 09:50:21
【问题描述】:

目前我们所有的项目都是在 Windows 上使用 Maven 构建的。我们没有成功地使增量编译的代码在运行时工作(50% 的情况下它因某种错误而失败),所以为了从暖编译器和(也许?)正常工作的增量编译中受益,我们考虑迁移到SBT。然而,目前我只有一个 sprint 要做,我害怕把所有的鸡蛋放在一个篮子里,然后尝试在一个 sprint 中迁移整个项目。我需要找到一种方法使这种变化逐渐进行,这样我就可以一次推进一个模块。所以这里是主要问题:

  • 如何在 Maven 构建中包含 SBT 模块(反之亦然,在 SBT 中有我的“父级”,但部分模块仍在使用 Maven 构建)?
  • 我们如何仍能从 IDE 支持(当前为 IntelliJ 13)中受益,例如更新 pom / Build.scala 更改索引、任务和目标调用等?

非常感谢任何关于该主题的建议。

【问题讨论】:

  • 您将需要某种插件来实现这一点 - 无论是在 sbt 还是在 maven 端。快速谷歌搜索发现github.com/shivawu/sbt-maven-plugingithub.com/sbt/sbt-pom-reader
  • 增量编译应该是编译器的事情。我不认为 SBT 会有所帮助,但如果你尝试,祝你好运。据我所知,您将失去 IDE 支持。我建议为 SBT 和 Maven 设置单独的项目,并通过正常的 maven 存储库机制依赖它们(您可以将本地 maven 存储库添加为 SBT 解析器)。您仍然需要两个不同的构建命令,但是其中一个的项目可以依赖于另一个,这很重要。
  • @Imm 关于增量编译 - 是的,我们可能不会赢得任何东西,但这是逐渐改变的另一个原因,所以我们将让一个模块与 sbt 一起工作,然后根据性能决定是否应该进步。我们确实考虑过将项目分开的选项,但这有点棘手,因为我们在服务器端有一个大模块和一个小模块,仅通过 .m2 连接来处理它们并不方便,并且迁移两者风险仍然很大。
  • 那些插件的描述看起来很有希望,但它们似乎处于“半衰期”状态。如果有人愿意分享他使用它们的经验,那可能会让人放心。

标签: scala maven intellij-idea sbt


【解决方案1】:

最终我们完成了转换并且不后悔。编写 SBT 任务更容易,因为它是纯 Scala。 增量编译现在可以工作了(过去在 Maven 中使用 java.lang.InternalError: Enclosing method not found 部署到 JBoss 时会失败)并且构建时间明显更快。不幸的是,我们没有找到逐步转换的方法,所以我们不得不冒险。 增量编译的 jar 仍然不起作用,但 Typesafe 即将在 2.11.6 中修复此问题

【讨论】:

    猜你喜欢
    • 2011-07-01
    • 2011-02-27
    • 2014-01-30
    • 2014-05-11
    • 2021-08-08
    • 2014-07-21
    • 1970-01-01
    • 2016-04-29
    • 2012-08-15
    相关资源
    最近更新 更多