sbt-scalaxb
This page describes sbt-scalaxb for scalaxb 1.5.0 and above. See the following for older versions:
automate using sbt new
The following steps has been scripted into a giter8 template called eed3si9n/scalaxb.g8
. For a quick project, run the following after installing sbt 0.13.13+.
$ sbt new eed3si9n/scalaxb.g8
After asking you for a project name, the above sets up a nearly empty sbt project with sbt-scalaxb pre-installed. A convenient method to start using scalaxb.
If you want to do add scalaxb to an existing project, keep reading.
using build.sbt
step 1. plugins.sbt
Put this in your project/plugins.sbt
:
addSbtPlugin("org.scalaxb" % "sbt-scalaxb" % "X.X.X") resolvers += Resolver.sonatypeRepo("public")
where "X.X.X" is the latest scalaxb version.
step 2. build.sbt
Here's a sample build.sbt
:
lazy val scalaXml = "org.scala-lang.modules" %% "scala-xml" % "1.0.2" lazy val scalaParser = "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.1" lazy val dispatchV = "0.11.3" lazy val dispatch = "net.databinder.dispatch" %% "dispatch-core" % dispatchV lazy val root = (project in file(".")). enablePlugins(ScalaxbPlugin). settings(inThisBuild(List( organization := "com.example", scalaVersion := "2.11.8" ))). settings( name := "foo-project", libraryDependencies ++= Seq(dispatch), libraryDependencies ++= { if (scalaVersion.value startsWith "2.10") Seq() else Seq(scalaXml, scalaParser) }). settings( scalaxbDispatchVersion in (Compile, scalaxb) := dispatchV, scalaxbPackageName in (Compile, scalaxb) := "generated" // scalaxbPackageNames in (Compile, scalaxb) := Map(uri("http://schemas.microsoft.com/2003/10/Serialization/") -> "microsoft.serialization"), // logLevel in (Compile, scalaxb) := Level.Debug )
This loads scalaxb
task after running reload
. The automatic setting in ScalaxbPlugin
scopes scalaxb
task into Compile
configuration, which compiles all xsd files from src/main/xsd
and wsdl files under src/main/wsdl
. scalaxb
will be invoked automatically upon compile
.
step 3. directory structure
Make src/main/xsd
and src/main/wsdl
directory and place your schema document there.
step 4. (optional) basic settings
Settings for the way scalaxb
generates the code can be customized by rewiring the settings scoped under scalaxb
task and Compile
configuration:
scalaxbPackageName in (Compile, scalaxb) := "generated"
Type help scalaxb*
in the sbt shell to list the configurable settings:
> help scalaxb* scalaxbGenerateVisitor Generates visitor scalaxbPrependFamily Prepends family name to class names scalaxbWrapContents Wraps inner contents into a seperate case class scalaxbDispatchVersion Dispatch version scalaxbAutoPackages Generates packages for different namespaces automatically ....