开发者

Migrating from Maven to SBT

As you know, SBT is compatible with Maven in some way -- SBT recognizes simple Maven POMs and can use dependencies and repositories specified in them. However, SBT wiki says that, if inline dependency is specified in SBT project definition, POM will be ignored (so using both in this case is impossible):

Maven and Ivy configurations (pom.xml and ivy.xml) are ignored when inline dependency declarations are present.

Does anyone know, if any kind of converter from Maven POM to SBT project definition exists (translati开发者_如何学JAVAng POM's XML into project definition Scala code)? I'm considering writing such script (that will help to migrate my old Scala/Maven projects to SBT), but want to know first, if this functionality already exists.


Converter is far too strong a term for this hack, but I wrote a script to take a block of <dependencies> and output SBT style deps: http://gist.github.com/388334


All the tips above had the issue for me that properties were not resolved, and as we make heavy use of the dependencyManagement from parent poms, I was hoping for something that actually could fully understand maven. I whipped together a simplistic scriptlet that outputs the dependencies from maven and just takes the top level items and then does a simple regex for the group, artifact, version, and scope (the artifact type is ignored)

mvn dependency:tree | grep "] +" | perl -pe 's/.*\s([\w\.\-]+):([\w\.\-]+):\w+:([\w\.\-]+):(\w+).*/libraryDependencies += "$1" % "$2" % "$3" % "$4"\n /' 

I piped this directly to project/build.sbt. The sample output is (remember to keep empty spaces between sbt lines)

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"


Not a converter, but a step-by-step guide for moving a multimodule project from Maven to SBT can be found here.

Quite nice for understanding what actually happens and ensuring you have a fair amount of control over the proces..


I didn't manage to find an undocumented capability in SBT that allows to make such conversions (POM -> project definition), and have came up with writing a very simple script that creates SBT build file with repos/dependencies from POM.

In case you just need to convert Maven/XML dependencies into SBT/Scala, you can use this script provided by @retronym


I wrote mvn2sbt project for convertion java maven project to sbt project.


Take a look a CodaHale's Maven-SBT project over at Git-Hub. Basically, CodaHale has swapped out IVY from SBT and replaced it with Maven, so POM related tasks should be be more compatible/flexible.


I wrote yet another hack to convert between pom.xml and build.sbt. It's useful for converting the bulk of what I'm interested in.

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


I just had the same problem and created a solution in javascript that you can access here: http://www.maven-to-sbt.de/

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜