Difference between revisions of "Building your gCube Portlet in ETICS"

From Gcube Wiki
Jump to: navigation, search
Line 1: Line 1:
 
= Build Scripts =
 
= Build Scripts =
To build portlets 3 standard scripts have been created that should be suitable for all portlets. These files are:
+
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 [[File:Build.xml]]
+
* '''build.xml''': download from [[http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portal/portal-framework/MyGCubePortlet/build.xml here]]
* build.properties [[File:Build.properties]]
+
* '''build.properties''': download from [[http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portal/portal-framework/MyGCubePortlet/build.properties here]]
* installPortlet.sh (see below)
+
  
Please copy those file in your portlet's root directory.
 
  
 +
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).
  
== build.xml ==
+
 
 +
'''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:
 
Targets provided by build.xml are:
 
* '''setenv''': sets classpath. All other targets depend on it;
 
* '''setenv''': sets classpath. All other targets depend on it;
Line 15: Line 18:
 
* '''war''': creates war package
 
* '''war''': creates war package
 
* '''javadoc''': runs javadoc compiler
 
* '''javadoc''': runs javadoc compiler
* '''d4s-deploy''': used for automatic portlet's deploy
+
* '''d4s-deploy''': used for automatic portlet's deploy in D4Science's infrastructure
 +
 
 +
 
 +
 
 +
== build.properties 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
 +
 
 +
 
 +
= 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 the build.xml file. [[File:Build.xml]]
 
  
== build.properties ==
+
Download installPortlet.sh from [[http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portal/portal-framework/MyGCubePortlet/installPortlet.sh here]] and copy it in portlet's root directory.
Following properties, at least, must be customized:
+
*war.filename
+
*gwt-module (if any)
+
*javadoc.doctitle
+
*javadoc.windowtitle
+
  
Download from here the basic build.properties file. [[File:Build.properties]]
 
  
== installPortlet.sh ==
+
''NOTE'': This script is very standard and should not be customized at all.
Create a file named installPortlet.sh in your portlet's root directory containing:
+
<pre>
+
#!/bin/bash
+
#
+
if [ -f "$HOME/.bashrc_portal" ]
+
then
+
source "$HOME/.bashrc_portal"
+
fi
+
  
if [ -z "$CATALINA_HOME"  ]
 
then
 
echo  "Cannot deploy portlet(s), tomcat was not detected!"
 
exit 1
 
else
 
ant -f build.xml d4s-deploy >& ant_logs.txt
 
if [ $? != 0 ]
 
then
 
echo  "Cannot deploy portlet(s), build was not successfull!"
 
exit 1
 
fi
 
exit 0
 
fi
 
</pre>
 
  
 
= Portlet's ETICS Configuration =
 
= Portlet's ETICS Configuration =
Line 99: Line 86:
 
=== Dependencies ===
 
=== Dependencies ===
 
Servicearchive's configuration must express a configuration on portlet
 
Servicearchive's configuration must express a configuration on portlet
 +
<math>Insert formula here</math>

Revision as of 15:16, 8 July 2010

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]
  • build.properties: 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


build.properties 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


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 installPortlet.sh from [here] and copy it in portlet's root directory.


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


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.

PortletBuildCommands.png


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}

Dependencies

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;

ServiceArchive's ETICS configuration

Build Commands

SABuildCommands.png

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}/installPortlet.sh ${org.gcube.portlets-user.quick-search-portlet.moduleDir}/build.xml ${org.gcube.portlets-user.quick-search-portlet.moduleDir}/build.properties ${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;

Dependencies

Servicearchive's configuration must express a configuration on portlet <math>Insert formula here</math>