从 Maven 迁移到 SBT
Posted
技术标签:
【中文标题】从 Maven 迁移到 SBT【英文标题】:Migrating from Maven to SBT 【发布时间】:2011-02-27 16:03:22 【问题描述】:如您所知,SBT 在某些方面与 Maven 兼容——SBT 识别简单的 Maven POM,并可以使用其中指定的依赖项和存储库。但是,SBT wiki 表示,如果在 SBT 项目定义中指定了内联依赖项,则 POM 将被忽略(因此在这种情况下无法同时使用两者):
Maven 和 Ivy 配置(pom.xml 和 ivy.xml) 在内联时被忽略 存在依赖声明。
有谁知道,是否存在从 Maven POM 到 SBT 项目定义的任何类型的转换器(将 POM 的 XML 转换为项目定义 Scala 代码)?我正在考虑编写这样的脚本(这将有助于将我的旧 Scala/Maven 项目迁移到 SBT),但首先想知道这个功能是否已经存在。
【问题讨论】:
【参考方案1】:可以在here 找到将多模块项目从 Maven 移动到 SBT 的分步指南,而不是转换器。
非常有助于了解实际发生的情况并确保您对流程有相当程度的控制权..
【讨论】:
该链接已失效:(【参考方案2】:我写了 mvn2sbt 项目,用于将 java maven 项目转换为 sbt 项目。
【讨论】:
非常酷 - 一个很好的启动和(几乎)运行的方法!【参考方案3】:我刚刚遇到了同样的问题,并在 javascript 中创建了一个解决方案,您可以在此处访问: http://www.maven-to-sbt.de/
【讨论】:
【参考方案4】:我又写了一个技巧来在pom.xml
和build.sbt
之间进行转换。它对于转换我感兴趣的大部分内容很有用。
https://gist.github.com/schmmd/5050790
【讨论】:
【参考方案5】:Converter 对于这个 hack 来说太强了,但我写了一个脚本来获取 <dependencies>
的块并输出 SBT 样式的 deps:http://gist.github.com/388334
【讨论】:
不错的技巧!我在考虑这种东西(+属性和回购的转换)。【参考方案6】:上面的所有提示对我来说都存在属性未解决的问题,并且当我们大量使用父 pom 中的dependencyManagement 时,我希望得到一些实际上可以完全理解 maven 的东西。我拼凑了一个简单的 scriptlet,它从 maven 输出依赖项,只获取***项目,然后为组、工件、版本和范围做一个简单的正则表达式(工件类型被忽略)
mvn dependency:tree | grep "] +" | perl -pe 's/.*\s([\w\.\-]+):([\w\.\-]+):\w+:([\w\.\-]+):(\w+).*/libraryDependencies += "$1" % "$2" % "$3" % "$4"\n /'
我将它直接传送到 project/build.sbt。示例输出是(记得在 sbt 行之间保留空格)
libraryDependencies += "org.springframework" % "spring-core" % "3.1.0.RELEASE" % "compile"
libraryDependencies += "se.scalablesolutions.akka" % "akka-actor" % "1.3.1" % "compile"
libraryDependencies += "se.scalablesolutions.akka" % "akka-spring" % "1.3.1" % "compile"
【讨论】:
非常有帮助,很好【参考方案7】:在 Git-Hub 上查看 CodaHale 的 Maven-SBT 项目。基本上,CodaHale 已将 IVY 从 SBT 中替换为 Maven,因此与 POM 相关的任务应该更加兼容/灵活。
【讨论】:
链接好像失效了,请用这个:github.com/rossabaker/maven-sbt【参考方案8】:我没有设法在 SBT 中找到允许进行此类转换(POM -> 项目定义)的未记录功能,并且想出了编写 a very simple script 来创建 SBT build file 以及来自 @987654323 的 repos/dependencies @。
如果你只需要将 Maven/XML 依赖转换成 SBT/Scala,你可以使用@retronym提供的this script
【讨论】:
以上是关于从 Maven 迁移到 SBT的主要内容,如果未能解决你的问题,请参考以下文章