Monday 8 December 2014

Maven portlet development - Liferay service builder portlet


1. Navigate to the folder where you want to create Liferay plugin
2. Execute the command mvn archetype:generate. This will take some time for the first time. You might need to rerun this command for twice to get it complete.
3. It will ask to choose a number or apply filter. Enter filter for Liferay, simply type liferay and hit enter.
4. Select archetype for buil-service portlet. I.e. liferay-servicebuilder-archetype
5. Enter liferay portlet archetype version. E. g. Version of Liferay, for our case we need to choose 6.2.0-RC5.
6. Define value for property 'groupId': :org.wellOfJava.portlet. i. e. groupId will identify your project uniquely across all projects.
7. Define value for property 'artifactId': : sample-portlet. i. e. Name of the portlet. 
8. Define value for property 'version':  1.0-SNAPSHOT: : 1.0-SNAPSHOT  (or here you can just press enter)
9. Define value for property 'package':  org.wellOfJava.portlet: : org.wellOfJava.portlet. That will be package structure of your portlet.
10. Add properties tag in pom.xml after </dependencies> tag and before </project> end tag
11. Now if you open the directory you would find 2 directory created inside and one POM.xml file. This POM is parent file for both of the sab modules.
a) {portlet-name}-portlet
i. This directory contains all necessary files for Liferay portlet.
b) {portlet-name}-portlet-service
i. This directory is specifically for developing service builder classes. 
12. Now the portlet is ready to add service builder layer. You would find service.xml file in {portlet-name}-portlet\src\main\webapp\WEB-INF. Modify the file as per your requirement. 
13. Now execute following command on the parent POM.
a) mvn liferay:build-service
b) mvn clean install
14. Import the parent POM file in eclipse and both of the sub module will be imported to eclipse. As well portlet project will also have dependency for service builder jar file. 

The portlet is ready for further development. You can carry on as you develop portlet in liferay-sdk.