Building your gCube Portlet in ETICS

From Gcube Wiki
Jump to: navigation, search

This page provide a simple guide on how to build gCube portlets in ETICS including build scripts and creation of ETICS configurations.

INFO: For each section, a special sub-section is provided to guide developers in porting old gridsphere portlets to new liferay-portlet format.

Build Scripts

In order to build a portlet (either in ETICS or in development machine), following two template files are provided (hosted in D4Science-II's svn repository):

  • build.xml: download from [here]
  • download from [here]

These files must be copied in portlet's root directory and build.properites must be partially customized with actual values for the portlet (see below).

INFO: Please consider those files as a template that can be adapted/modified/extended if a portlet has specific needs.

build.xml details

Targets provided by build.xml are:

  • setenv: sets classpath. All other targets depend on it;
  • compile: compiles java soruces
  • gwt-compile: runs gwt compiler
  • war: creates war package
  • javadoc: runs javadoc compiler
  • d4s-deploy: used for automatic portlet's deploy in D4Science's infrastructure details

Following properties, at least, must be customized: for all portlets

  • war.filename: name given to the final war package. Note: without extension (e.g. "myportlet" instead of "myportlet.war")
  • gwt-module: name of GWT module to pass to the gwt compiler. If portlet does not use GWT, it will be ignored
  • javadoc.doctitle: title for documentation pages generated by javadoc compiler
  • javadoc.windowtitle: value for <title> tag of HTML pages generated by javadoc compiler

Porting from old Gridsphere Portlet

build.xml and used in gridsphere portltes are incompatible with new build scritps for liferay portlets. Old build scripts must be replaced with new ones.

Deploy Scripts

In order to enable automatic deploy for D4Science portlets, following script must be included in each portlet. It will be included in portlet's servicearchive and executed at deploy-time.

Download from [here] and copy it in portlet's root directory.

NOTE: This script is very standard and should not be customized at all.

Porting from old Gridsphere Portlet

Although script already exists in gridsphere portlets, it is considerably changed in liferay portlets, so the old must be updated with the new one.

Portlet's ETICS Configuration

In this page a guide to create an ETICS configuration for a D4Science-II portlet is provided.

Build Commands

Build commands specification is quite straightforward: you can refer to following screenshot.


clean: ant clean

compile: ant compile gwt-compile war

doc: ant javadoc

install: mkdir -p ${prefix}/lib; cp build/*.war ${prefix}/lib; cp -r doc/ ${prefix}


In order to simplify portlet's dependencies management a special component has been created: org.gcube.portal.portal-framework. This component aims to:

  • decouple portlets from the specific portal implementation (e.g.: gridsphere, liferay,...);
  • provide a common environment to compile portlets;

All portlets should express a dependency on org.gcube.portal.portal-framework.

portal-framework details

At the moment, org.gcube.portal.portal-framework provide portlets that express it as dependency with:

  • a PORTAL_HOME env variable that point to actual location on filesystem of portal libraries;
  • a GWT_HOME anv variable that point to actual location of gwt installation directory;
  • gwt dependency;
  • liferay dependency;

Porting from old Gridsphere Portlet

If you are porting from an old Gridsphere portlet, required steps are:

  • replace old build commands with new ones;
  • remove following dependencies: tomcat, gridsphere, gwt-lib, gwt-runtime
  • add org.gcube.portal.portal-framework dependency

ServiceArchive's ETICS configuration

Build Commands


Please in following example replace QuickSearchPortlet and org.gcube.portlets-user.quick-search-portlet with actual portlet's name and component's name

  • init: mkdir -p ${prefix}/QuickSearchPortlet/lib;
  • install: cp ${org.gcube.portlets-user.quick-search-portlet.moduleDir}/etc/profile.xml ${org.gcube.portlets-user.quick-search-portlet.moduleDir}/README ${org.gcube.portlets-user.quick-search-portlet.moduleDir}/LICENSE ${org.gcube.portlets-user.quick-search-portlet.moduleDir}/INSTALL ${org.gcube.portlets-user.quick-search-portlet.moduleDir}/CHANGELOG ${org.gcube.portlets-user.quick-search-portlet.moduleDir}/MAINTAINERS ${prefix}; cp ${org.gcube.portlets-user.quick-search-portlet.moduleDir}/ ${org.gcube.portlets-user.quick-search-portlet.moduleDir}/build.xml ${org.gcube.portlets-user.quick-search-portlet.moduleDir}/ ${prefix}/QuickSearchPortlet; cp `find ${org.gcube.portlets-user.quick-search-portlet.moduleDir} -name "*.war" -print` ${prefix}/QuickSearchPortlet/lib; echo ${org.gcube.portlets-user.quick-search-portlet.vcsroot}/${org.gcube.portlets-user.quick-search-portlet.tag} > ${prefix}/QuickSearchPortlet/svnpath.txt;


Servicearchive's configuration must express a dependency on portlet's component

Porting from old Gridsphere Portlet

In case you are porting an old gridsphere portlet you have to slightly modify your profile.xml to successfully build portlet's servicearchive since install.xml script has been renamed in build.xml. In /etc/profile.xml, replace: