Привет! Запись актуальна для Jetty 9.4.11.
Цель: подключение Jetty в качестве плагина для Maven с поддержкой CDI.

Стоит отметить, что для работы CDI, Jetty 9.1+ требует наличие Weld 2.2.0 и выше. Поэтому добавим weld-servlet в проект:

Добавьте в дескриптор развертывания web.xml слушатель и элемент окружения BeanManager:

Создайте файл jetty-env.xml в директории WEB-INF вашего проекта и добавьте в него конфигурацию webAppCtx содержащую веб-контекст и JNDI ресурс:

Теперь создайте новый профиль «jetty» в pom.xml.

Вот как это должно примерно выглядеть:

Запуск профиля происходит командой:

mvn -P jetty

После успешного запуска Jetty, нужно вручную открыть страницу проекта, например:

http://localhost:8080/index.jsf

На этом всё, ниже будет прокомментировано исключение старой старой версии CDI из weld-servlet.jar.

Что делать, если WELD-000144: CDI API version mismatch

Что-бы в jetty-maven-plugin 9.4.* не возникло исключение при запуске с активным Weld’ом:
org.jboss.weld.exceptions.IllegalStateException: WELD-000144: CDI API version mismatch. CDI 1.0 API detected on classpath. Weld requires version 1.1 or better.

Нужно исключить старую версию cdi-api библиотеки, которую подтягивает sisu:

5 1 голос
Рейтинг статьи