суббота, 4 июля 2015 г.

Maven проект портлета с сервисами для Liferay


Для генерации нового maven проекта плагина для Liferay необходимо выполнить ряд шагов. В качестве примера будем делать это в интерактивном режиме, в дальнейшем можно будет уместить все в одну команду с параметрами.

Вначале вводим команду:

mvn archetype:generate

Система maven предлагает множество архитипов проектов доступных на текущий момент в его основном репозитории, из которых мы должны выбрать конкретный тип:

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 619:

Вводим liferay чтобы отфильтровать список архитипов:

Choose archetype:
1: remote -> com.liferay.maven.archetypes:liferay-ext-archetype (Provides an archetype to create Liferay extensions.)
2: remote -> com.liferay.maven.archetypes:liferay-hook-archetype (Provides an archetype to create Liferay hooks.)
3: remote -> com.liferay.maven.archetypes:liferay-layouttpl-archetype (Provides an archetype to create Liferay layout templates.)
4: remote -> com.liferay.maven.archetypes:liferay-portlet-archetype (Provides an archetype to create Liferay portlets.)
5: remote -> com.liferay.maven.archetypes:liferay-portlet-icefaces-archetype (Provides an archetype to create Liferay ICEfaces portlets.)
6: remote -> com.liferay.maven.archetypes:liferay-portlet-jsf-archetype (Provides an archetype to create Liferay JSF portlets.)
7: remote -> com.liferay.maven.archetypes:liferay-portlet-liferay-faces-alloy-archetype (Provides an archetype to create Liferay Faces Alloy portlets.)
8: remote -> com.liferay.maven.archetypes:liferay-portlet-primefaces-archetype (Provides an archetype to create Liferay PrimeFaces portlets.)
9: remote -> com.liferay.maven.archetypes:liferay-portlet-richfaces-archetype (Provides an archetype to create Liferay RichFaces portlets.)
10: remote -> com.liferay.maven.archetypes:liferay-portlet-spring-mvc-archetype (Provides an archetype to create Liferay Spring MVC portlets.)
11: remote -> com.liferay.maven.archetypes:liferay-servicebuilder-archetype (Provides an archetype to create Liferay Service Builder portlets.)
12: remote -> com.liferay.maven.archetypes:liferay-theme-archetype (Provides an archetype to create Liferay themes.)
13: remote -> com.liferay.maven.archetypes:liferay-web-archetype (Provides an archetype to create Liferay webs.)
14: remote -> com.vaadin:vaadin-archetype-liferay-portlet (This archetype creates a self-contained Vaadin Liferay portlet.
        It packages all Vaadin static resources (widgetset, theme etc.)
        and doesn't make use of portal-provided resources.

        Liferay-specific properties should be defined in a Maven profile
        and you should activate this profile when performing builds of a
        project based on this archetype.
        Please see https://www.liferay.com/documentation/liferay-portal/6.2/deve
lopment/-/ai/developing-plugins-using-maven-liferay-portal-6-2-dev-guide-02-en)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): :

Вводим 11 что бы выбрать архитип liferay-servicebuilder-archetype.

Данный архитип предназначен для создания проекта плагина портлета Liferay содержащего сервисы для доступа к базе данных.

Далее необходимо выбрать версию архитипа:

Choose com.liferay.maven.archetypes:liferay-servicebuilder-archetype version:
1: 6.1.0
2: 6.1.1
3: 6.1.2
4: 6.1.10
5: 6.1.20
6: 6.1.30
7: 6.1.30.1
8: 6.2.0-B1
9: 6.2.0-B2
10: 6.2.0-B3
11: 6.2.0-M5
12: 6.2.0-M6
13: 6.2.0-RC1
14: 6.2.0-RC2
15: 6.2.0-RC3
16: 6.2.0-RC4
17: 6.2.0-RC5
18: 6.2.0-ga1
19: 6.2.1
20: 6.2.2
21: 6.2.10.4
22: 6.2.10.5
23: 6.2.10.6
24: 6.2.10.7
25: 6.2.10.8
26: 6.2.10.9
27: 6.2.10.10
28: 6.2.10.11
29: 6.2.10.12
30: 7.0.0-m1
31: 7.0.0-m2

Если вы разрабатываете плагин для версии 6.1 то нужно выбрать версию 6.1.2, потому что на версии 6.1.1 есть проблемы при сборке сервисов, которая заключается в том что при повторной сборке сервисов удаляется старая версия файла portlet-model-hints.xml, версии плагинамавен 6.1.2 это проблема исправлена.

Я выбрал версию 6.2.1.

Далее необходимо ввести groupId, artifactId, версию, пакет для нашего проекта (если не хотите вводить значение и оставить значение по умолчанию, достаточно нажать Enter):

Define value for property 'groupId': : ru.rezistenz.liferay.portlet
Define value for property 'artifactId': : sample
Define value for property 'version':  1.0-SNAPSHOT: :
Define value for property 'package':  ru.rezistenz.liferay.portlet: :
Confirm properties configuration:
groupId: ru.rezistenz.liferay.portlet
artifactId: sample
version: 1.0-SNAPSHOT
package: ru.rezistenz.liferay.portlet
 Y: :

Далее вводим Y, подтверждая введенную информацию:

[INFO] -------------------------------------------------------------------------
---
[INFO] Using following parameters for creating project from Archetype: liferay-s
ervicebuilder-archetype:6.2.1
[INFO] -------------------------------------------------------------------------
---
[INFO] Parameter: groupId, Value: ru.rezistenz.liferay.portlet
[INFO] Parameter: artifactId, Value: sample
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: ru.rezistenz.liferay.portlet
[INFO] Parameter: packageInPathFormat, Value: ru/rezistenz/liferay/portlet
[INFO] Parameter: package, Value: ru.rezistenz.liferay.portlet
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: groupId, Value: ru.rezistenz.liferay.portlet
[INFO] Parameter: artifactId, Value: sample
[INFO] project created from Archetype in dir: d:\alex\mvn_proj\sample
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 44:29.109s
[INFO] Finished at: Sat Jul 04 10:07:17 GMT+06:00 2015
[INFO] Final Memory: 10M/25M
[INFO] ------------------------------------------------------------------------

Получившийся проект содержит следующую структуру:

sample
   pom.xml
├───sample-portlet
      pom.xml
  
   └───src
       └───main
           ├───java
           ├───resources
                  portlet.properties
          
           └───webapp
                  icon.png
                  view.jsp
              
               ├───css
                      main.css
              
               ├───js
                      main.js
              
               └───WEB-INF
                       liferay-display.xml
                       liferay-plugin-package.properties
                       liferay-portlet.xml
                       portlet.xml
                       service.xml
                       web.xml
└───sample-portlet-service
        pom.xml

Проект содержит 2 модуля – портлет и проект jar сервисов для портлета.

Далее необходимо настроить maven свойства (property) для данного проекта, иначе проект не соберется.

Свойства можно определить различными путями(для справки обратитесь к документации по maven), будем использовать самый простой способ – внутри pom.xml.
Свойства которые необходимо определить разброшены по файлу pom.xml в виде ${имя.свойства}.

Нам необходимо определить следующие обязательные свойства:

${liferay.maven.plugin.version} – версия плагина Liferay для maven
${liferay.version} – версия Liferay

И дополнительные:

${liferay.auto.deploy.dir} – путь к папке в файловой системе liferay-portal-x.x.x/deploy предназначенной для деплоя собранного пакета нашего плагина (war архив)
${liferay.app.server.deploy.dir} – путь до папки liferay-portal-x.x.x/tomcat-x.x.x/webapps
${liferay.app.server.lib.global.dir} – путь до папки liferay-portal-x.x.x/tomcat-x.x.x/lib/ext
${liferay.app.server.portal.dir} – путь до папки liferay-portal-x.x.x/tomcat-x.x.x/webapps/ROOT

Дополнительные свойства лучше перенести в файл .m2/settings.xml содержащий настройки профилей maven характерных для вашей системы. (для дополнительной информации о файле settings.xml см. https://maven.apache.org/settings.html).

Дополнительные свойства можно не определять, но тогда сборка пакета может занять больше времени, потому что maven при полной отчистке и сборке проекта будет скачивать и копировать необходимые для сборки файлы liferay определенной версии из своего репозитория, а это довольно большой объем данных. Если определить дополнительные параметры, то для сборки будут использоваться файлы из определенных в параметрах каталогах и сборка будет проходить намного быстрее.

Таким образом для определения основных свойств добавим в файл pom.xml следующие теги:

...
<properties>
     <liferay.maven.plugin.version>6.2.1</liferay.maven.plugin.version>
     <liferay.version>6.2.1</liferay.version>
</properties>
...

Далее необходимо собрать проект.

Для полной сборки плагина:

mvn package

Для генерации сервисов необходимо выполнить команду:

mvn liferay:build-service

Для деплоя:

mvn liferay:deploy

Для дополнительной информации:


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

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