Как использовать Moxy от Scala? - PullRequest
2 голосов
/ 25 декабря 2011

Это дополнительный вопрос от Как отменить / Маршалл подчеркивает XML в / из Java на верблюде с использованием JAXB?

Я пытаюсь использовать Moxy (часть EclipseLink)из Scala (SBT 0.10.0), и я пытаюсь выяснить, как импортировать и использовать его.Чтобы разбить это на две части:

1.Импорт Moxy

На этот раз я не могу найти ничего подходящего на mvnrepository.com .Прочитав эту страницу о настройке Maven , я надеялся, что сработает следующее:

// /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-провайдера.Из инструкций, изложенных в этой статье Блейза Дафана, похоже, мне нужно поместить файл jaxb.properties со следующей записью в тот же пакет, что и мои представления:

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

Нок сожалению, это не похоже на то, чтобы проходить через sbt.Есть идеи?

Любая помощь с благодарностью получена.И с Рождеством всех!

1 Ответ

2 голосов
/ 26 декабря 2011

CAVEAT : я не очень знаком с синтаксисом SBT

Тем не менее, ваша проблема выглядит как проблема загрузки ресурсов из sbt. Обычно у вас есть файлы свойств, изображения и другие связанные элементы в папке ресурсов в ваших проектах (sbt или maven - больше, так как sbt следует структуре проекта maven). Поскольку jaxb.properties должен находиться в том же пакете, что и ваши классы представления JAXB, вам необходимо настроить sbt для поиска этого в ваших папках src. Взгляните на эту страницу, особенно на раздел неуправляемых и управляемых зависимостей.

В качестве альтернативы на этой странице SO говорится о проблеме с ресурсами. Надеюсь, что это ответ на ваш вопрос. :)


РЕДАКТИРОВАТЬ

Еще одна вещь, которую вы можете рассмотреть, так как sbt автоматически выбирает компоненты проекта, не являющиеся исходными, из папки resources - вы можете просто поместить свои jaxb.properties в каталог resources, реплицируя путь, как в src папки. Например, если ваше представление JAXB находится в пакете com.foo.bar.baz в каталоге src, вы можете скопировать структуру в resources, как в src/main/resources/com/foo/bar/baz, и поместить туда файл свойств. Я полагаю, что он будет загружен в classpath к sbt.

...