Use SBT To Build Pure Java Project

后端 未结 4 1048
梦如初夏
梦如初夏 2021-01-30 20:54

Historically I have used Ant+Ivy or Maven for building my Java projects. I\'m now looking at non-xml based solutions.

Gradle can compile, jar and publish my project with

相关标签:
4条回答
  • 2021-01-30 21:37

    Sure, you can. Example configuration:

    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
    

    Summing up. I love SBT, but I felt necessary to write the full build with all the tricky parts of using it for java. Note that this setup might be better than a maven one because you'll have nice features such as incremental testing or even incremental runs. Also consider adding sbt-assembly plugin if you have dependencies and want to create fat jars (executables).

    0 讨论(0)
  • 2021-01-30 21:40

    Yes this is entirely possible. Nothing to setup really, a small build.sbt file should do the trick, something like:

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

    And run sbt package from the command line.

    0 讨论(0)
  • 2021-01-30 21:44

    For me, it also helped a bit to remove the scala version information from the generated artifact paths, as described in this answer. You'll also want to remove the Scala library as a dependency from any pom or ivy file you publish.

    Here's what you'll need:

    crossPaths := false
    autoScalaLibrary := false
    
    0 讨论(0)
  • 2021-01-30 21:46

    There's a nice example of build.sbt for pure Java sources at the Xerial blog including how to publish Maven style artifacts with no Scala version tag.

    0 讨论(0)
提交回复
热议问题