使用SBT构build纯Java项目

从历史上看,我使用Ant + Ivy或Maven来构build我的Java项目。 我现在正在看非基于xml的解决scheme。

Gradle可以编译,jar和发布我的项目很less的问题。

我可以和SBT一样吗? 如果是这样,你可以提供一个简单的例子,用sbt构build一个java只有项目。

是的,这是完全可能的。 没有什么可以设置,一个小的build.sbt文件应该做的伎俩,像这样:

organization := "your.group.id" name := "Your project" version := "1.0-SNAPSHOT" libraryDependencies ++= Seq( <any normal jar deps> ) 

并从命令行运行sbt package

对我来说,它也帮助了一些从生成的工件path中去除scala版本信息,正如在这个答案中所描述的那样。 您还需要从发布的任何pom或ivy文件中将Scala库作为依赖项移除。

以下是您需要的内容:

 crossPaths := false autoScalaLibrary := false 

是的你可以。 这是一个示例configuration:

 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。 请注意,这个设置可能比一个更好,因为你会有很好的function,如增量testing,甚至增量运行。 另外考虑添加sbt-assembly插件,如果你有依赖项,并且想要创build胖jar(可执行文件)。

在Xerial博客中,有一个关于纯Java源码的build.sbt的好例子,包括如何发布没有Scala版本标签的Maven样式工件。