Da Liferay von Hause aus kein Maven für das Buildmanagement verwendet und stattdessen auf Ant setzt, kann man für eine Integration von Maven die nötigen Artifacts selber erstellen und sie in sein Maven Repository ablegen. Dazu haben wir in einem Projekt das von Mika Koivisto auf dem Liferay Blog beschriebene Vorgehen genutzt. Die dort gezeigten Schritte nutzen eine Sammlung von Ant-Skripten, die von Liferay über das öffentlich zugängliche SVN-Repository abgerufen werden kann, um daraus alle relevanten Artifacts zu erzeugen.
Als ersten Schritt muss man die Sourcen per SVN abrufen:
svn --username guest co svn://svn.liferay.com/repos/public/portal/trunk portal-trunk
Mit
ant clean start jar
können dann alle Artifacts erzeugt werden.
Die so erzeugten Libraries können entweder in das Repository deployt
ant -f build-maven.xml deploy-artifacts
oder per install Task benutzt werden.
ant -f build-maven.xml install-artifacts
Anschließend kann man die so erzeugten Artifacts als dependencies einbinden.
<dependency> <groupId>com.liferay.portal</groupId> <artifactId>portal-client</artifactId> <version>${liferay.version}</version> </dependency> <dependency> <groupId>com.liferay.portal</groupId> <artifactId>portal-impl</artifactId> <version>${liferay.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.liferay.portal</groupId> <artifactId>portal-kernel</artifactId> <version>${liferay.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.liferay.portal</groupId> <artifactId>portal-service</artifactId> <version>${liferay.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.liferay.portal</groupId> <artifactId>portal-web</artifactId> <version>${liferay.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.liferay.portal</groupId> <artifactId>util-bridges</artifactId> <version>${liferay.version}</version> </dependency> <dependency> <groupId>com.liferay.portal</groupId> <artifactId>util-java</artifactId> <version>${liferay.version}</version> </dependency> <dependency> <groupId>com.liferay.portal</groupId> <artifactId>util-taglib</artifactId> <version>${liferay.version}</version> </dependency>
Eine ebenfalls sehr praktisches Feature von Maven, das wir in unseren Liferay-Projekten verwenden, sind die archetypes. Damit können sehr komfortabel Projektstrukturen für Portlets, Layouts oder Themes erzeugt werden. Mit dem Befehl:
mvn archetype:generate
erhält man eine Liste aller zur Verfügung stehenden Projekttemplates.
9: remote -> liferay-layouttpl-archetype (Provides an archetype to create Liferay layout templates.) 10: remote -> liferay-portlet-archetype (Provides an archetype to create Liferay portlets.) 11: remote -> liferay-theme-archetype (Provides an archetype to create Liferay themes.)
Nach der Auswahl eines Types (layouttpl, portlet oder theme) muss man die gewünschte Liferay-Version, die Maven groupId, die artifactId und die Version eingeben und bekommt anschließend eine neue Projektordnerstruktur mit den wichtigsten Konfigurationsdateien wie bspw. die liferay-layout-templates.xml angelegt.