sbt / sbt-xjc

SBT plugin to compile an XML Schema with XJC

Version Matrix

sbt-xjc An SBT Plugin to compile XML Schemata to JAXB Java sources with XJC

Usage

Depend on the plugin: ./project/plugins.sbt. Requires sbt 1.0.x

addSbtPlugin("org.scala-sbt.plugins" % "sbt-xjc" % "0.10")

Configure

By default, all XSDs found under unmanagedResourceDirectories will be compiled. This is repeated in the Compile and Test scopes. The table below show the configuration for the Compile scope; replace with Test to configure that scope.

Key Type Default Description Example
xjcLibs Seq[ModuleId] jaxb-api 2.1, jaxb-impl and jaxb-xjc 2.1.9 The artifacts to download to run XJC
xjcPlugins Seq[ModuleId] The artifacts to download containing XJC plugins
xjcBindings Seq[String] Files used to customize JAXB bindings
xjcCommandLine Seq[String] Additional command line, e.g. -verbose -Xfluent-api
xjcJvmOpts Seq[String] Additional JVM command line, e.g. -Djavax.xml.accessExternalSchema=file to allow compilation of schemas consisting of multiple files
sources in (Compile, xjc) Seq[File] ${unmanagedResourceDirectories} ** "*.xsd" Input XSD Files sources in (Compile, xjc) <<= sourceDirectory map (_ / "main" / "schema" ** "*.xsd" get)
sourceManaged in (Compile, xjc) File ${sourceManaged}/compile/xjc Target for generated files. Should not be shared with other generated files

Example build.sbt files from the tests:

Other samples may appear in Tests for example builds.

As a convenience, the fluent API settings are provided in SbtXjcPlugin.fluentApiSettings

Use

The timestamps of the source XSD files is compared with the generated files, and if newer these are compiled. This occurs automatically before compilation.

Problems

You can troubleshoot problems by inspecting debug logs with > last xjc.

Please use the Issue Tracker here if you find a bug. Do not raise bugs for problems with your schema or with usage of XJC itself.