【问题标题】:Use SBT To Build Pure Java Project使用 SBT 构建纯 Java 项目
【发布时间】:2012-01-07 22:30:36
【问题描述】:

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

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

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

【问题讨论】:

    标签: java build sbt


    【解决方案1】:

    是的,这是完全可能的。没有什么需要设置的,一个小的 build.sbt 文件就可以解决问题,比如:

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

    然后从命令行运行sbt package

    【讨论】:

    【解决方案2】:

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

    这是您需要的:

    crossPaths := false
    autoScalaLibrary := false
    

    【讨论】:

    • autoScalaLibrary := false 删除了 Scala 依赖项。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      当然可以。示例配置:

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

      【讨论】:

        猜你喜欢
        • 2013-09-28
        • 2018-02-09
        • 2015-03-11
        • 2018-03-05
        • 2013-12-20
        • 2018-04-10
        • 2014-12-04
        • 2018-11-18
        • 1970-01-01
        相关资源
        最近更新 更多