Главная > Без рубрики > Maven, jetty, userRealm…

Maven, jetty, userRealm…


Встала тут задача сделать свой собственный userRealm для jetty.

Задачка в общем-то плевая, только одно но. Хочется чтобы был maven и чтобы запуск на тестирование был однокомандным. Что-то типа mvn jetty:run — вуа-ля, проект готов к тестированию.

Maven позволяет описать конфигурацию так, что это работает. За одним исключением. maven-jetty-plugin ничего не знает про проект и его классы. То есть в нём можно описать конфигурацию, но это будет конфигурация web-приложения. А стандартная -Djetty.class.path не будет работать, так как старт сервера идет не через стандартный start.jar (который, собственно и работает с данной переменной), а через maven mojo, в котором ничего про эту переменную не сказано. Тупик.

На самом деле эта проблема решается достаточно легко. Надо просто добавить собираемый проект в зависимости запускаемого jetty. Делается это примерно так:

<build>
  ...
  <plugins>
    ...
    <plugin>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>maven-jetty-plugin</artifactId>
      <version>6.1.21</version>
      <dependencies>
        <dependency>
          <groupId>org.test.realm</groupId>
          <artifactId>my-realm</artifactId>
          <version>1.0-SNAPSHOT</version>
          <scope>system</scope>
          <systemPath>target/my-realm-1.0.0-SNAPSHOT.jar</systemPath>
        </dependency>
      </dependencies>
      <configuration>
        <userRealms>
          <userRealm implementation="org.test.jetty.realm.JdbcUserRealm">
          <name>Test Realm</name>
          <config>src/test/jetty/realm.properties</config>
        </userRealm>
      </userRealms>
      <webAppSourceDirectory>src/test/webapp</webAppSourceDirectory>
      <scanIntervalSeconds>5</scanIntervalSeconds>
      <contextPath>/realm</contextPath>
    </configuration>
  </plugin>
  ...
  </plugins>
...
</build>

В src/test/webapp лежит простенькая заглушка для тестирования userRealm. Запуск производится так:


$mvn package jetty:run

Выполнение package необходимо, поскольку зависимости могут работать только с артифактами, не с конечными классами. Всё. Можно отлаживаться.

PS: Отдельное спасибо Жене Лазаревой за наводку. 🙂

Реклама
Метки: ,
  1. Комментариев нет.
  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s