2

这是How to un/marshall underscored XML to/from camelcased Java using JAXB?的后续问题?

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

1.导入Moxy

这一次我在mvnrepository.com上找不到任何合适的东西。通过阅读有关 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 提供者

解决了上述问题(感谢 SRI!),下一个问题是我无法将 Moxy 指定为我的 JAXB 提供程序。根据 Blaise Doughan 的这篇文章中的说明,看起来我需要将一个jaxb.properties包含以下条目的文件放在与我的表示相同的包中:

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

但不幸的是,在运行 sbt 时似乎并没有发现这一点。有任何想法吗?

感激地收到任何帮助。祝大家圣诞快乐!

4

1 回答 1

2

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

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

或者,这个 SO 页面讨论了资源问题。希望这能回答你的问题。:)


编辑

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

于 2011-12-26T00:14:22.653 回答