2011-12-25 32 views
2

這是How to un/marshall underscored XML to/from camelcased Java using JAXB?如何從Scala使用Moxy?

我試圖從斯卡拉使用莫西(EclipseLink的部分)(SBT 0.10.0),以及我在努力弄清楚如何導入和使用它後續問題。爲了打破分爲兩個部分是:

1.導入莫西

這一次,我無法找到任何東西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.指定莫西我的JAXB提供

通過上述固定(SRI的感謝! )接下來的問題是我無法將Moxy指定爲我的JAXB提供者。從布萊斯Doughan在this article的說明,它看起來像我需要把jaxb.properties文件與以下條目在同一個包我的陳述:

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

但不幸的是這似乎並沒有被拾起的時候穿過sbt。有任何想法嗎?

感激地收到任何幫助。祝大家聖誕快樂!

+1

你考慮改變你的artifactId爲'eclipselink'比'javax.eclipselink'? – 2011-12-25 12:57:49

+0

非常感謝S.R.I - 解決了第一個問題。由於我仍然有問題,因此我在問題中添加了第二部分。隨意添加完整/部分答案,我會upvote! – 2011-12-25 18:20:01

回答

2

CAVEAT:我不是很熟悉SBT語法

這就是說,你的問題看起來像SBT加載資源的問題。通常情況下,你的屬性文件,圖像和在你的項目(SBT或Maven - 多以來SBT如下Maven項目結構)的資源文件夾等相關項目。由於jaxb.properties需要在同一個包的JAXB表示形式類,你需要配置SBT尋找這個在你的src的文件夾。看看this頁面,特別是關於非託管vs託管依賴關係的部分。

另外,關於資源問題this SO page會談。希望這回答你的問題。 :)


編輯

可以考慮的另一件事情是,因爲非源項目組件會自動從resources文件夾拾起SBT - 你可以簡單地把你的jaxb.properties在resources目錄複製src文件夾中的路徑。例如,如果你的JAXB表示在src目錄在於包com.foo.bar.baz,你可以複製在resources結構爲src/main/resources/com/foo/bar/baz,把你的屬性文件存在。我相信它會被sbt加載到classpath中。

+1

謝謝SRI - 我帶着你的選擇2去了! – 2011-12-26 20:21:07