这是来自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时,这似乎没有被发现。有什么想法吗?
感激不尽的任何帮助。大家圣诞快乐!
答案 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中。