Как использовать Moxy из Scala?

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

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

<сильный>1. Импорт Мокси

На этот раз я не могу найти ничего подходящего на 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
  }

Но сбт жалуется module not found: org.eclipse.persistence#javax.eclipselink;2.1.0

<сильный>2. Указание Moxy в качестве поставщика JAXB

С исправленным выше (спасибо S.R.I.!) Следующая проблема заключается в том, что у меня возникают проблемы с указанием Moxy в качестве моего провайдера JAXB. Из инструкций в этой статьи Блейза. Доган, похоже, мне нужно поместить файл jaxb.properties со следующей записью в тот же пакет, что и мои представления:

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

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

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


person Alex Dean    schedule 25.12.2011    source источник
comment
Рассматривали ли вы возможность изменить свой артефакт на eclipselink вместо javax.eclipselink?   -  person S.R.I    schedule 25.12.2011
comment
Большое спасибо S.R.I - устранили первую проблему. Я добавил вторую часть вопроса, так как у меня все еще есть вопросы. Не стесняйтесь добавлять полный / частичный ответ, и я проголосую!   -  person Alex Dean    schedule 25.12.2011


Ответы (1)


ВНИМАНИЕ: я не очень хорошо знаком с синтаксисом 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, и поместить туда свой файл свойств. Я считаю, что он будет загружен в путь к классам sbt.

person S.R.I    schedule 26.12.2011
comment
Спасибо SRI - я выбрал ваш вариант 2! - person Alex Dean; 27.12.2011