使用SBT构建纯Java项目

使用SBT构建纯Java项目,java,build,sbt,Java,Build,Sbt,历史上,我使用Ant+Ivy或Maven构建Java项目。 我现在看的是非基于xml的解决方案 Gradle可以编译、jar和发布我的项目,而且问题很少 我可以用SBT做同样的事情吗? 如果是这样,您能否提供一个使用sbt构建纯java项目的简单示例。是的,这是完全可能的。没有什么要设置的。实际上,一个小build.sbt文件应该可以完成这个任务,比如: organization := "your.group.id" name := "Your project" version := "1.

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

Gradle可以编译、jar和发布我的项目,而且问题很少

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

是的,这是完全可能的。没有什么要设置的。实际上,一个小build.sbt文件应该可以完成这个任务,比如:

organization := "your.group.id"

name := "Your project"

version := "1.0-SNAPSHOT"

libraryDependencies ++= Seq( <any normal jar deps> )
组织:=“您的.group.id”
名称:=“您的项目”
版本:=“1.0-快照”
libraryDependencies++=Seq()

并从命令行运行
sbt package

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

以下是您需要的:

crossPaths := false
autoScalaLibrary := false

这里有一个很好的纯Java源代码build.sbt示例,包括如何在没有Scala版本标记的情况下发布Maven风格的工件

当然可以。配置示例:

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中使用SBT的所有棘手部分。请注意,此设置可能比maven设置更好,因为您将拥有一些不错的功能,例如增量测试甚至增量运行。如果你有依赖性并想创建胖罐子(可执行文件),也可以考虑添加<代码> SBT汇编< /Cord>插件。上面第二个链接的新位置正在运行
sbt包
似乎不再需要了(除非我遗漏了什么);运行
sbt包
将生成一个jar,其中包含您构建的源代码。。。它不是,也从来没有被需要的设置。我喜欢SBT,太,但让我们诚实地说。该配置是否允许您将项目发布到maven/ivy?不方便,它会将不必要的Scala后缀附加到包名中。该配置是否允许您创建可执行的jar-s?否,因为包不包含依赖项。该项目是否可以在SBT内部进行测试和运行?是的,在所描述的配置中,这是唯一可以开箱即用的东西。
autoscalibrary:=false
删除Scala依赖项。