Как интегрировать Play Framework 2.0 в Gradle управление построением с использованием зависимостей Maven?
Play framework 2.0 представляет собой автономную структуру полного стека для создания веб-приложений. Вероятно, многие люди должны интегрировать его в управление построением, тем не менее. К сожалению, я не нашел много информации о нем.
Вот мой прецедент: я хочу создать новый проект, который использует Scala и Play 2.0. Я НЕ хочу использовать sbt. Я хочу использовать Gradle, а управление зависимостями должно выполняться через репозитории Maven.
Я только нашел этот модуль воспроизведения: http://www.playframework.org/modules/maven-1.0/home, который поддерживает управление зависимостями через Maven.
Я ищу что-то подобное этим примерам в Grails:
https://github.com/grails/grails-gradle-plugin или http://grails.org/doc/latest/guide/commandLine.html#4.5%20Ant%20and%20Maven
Конечно, я мог писать сценарии/задачи, которые вызывают "play console commands". Хотя, мне это не нравится. Есть ли лучший способ использовать Gradle/Maven для управления построением?
Если это единственное решение, я бы использовал Gradle, который затем вызывает команды Play (т.е. Sbt внутри), правильно? Это даже работает, или возникнут другие проблемы?
Ответы
Ответ 1
Это очень сложный бизнес. SBT in Play используется для извлечения зависимостей, компиляции исходных текстов и шаблонов, а также для инкрементной компиляции SBT + функции автоматической перезагрузки. Я написал build.gradle
script для разрешения всех зависимостей в Play 2.0 и настройки классов Eclipse или IntelliJ IDEA и сделал его здесь публичным.
Я попытаюсь выполнить компиляцию позже, когда у меня будет время, но это потребует некоторых исследований.
Конечно, вы можете добавлять компилируемые и запускаемые задачи, которые просто делегируют SBT, но для этого потребуется описать все зависимости проекта в обоих SBT и Gradle, что станет трудно управлять.
Edit:
Я обновил файл sample build.gradle. Я добавил задачи playCompile
и playClean
, которые должны помочь в среде CI. Задача playCompile
выполняет следующие действия:
- Скопируйте все пользовательские зависимости (определенные в конфигурации
compile
) в папку lib/
. Это работает, потому что Play будет любезно отображать все банки из-под lib/
.
- Выполнить команду
play compile
, чтобы скомпилировать все источники, шаблоны и другие материалы в среде Play.
Вы можете использовать cleanCopyPlayLibs
и playClean
, чтобы удалить выходные данные указанных выше команд соответственно.
Обратите внимание, что в Windows возникает странная проблема (ошибка?), что означает, что даже если play compile
не работает, gradle сообщит вам, что это удалось.
Ответить на комментарий:
Я думаю, что вы просто отсутствуете
repositories{
mavenCentral()
}
в вашем файле. Проверьте этот документ.
Ответ 2
Хорошие новости, с Gradle 2.7 есть официальный плагин для игры: https://docs.gradle.org/current/userguide/play_plugin.html
Ответ 3
В настоящее время LinkedIn создает плагин Gradle для поддержки этого. Они свертывают это в 3 этапа:
- Использование Gradle для создания приложения Play
- Непрерывный режим и горячий перезапуск
- Scala интерактивный REPL
Milestone 1 уже завершена. Доступно через Gradle ночные сборки. На вышеупомянутом связанном блоге они побуждают людей попробовать.
Ответ 4
Я разработал простую сборку script в Gradle для Play Framework 1.2.x, которую вы также можете использовать для Play 2.x
https://github.com/kirang89/play-gradle