使用SBT构建纯Java项目

时间:2011-11-28 13:12:20

标签: java build sbt

历史上我使用Ant + Ivy或Maven来构建我的Java项目。 我现在正在研究基于非xml的解决方案。

Gradle可以编译,jar和发布我的项目,几乎没有问题。

我可以用SBT做同样的事吗? 如果是这样,您是否可以提供一个使用sbt构建仅Java项目的简单示例。

4 个答案:

答案 0 :(得分:29)

是的,这完全有可能。没有什么可以设置的,一个小的build.sbt文件应该可以做到这一点,例如:

organization := "your.group.id"

name := "Your project"

version := "1.0-SNAPSHOT"

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

从命令行运行sbt package

答案 1 :(得分:25)

对我来说,它还有助于从生成的工件路径中删除scala版本信息,如this answer中所述。您还希望从您发布的任何pom或ivy文件中删除Scala库作为依赖项。

以下是您需要的内容:

crossPaths := false
autoScalaLibrary := false

答案 2 :(得分:6)

是的,你可以。以下是配置示例:

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,因为您将拥有很好的功能,例如增量测试甚至增量运行。如果您有依赖项并且想要创建胖jar(可执行文件),还可以考虑添加sbt-assembly插件。

答案 3 :(得分:2)

对于Xerial blog的纯Java源代码,build.sbt的一个很好的例子包括如何发布没有Scala版本标记的Maven样式工件。