I cookie ci aiutano a fornire i nostri servizi.

Utilizzando tali servizi, accetti l'utilizzo dei cookie da parte nostra. Per saperne di piu'

Approvo

Quando ci si trova a fare manutenzione su un software, anche se è stato sviluppato internamente, il primo problema è capire quale sia la versione installata; questa informazione non è sempre semplice da capire, soprattutto in un ambiente portale in cui è presente una moltitudine di plugin installati.

Per fortuna Liferay mette a disposizione 2 strade alternative per ottenere le medesime informazioni; prima però vediamo di capire cos'è il numero di versione di cui stiamo parlando.

Uno dei file che descrive un plugin di Liferay è liferay-plugin-package.properties; questo file contiene un pò di informazioni tra cui la proprietà module-incremental-version che rappresenta appunto il numero di build del nostro plugin.

Nel momento in cui generiamo il pacchetto WAR da deployare, viene creato un file il cui nome ha come suffisso la versione di Liferay seguita proprio dal numero di build: ad esempio 6.2.0.5.

Se vogliamo conoscere questo numero, una volta deployato il plugin, possiamo semplicemente accedere al menu Pannello di Controllo → Gestore delle App e cercare il plugin.

Ma quello che ci interessa veramente è recuperare il medesimo valore utilizzando le API di Liferay; in questo modo potremmo, ad esempio, realizzare un'applicazione molto complessa e visualizzare sempre in anteprima il numero di versione.

Fare ciò è veramente molto semplice:

<%
String context = ...;
PluginPackage pluginPackage = DeployManagerUtil.getInstalledPluginPackage(context);
%>
<%=pluginPackage.getVersion() %>

La classe PluginPackage contiene tante altre utili informazioni, ma per il momento ci interessa solamente il numero di versione. Ok, ma che cos'è context?

Non è altro che il nome del contesto, ossia il nome del plugin inteso (in generale) come il nome del progetto Eclipse. E come lo recuperiamo?

Se stiamo recuperando il contesto del plugin in cui ci troviamo possiamo usare varie strade:

  • dentro una JSP possiamo usare application.getServletContextName();
  • in una classe Java possiamo usare ClpSerializer.getServletContextName() (ammesso di avere uno strato dei servizi).

Oppure possiamo sempre cablarlo.