Автоматическое развертывание проекта EAR без получения зависимостей из репозитория
Можно ли развернуть артефакт (.ear
) в сервер приложений (AS) без получения его зависимостей из репозитория?
Позвольте мне объяснить: проект maven, который я пытаюсь настроить для развертывания в AS, имеет 3 модуля:
- Интернет (
.war
- внешний интерфейс) - EJB (
.ejb
- задний конец) - Сущность (
.jar
- классы сущностей)
Эти модули заключены в модуль EAR, и ни один из них не доступен в каком-либо хранилище (например, в Nexus или JFrog Artifactory). Когда я пытаюсь использовать плагин Cargo Maven или плагин JBoss Deployment Maven, оба уведомляют, что не могут разрешить зависимости для этих модулей.
ОБНОВЛЕНО (01/01/2019)
Эта проблема аналогична описанной в пунктах 6 и 7 следующей ссылки: http://webdev.jhuep.com/~jcs/ejava-javaee/coursedocs/content/html/ejb-basicex-eardeploy.html
1 ответ
Это обходной путь, но сработало. Вместо того, чтобы проект зависел от внутреннего репозитория (например, Nexus или JFrog Artifactory), можно определить папку как репозиторий на локальной машине, используя параметр Maven. -Dmaven.repo.local
, Таким образом, плагин для развертывания артефакта также может использовать это свойство и для получения других артефактов.
То есть для сборки приложения на текущей папке:
mvn -Dmaven.repo.local=. package
Развернуть приложение (.ear
(в данном случае) с помощью плагина Cargo Maven, например, вне зависимости от внутреннего репозитория:
mvn -pl app-ear/ -Dmaven.repo.local=. cargo:redeploy
OBS: Использование maven.repo.local
свойство, папка, определенная как значение, будет заполнена всеми зависимостями проекта. В моем случае это не проблема, потому что эти команды использовались в конвейере непрерывной интеграции, а все файлы и папки отбрасывались в финале.