Миграция из Maven в SBT - PullRequest
39 голосов
/ 04 июня 2010

Как вы знаете, SBT в некотором роде совместим с Maven - SBT распознает простые POM Maven и может использовать указанные в них зависимости и репозитории. Однако SBT wiki говорит, что, если в определении проекта SBT указана встроенная зависимость, POM будет игнорироваться (поэтому использование обоих в этом случае невозможно):

Конфигурации Maven и Ivy (pom.xml) и ivy.xml) игнорируются, когда встроены объявления зависимостей присутствуют.

Кто-нибудь знает, существует ли какой-либо конвертер из определения проекта Maven POM в SBT (перевод XML POM в код Scala определения проекта)? Я подумываю над написанием такого скрипта (который поможет перенести мои старые проекты Scala / Maven в SBT), но сначала хочу узнать, существует ли эта функциональность.

Ответы [ 8 ]

30 голосов
/ 04 июня 2010

Конвертер - слишком сильный термин для этого хака, но я написал скрипт для блока <dependencies> и вывода deps в стиле SBT: http://gist.github.com/388334

18 голосов
/ 25 октября 2012

У всех приведенных выше советов была проблема с тем, что свойства не были решены, и, поскольку мы интенсивно используем управление зависимостями от родительских poms, я надеялся на что-то, что действительно могло бы полностью понять maven. Я собрал упрощенный скриптлет, который выводит зависимости из 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"
5 голосов
/ 04 июня 2010

Мне не удалось найти недокументированную возможность в SBT, которая позволяет делать такие преобразования (POM -> определение проекта), и я придумал написать очень простой скрипт , который создает Файл сборки SBT с репозиториями / зависимостями от POM .

Если вам просто нужно преобразовать зависимости Maven / XML в SBT / Scala, вы можете использовать этот скрипт , предоставляемый @ retronym

4 голосов
/ 02 июня 2014

Я написал mvn2sbt проект для преобразования проекта Java Java в проект SBT.

4 голосов
/ 06 февраля 2012

Не конвертер, а пошаговое руководство по переносу многомодульного проекта из Maven в SBT можно найти здесь .

Неплохо для понимания того, что на самом деле происходит, и для обеспечения достаточного контроля над процессом.

3 голосов
/ 13 апреля 2011

Взгляните на проект CodaHale Maven-SBT в Git-Hub. По сути, CodaHale вытеснил IVY из SBT и заменил его на Maven, так что связанные с POM задачи должны быть более совместимыми / гибкими.

1 голос
/ 31 мая 2015

У меня была та же проблема, и я создал решение в javascript, к которому вы можете обратиться здесь: http://www.maven -to-sbt.de /

1 голос
/ 28 февраля 2013

Я написал еще один хак для конвертации между pom.xml и build.sbt. Это полезно для преобразования большей части того, что мне интересно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...