历史上我使用Ant + Ivy或Maven来构建我的Java项目。 我现在正在研究基于非xml的解决方案。
Gradle可以编译,jar和发布我的项目,几乎没有问题。
我可以用SBT做同样的事吗? 如果是这样,您是否可以提供一个使用sbt构建仅Java项目的简单示例。
答案 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样式工件。