scalaxb 0.6.5

互換性の無い変更点

sbt プラグイン間の名前空間の衝突を避けたり、一貫性を高めるために sbt plugins best practices が作られた。以下の変更点はその勧告にならったものだ:

キーは ScalaxbKeys オブジェクト以下に移動した

sbt-scalaxb によって提供されるキーは ScalaxbKeys オブジェクト下に移動した。build.sbt の先頭に以下を書く:

import ScalaxbKeys._

(packageName など) キーの Scala 識別子は今まで同様だが、シェルからの呼び出しには scalaxb-と頭に付ける必要がある (例: scalaxb-package-name)。

設定値は scalaxb タスク下にスコーピングされる

scalaxb 専用の設定値は scalaxb タスクの下にスコーピングされる。デフォルトの設定値である scalaxbSettings はさらに、Compile コンフィギュレーション以下にスコーピングされる(Scalaxb コンフィギュレーションは廃止)。

seq(scalaxbSettings: _*)

packageName in scalaxb in Compile := "ipo"

sourceGenerators in Compile <+= scalaxb in Compile

これにより、プロジェクト内で scalaxb を複数回使いたい場合は、build.scala 内にカスタムのコンフィギュレーションを作ることで可能となった:

val Xsd = config("xsd") extend(Compile)
val Wsdl = config("wsdl") extend(Compile)
lazy val appSettings = buildSettings ++
  inConfig(Xsd)(baseScalaxbSettings ++ inTask(scalaxb)(customScalaxbSettings("xmlschema"))) ++
  inConfig(Wsdl)(baseScalaxbSettings ++ inTask(scalaxb)(customScalaxbSettings("wsdl11")))

def customScalaxbSettings(base: String): Seq[Project.Setting[_]] = Seq(
  sources <<= xsdSource map { xsd => Seq(xsd / (base + ".xsd")) },
  packageName := base,
)

バグフィクスおよび細かな機能改善点

  • 名前空間バインディングの衝突を修正した。#84 reported and fixed by jxstanford
  • wsdl の anyType のサポートを修正した。#88 reported by radirk
  • wsdl の SOAPAction ヘッダを修正した。
  • wsdl の Fault の処理を修正した。
  • 内部のログに Logback を使うようにした。