从Maven迁移到SBT

如您所知,SBT与Maven以某种方式兼容 – SBT可以识别简单的Maven POM,并可以使用它们中指定的依赖项和存储库。 然而, SBT维基说,如果在SBT项目定义中指定了内联依赖关系,POM将被忽略(所以在这种情况下使用两者是不可能的):

当内联依赖声明存在时,Maven和Ivyconfiguration(pom.xml和ivy.xml)将被忽略。

有谁知道,如果从Maven POM到SBT项目定义的任何一种转换器存在(将POM的XML转换为项目定义Scala代码)? 我正在考虑编写这样的脚本(这将有助于将我的旧Scala / Maven项目迁移到SBT),但首先要知道,如果这个function已经存在。

对于这个黑客来说,转换器是一个非常强大的术语,但是我写了一个脚本来获取一个<dependencies>块并输出SBT风格的代码: http : //gist.github.com/388334

上面的所有提示对我来说都有问题,那就是属性没有解决,而且当我们大量使用来自父类的依赖pipe理时,我希望能够真正理解maven。 我一起提供了一个简单的scriptlet,它输出maven的依赖关系,只需要顶级的项目,然后为组,工件,版本和范围做一个简单的正则expression式(工件types被忽略)

 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" 

我没有在SBT中find一个可以进行这种转换(POM – >项目定义)的未公开的function,并且编写了一个非常简单的脚本 ,用于从POM创build带有Repos /依赖关系的SBT构build文件 。

如果您只需要将Maven / XML依赖项转换为SBT / Scala,则可以使用由@retronym提供的此脚本

不是转换器,但是可以在这里find将多模块项目从Maven移动到SBT的分步指南。

非常了解真正发生的事情,并确保您有相当程度的控制过程..

我为转换java Maven项目写了mvn2sbt项目到sbt项目。

在Git-Hub上看看CodaHale的Maven-SBT项目。 基本上,CodaHale已经从SBT换出了IVY,并用Mavenreplace了它,所以POM相关任务应该更加兼容/灵活。

我又写了一个黑客来在pom.xmlbuild.sbt之间进行转换。 这对于转换我感兴趣的大部分内容非常有用。

https://gist.github.com/schmmd/5050790

我只是有同样的问题,并创build了一个JavaScript解决scheme,您可以访问这里: http : //www.maven-to-sbt.de/