我如何使用Scala中的Moxy?

时间:2011-12-25 09:36:09

标签: scala sbt moxy sbteclipse

这是来自How to un/marshall underscored XML to/from camelcased Java using JAXB?

的后续问题

我正在尝试使用Scala(sbt 0.10.0)中的Moxy(EclipseLink的一部分),并且正在努力弄清楚如何导入和使用它。将其分为两部分:

1。导入Moxy

一次我在mvnrepository.com上找不到合适的内容。从阅读this page on Maven setup开始,我希望以下内容可行:

// /project/Dependencies.scala
object Dependencies {
  val resolutionRepos = Seq(
    ScalaToolsSnapshots,
    "EclipseLink Repo" at "http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/rt/eclipselink/maven.repo"
  )

  object V {
    val moxy      = "2.1.0"
  }

  object Runtime {
    // We use Moxy for the naming convention transforms
    val moxy        = "org.eclipse.persistence"   % "javax.eclipselink"   % V.moxy
  }

但是sbt抱怨module not found: org.eclipse.persistence#javax.eclipselink;2.1.0

2。将Moxy指定为我的JAXB提供程序

通过以上修复(感谢S.R.I.!),下一个问题是我无法将Moxy指定为我的JAXB提供程序。根据Blaise Doughan的this article中的说明,看起来我需要将jaxb.properties文件与以下条目放在同一个包中作为我的陈述:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

但不幸的是,在通过sbt时,这似乎没有被发现。有什么想法吗?

感激不尽的任何帮助。大家圣诞快乐!

1 个答案:

答案 0 :(得分:2)

CAVEAT :我对SBT语法不是很熟悉

那就是说,你的问题看起来像是从sbt加载资源的问题。通常,您在项目的resources文件夹中有属性文件,图像和其他相关项目(sbt或maven - 更多,因为sbt遵循maven项目结构)。由于jaxb.properties需要与JAXB表示类位于同一个包中,因此您需要配置sbt以在src文件夹中查找它。查看this页面,尤其是有关非托管与托管依赖关系的部分。

或者,this SO page谈论资源问题。希望这能回答你的问题。 :)

<小时/> 编辑

您可以考虑的另一件事是,由于非源项目组件是由resources文件夹中的sbt自动获取的 - 您只需将jaxb.properties放在resources目录中复制路径为在src个文件夹中。例如,如果您的JAXB表示位于com.foo.bar.baz目录中的包src,则可以像resources一样复制src/main/resources/com/foo/bar/baz中的结构,并将属性文件放在那里。我相信它会被sbt加载到classpath中。