Использование SBT для создания чистого Java-проекта
Исторически я использовал Ant + Ivy или Maven для создания моих проектов Java.
Теперь я рассматриваю решения, не основанные на xml.
Gradle может компилировать, создавать jar и публиковать мой проект с несколькими проблемами.
Могу ли я сделать то же самое с SBT?
Если да, можете ли вы предоставить простой пример использования sbt для создания только проекта java.
Ответы
Ответ 1
Да, это вполне возможно. Ничего, чтобы установить действительно, небольшой файл build.sbt должен сделать трюк, что-то вроде:
organization := "your.group.id"
name := "Your project"
version := "1.0-SNAPSHOT"
libraryDependencies ++= Seq( <any normal jar deps> )
И запустите sbt package
из командной строки.
Ответ 2
Для меня это также помогло немного удалить информацию о версии scala из созданных путей артефактов, как описано в этом ответе. Вы также захотите удалить библиотеку scala в качестве зависимости от любого опубликованного файла pom или ivy.
Здесь вам понадобится:
crossPaths := false
autoScalaLibrary := false
Ответ 3
Что вы можете. Вот пример конфигурации:
name := "myName"
version := "0.1"
organization := "org.myorganization"
javacOptions in (Compile, compile) ++= Seq("-source", "1.8", "-target", "1.8", "-g:lines")
crossPaths := false // drop off Scala suffix from artifact names.
autoScalaLibrary := false // exclude scala-library from dependencies
Подводя итоги. Я люблю SBT, но я чувствовал необходимость написать полную сборку со всеми хитрыми частями использования ее для Java. Обратите внимание, что эта настройка может быть лучше, чем maven, потому что у вас будут хорошие функции, такие как инкрементное тестирование или даже инкрементные прогоны. Также рассмотрите возможность добавления плагина sbt-assembly
, если у вас есть зависимости и вы хотите создать толстые фляги (исполняемые файлы).
Ответ 4
Вот хороший пример build.sbt для чистых источников Java в Xerial blog, в том числе о том, как публиковать артефакты в стиле Maven без Scala тег версии.