Управление зависимостями с помощью приложений Play 2.0 - PullRequest
5 голосов
/ 24 февраля 2012

Наша группа является новичком в разработке на основе JVM.Мы разрабатываем приложения, которые состоят из множества других библиотек.

Мы считаем, что платформа Play очень привлекательна для разработки веб-приложений.Фреймворк великолепен, но управление зависимостями для наших локально разработанных библиотек несколько неприятно.Мы используем RC2 из Play 2.0, и хотя мы можем загружать изменения в наши библиотеки в Play, это определенно неловкий процесс, который прерывает обычно плавный процесс Play.

То, что мы делаем, этоотправить наши библиотеки в наш локальный (на компьютере каждого разработчика) репозиторий Maven, а затем импортировать те же библиотеки обратно в проект Play.Это работает, но, как я уже сказал, это неловко.

Есть ли какие-то лучшие практики, которые мы должны использовать, чтобы сделать эту работу немного более плавной?

FWIW, мы используем IntelliJ11.0 (Ultimate)

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

Я получаю хорошие ответы о том, какулучшить мой процесс сборки Maven, и я ценю это.Однако это не совсем тот ответ, который я ищу.

Чтобы конкретизировать, предположим, что я создаю и Службу, и веб-приложение для мониторинга / управления службой.Сервис представляет собой простой Java / Scala проект, а веб-приложение - Play!проект.Мы назовем их «Сервис» и «Приложение».(Пожалуйста, не придирайтесь к этой предложенной структуре, я упрощаю ее для целей вопроса)

В Eclipse или IntelliJ я могу добавить модуль 'Service' (или Project для Eclipse) какзависимость проекта «приложение».Это позволяет очень быстро обойтись разработчиком при внесении изменений в библиотеку «Сервис» (например, я добавляю свойство в модель).Перекомпилировать и запустить на несколько порядков быстрее, чем браузер для компиляции, упаковки, развертывания, импорта и перезагрузки.

Основываясь на чтении документации по Play 2.0 и SBT, мой единственный реальный ответ - сделать 'Сервис »подпроект« App ».Есть ли лучший ответ на этот вопрос?

Ответы [ 3 ]

1 голос
/ 24 февраля 2012

Возможно, вам следует нажать на локальное зеркало / прокси Maven, например Nexus .

1 голос
/ 24 февраля 2012

У вас есть 2 варианта.

Первый, как упоминал Рич, это локальный репозиторий. Это не означает, что локальная папка на вашем компьютере разработчика, которую maven создает как локальный кеш, вы используете. Это означает центральный сервер в вашей локальной сети , где вы храните версии приложений для Play для последующего извлечения. Nexus , как рекомендует Рич, является отличным вариантом.

Второй вариант - просто собрать файлы jar и развернуть их как неуправляемые библиотеки в папке "lib" . Затем вы можете передать это в вашу систему управления исходным кодом, и все разработчики будут иметь то же самое.

Я рекомендую первый подход, гораздо лучше в долгосрочной перспективе, но это ваш выбор.

РЕДАКТИРОВАТЬ НА КОММЕНТАРИИ Вы говорите, что не хотите управлять зависимостями. Единственный третий сценарий, который я могу себе представить, это то, что вы хотите иметь весь код в виде блока. В этом случае вы можете использовать подпроекты . Я не вижу других альтернатив.

0 голосов
/ 24 февраля 2012

Игра действительно вызывает большой интерес в большинстве случаев. Но есть один случай, когда Play может быть не лучшим решением, именно на проблему, которую вы указываете: когда есть другие компоненты, библиотеки, которые нужно интегрировать в приложение.

Я не говорю, что это невозможно, просто так не задумывался Play.

...