Используйте SBT для создания чистого проекта Java - PullRequest
36 голосов
/ 28 ноября 2011

Исторически я использовал Ant + Ivy или Maven для создания своих Java-проектов. Сейчас я смотрю на не основанные на XML решения.

Gradle может компилировать, архивировать и публиковать мой проект с небольшими проблемами.

Могу ли я сделать то же самое с SBT? Если да, можете ли вы привести простой пример использования sbt для создания проекта только на Java.

Ответы [ 4 ]

29 голосов
/ 28 ноября 2011

Да, это вполне возможно. Ничего не настраивать на самом деле, небольшой файл build.sbt должен помочь, что-то вроде:

organization := "your.group.id"

name := "Your project"

version := "1.0-SNAPSHOT"

libraryDependencies ++= Seq( <any normal jar deps> )

И запустить sbt package из командной строки.

25 голосов
/ 10 января 2012

Для меня это также немного помогло удалить информацию о версии scala из сгенерированных путей артефактов, как описано в этот ответ .Вы также захотите удалить библиотеку Scala как зависимость от любого файла pom или ivy, который вы публикуете.

Вот что вам нужно:

crossPaths := false
autoScalaLibrary := false
6 голосов
/ 01 ноября 2015

Да, вы можете.Вот пример конфигурации:

name := "myName"
version := "0.1"
organization := "org.myorganization"

javacOptions in (Compile, compile) ++= Seq("-source", "1.7", "-target", "1.7", "-g:lines")

crossPaths := false // drop off Scala suffix from artifact names.
autoScalaLibrary := false // exclude scala-library from dependencies

Подведение итогов. Мне нравится SBT, но я чувствовал необходимость написать все хитрые части [которые я знаю] при использовании его для Java.Обратите внимание, что эта настройка может быть лучше , чем maven, потому что у вас будут хорошие функции, такие как инкрементное тестирование или даже инкрементные прогоны.Также рассмотрите возможность добавления плагина sbt-assembly, если у вас есть зависимости и вы хотите создать толстые фляги (исполняемые файлы).

2 голосов
/ 03 декабря 2014

Хороший пример build.sbt для исходных текстов на Java в Xerial blog , включая описание публикации артефактов в стиле Maven без тега версии Scala.

...