Creare progetti Liferay tramite il plugin m2eclipse (Maven for Eclipse)

Il vostro processo di sviluppo software richiede l'utilizzo di Maven per la gestione del vostro progetto Java? Bene, in questo articolo vedremo come sia possibile creare ogni tipo di progetto (o plugin) Liferay utilizzando Maven, il tutto senza scrivere una riga di comando del tipo mvn archetype:generate. La versione di Liferay cui faremo riferimento è la 6.1 GA1 Community Edition.  I requisiti minimi in termini di software per ottenere il risultato atteso, sono i seguenti:

Supposto che il vostro ambiente di sviluppo sia correttamente installato e configurato e abbiate una buona conoscenza di Eclipse e dello strumento Maven, direi di andare avanti nella trattazione. Nel caso siate completamente a "secco" di Maven, consiglio la lettura di una serie di articoli pubblicati su MokaByte e di cui il primo della serie è Maven: best practices per il processo di build e di rilascio dei progetti in Java

1. Liferay Maven Artifacts

Liferay ha aggiunto il supporto a Maven come ottima alternativa al tool Ant plugin SDK. Gli artefatti sono stati pubblicati sul Central Repository tramite http://oss.sonatype.org, di nostro particolare interesse sono i Maven plugin e gli archetypes per tutti i tipi di plugins Liferay:

  • GroupId: com.liferay.maven.archetypes
  • ArtifactId:
    • liferay-ext-archetype
    • liferay-hook-archetype
    • liferay-layouttpl-archetype
    • liferay-portlet-archetype
    • liferay-servicebuilder-archetype
    • liferay-theme-archetype
    • liferay-web-archetype 

Ogni archetype può essere utilizzato per realizzare la base di ogni plugin Liferay mostrato nel precedente elenco, come per esempio un plugin di tipo Hook che poi andremo effettivamente a creare. L'indirizzo del central repository per il GroupId com.liferay.maven.archetype è:

2. Creazione di un Hook Plugin

La creazione di un Hook Plugin tramite il plugin m2eclipse è davvero un gioco da ragazzi. Gli step da eseguire da Eclipse sono appena quattro che riporto a seguire:

  • Creazione di un nuovo progetto Maven
  • Aggiungere l'archetype liferay-hook-archetype inserendo le seguenti informazioni:
    • Archetype GroupId
    • Archetype ArtifactId
    • Archetype Version
    • Repository URL
  • Selezionare l'archetype aggiunto in precedenza
  • Introdurre le informazioni del progetto Maven per l'Hook
    • GroupId (per esempio: it.dontesta.liferay.hook.sugarcrm)
    • ArtifactId (per esempio: liferay-hook-sugarcrm)
    • Version (per esempio: 0.0.1-SNAPSHOT)
    • Package (per esempio: it.dontesta.liferay.hook.sugarcrm)

Le figure possono essere sempre d'aiuto, quelle a seguire mostrano alcuni degli step di creazione del progetto Maven.

Figura 1 - Creazione nuovo progetto Maven

Figura 1 - Creazione nuovo progetto Maven

Figura 2 - Impostazioni predefinite del progetto

Figura 2 - Impostazioni predefinite del progetto

Lasciare le impostazioni predefinite. In particolare, la non selezione della prima opzione consentirà successivamente l'aggiunta e la selezione dell'archetype liferay-hook-archetype per creare il nostro plugin di tipo Hook.

Figura 3 - Aggiunta dell'Archetype

Figura 3 - Aggiunta dell'Archetype

Figura 4 - Aggiunta dell'Archetype

Figura 4 - Aggiunta dell'Archetype

Aggiunta dell'archetype inserendo i dati specificati in precedenza ricordando d'inserire l'indirizzo del repository.

Figura 5 - Impostazione proprietà del progetto

Figura 5 - Impostazione proprietà del progetto

 

Per il progetto appena creato, in pieno stile Maven, saranno risolte tutte le dipendenze necessarie. L'unica operazione che richiede un minimo di manualità è l'inserimento di una serie di proprietà sul POM che riguardano la propria installazione di Liferay. Il Listato 1 mostra quali sono le proprietà aggiunte sul POM. I valori delle proprietà indicate al Listato 1 sono riferite alla mia installazione di Liferay 6.1.1 CE.

<properties>
<liferay.version>6.1.1</liferay.version>
<liferay.auto.deploy.dir>
  /opt/liferay-portal-6.1.1-ce-ga2/deploy
</liferay.auto.deploy.dir>
<liferay.app.server.portal.dir>
  /opt/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT
</liferay.app.server.portal.dir>
<liferay.app.server.lib.global.dir>
  /opt/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/lib/ext
</liferay.app.server.lib.global.dir>
<app.server.deploy.dir>
  /opt/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps
</app.server.deploy.dir>
</properties>

Listato 1 - Proprietà installazione Liferay aggiunte sul POM (link al file completo).

Figura 6 - POM con evidenza delle proprietà di Liferay

Figura 6 - POM con evidenza delle proprietà di Liferay

Figura 7 - Vista completa del progetto Hook Mavenizzato

Figura 7 - Vista completa del progetto Hook Mavenizzato

 3. Package & Deploy

Una volta creato l'Hook di esempio, non resta altro che creare il package (che in questo caso è un war) da installare in seguito sulla propria installazione di Liferay. Quest'ultima operazione può essere anche eseguita tramite un apposito Maven Goal. La creazione del package liferay-hook-sugarcrm-0.0.1-SNAPSHOT.war e l'eventuale deploy su Liferay, può essere eseguito tramite il menù Run Configurations -> Maven Build specificando rispettivamente i goals package liferay:deploy, così come indicato in Figura 8.

Figura 8 - Configurazione Maven Run

Figura 8 - Configurazione Maven Run

Figura 9 - Esecuzione del Goal liferay:deploy

Figura 9 - Esecuzione del Goal liferay:deploy

4. Conclusioni

Abbiamo visto come sia semplice e immediato creare ogni tipo di plugin Liferay utilizzando uno strumento completo e complesso come Maven grazie al supporto fornito dal plugin m2eclipse. Ovviamente è possibile applicare quanto appena descritto a qualunque progetto Java che utilizzi Maven e il plugin m2eclipse è davvero un grande aiuto nella facilitazione di una serie di attività.

Antonio Musarra

I began my journey into the world of computing from an Olivetti M24 PC (http://it.wikipedia.org/wiki/Olivetti_M24) bought by my father for his work. Day after day, quickly taking control until … Now doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB, TIBCO, PHP.

You may also like...