Как ссылаться на сторонние модули play framework без ссылки на абсолютный путь? - PullRequest
5 голосов
/ 02 сентября 2011

Вот моя ситуация.У меня есть игровое приложение, которое использует модуль guice .Для работы с модулем guice:

  • Я установил его с помощью play install guice.Это устанавливает его в $PLAY_HOME/modules, что хорошо для меня.Я не хочу каким-либо образом редактировать файлы модуля.
  • Затем я объявил модуль в моем dependencies.yml следующим образом: - play -> guice 1.2
  • В моем приложении я запустил play dependencies, и это прекрасно восстанавливает модуль и создает файл modules/guice-1.2, который ссылается на модуль guice.

Проблема в том, что содержимое этого файла выглядит примерно так: /some-absolute-path/play-1.2.x/modules/guice-1.2.

Это прекрасно работает при локальной разработке.Но когда я хочу перейти на рабочий сервер, с другой установкой Play!(то есть с другим абсолютным путем к нему) он будет очевидно потерпеть неудачу.

Так, как лучше всего с этим справиться?

Пока я прибег кобъявление модуля в файле application.conf следующим образом: module.guice=${play.path}/modules/guice-1.2.К сожалению, магия ${play.path}, похоже, не работает с этими сгенерированными файлами.

Кстати, я использую версию 1.2.3 Play!

Ответы [ 3 ]

2 голосов
/ 02 сентября 2011

вы должны попробовать с $ {application.path} в вашем файле dependencies.yml, как в этом примере

require:
    - play -> crud
    - provided -> DateHelper 1.0 
repositories: 
    - provided: 
        type:       local 
        artifact:   "${application.path}/jar/[module]-[revision].jar" 
        contains: 
            - provided -> * 

см. Этот вопрос: Как я могу указать локальный файл JAR какзависимость в игре!Рамки 1.x

0 голосов
/ 02 января 2013

Это не ответ на ваш вопрос, но я столкнулся с той же проблемой.

  • Я не хочу вызывать повторную синхронизацию зависимостей от производства.
  • Я не хочухочу спросить членов моей команды, установить специальный модуль.
  • Я не хочу фиксировать файл, содержащий абсолютный путь с расположением модуля.

Единственный способ, который я нахожу: неустановить модуль в Play!Приложение, просто включите банки, которые используют этот модуль вручную.play-guice.jar должен быть включен, как предложено @opensas, aopalliance и com.google.inject как обычные зависимости в dependencies.yml.

Самое смешное, что при повторной синхронизации также удаляются .svn файлы, поэтому сделайте резервную копию перед вызовом этой команды.

0 голосов
/ 02 сентября 2011

При запуске в производственной среде вы либо повторно синхронизируете зависимости (с помощью команды play deps) с локальной установкой Play, либо в некоторых сценариях вы можете предварительно скомпилировать все, и тогда с путями проблем не будет.

Второй сценарий, например, с Героку.

...