21 марта 2013 г.

Плагины maven для работы с EJB

Используются: Maven 3, JBoss 7.1, EJB 3.1, IntelliJ Idea 12 Ultimate.

Ранее мы при помощи maven собрали ejb-jar и успешно развернули его на сервере JBoss. Теперь приступим к конфигурированию его pom.xml. Для начала автоматизируем процесс разворачивания на сервере.

Deploy на JBoss

Добавим в секцию plugins элемент jboss-as-maven-plugin. Он позволяет разворачивать на сервере компоненты, обновлять их и удалять с сервера.

<plugin>
<groupId>org.jboss.as.plugins</groupId>
<artifactId>jboss-as-maven-plugin</artifactId>
<version>${version.org.jboss.as.plugins.maven.plugin}</version>
<configuration>
    <filename>another-yet-project-1.0-SNAPSHOT.jar</filename>
</configuration>
<executions>
   <execution>
<id>deploy</id>
<phase>install</phase>
<goals>
   <goal>deploy</goal>
</goals>
   </execution>
</executions>
</plugin>

Не забудьте в секцию properties добавить свойство с номером версии плагина:

<version.org.jboss.as.plugins.maven.plugin>7.4.Final</version.org.jboss.as.plugins.maven.plugin>

configuration - filename задаёт имя файла, который получится в результате сборки и который требуется развернуть на сервере. Чтобы при изменении версии проекта не редактировать конфиг плагина, воспользуемся свойством project.build.finalName. Если посмотреть его определение, то можно обнаружить, что это свойство комбинирует два других: project.artifactId и project.version. Именно такой формат по умолчанию даётся сборкам в maven. Нам же в конце остаётся добавить только расширение файла. Конфигурация плагина примет вид:
<filename>${project.build.finalName}.jar</filename>
Секция execution указывает, что цель deploy плагина будет запущена в фазе install проекта. То есть специально запускать плагин не требуется, он автоматически отработает, когда вы запустите фазу install или более позднюю. Но если вам потребуется развернуть ранее собранный файл без запуска всего процесса сборки проекта, то достаточно дважды кликнуть на цели jboss-as:deploy.


Также будет полезной цель jboss-as:undeploy для удаления компонента с сервера.

Сборка архива с интерфейсами EJB

Для работы с EJB клиенту требуется его интерфейс. Мы могли бы положить клиенту целиком EJB, но ему не нужны файлы с реализацией этих интерфейсов. Тогда нам нужно собрать отдельный архив с такими интерфейсами. Можно сделать это вручную, а можно автоматически, добавив всего пару строк к конфигурации maven-ejb-plugin. Привожу его обновлённую конфигурацию:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.3</version>
<configuration>
   <ejbVersion>3.1</ejbVersion>
   <generateClient>true</generateClient>
   <clientExcludes>
<clientExclude>com/blogspot/developer/remarks/SimpleBean.class</clientExclude>
   </clientExcludes>
</configuration>
</plugin>

generate-client - true, создаёт рядом с основным архивом специальный клиентский архив. В нашем случае он будет называться another-yet-project-1.0-SNAPSHOT-client.jar. Для того, чтобы исключить файлы реализации воспользуемся секцией clientExcludes. В ней мы задаём список уже скомпилированных class-файлов с указанием полного пути до него, начиная от корня jar-архива. Обратите внимание, что путь не должен начинаться со слеша. Исключать можно как отдельные class-файлы, так и целые папки.

После сборки проекта вы можете сравнить два полученных архива. Клиентский будет иметь меньший размер.

Для того, чтобы на клиенте использовать именно клиентскую версию, а не полную, следует добавить элемент classifier со значением client. Зависимость будет выглядеть так:
<dependency>
    <groupId>com.blogspot.developer.remarks</groupId>
    <artifactId>another-yet-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <classifier>client</classifier>
</dependency>

Сборка архива с исходниками

Подключив клиентскую версию нашего EJB на вызывающей стороне, вы не увидите javadoc и имена параметров методов. Эта информация нужна только разработчикам и она хранится в исходниках. Формировать исходники в отдельный архив вручную было бы утомительно, поэтому мы воспользуемся плагином maven-source-plugin. Добавим его в секцию build/plugins нашего pom.xml.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
Здесь ничего настраивать не требуется, архив с исходниками автоматически появится рядом с основным jar-файлом в фазе package. Он будет называться another-yet-project-1.0-SNAPSHOT-sources.jar. Подключить на клиентской стороне его можно следующим образом:
<dependency>
  <groupId>com.blogspot.developer.remarks</groupId>
  <artifactId>another-yet-project</artifactId>
  <version>1.0-SNAPSHOT</version>
  <classifier>sources</classifier>
</dependency>

Комментариев нет:

Отправить комментарий