Buongiorno a tutti e ben ritrovati!
Questo è proprio un periodo felice: riesco a scrivere un sacco di non-post (come quello di ieri ma anche come quello che sto scrivendo ora.. :D) che affrontano tematiche che.. Interessano praticamente solo me! ;D
In realtà quello di oggi è un topic che mi da un po' da fare da sempre; ho sempre avuto il pallino di abbandonare Eclipse (o il Liferay Developer Studio) in funzione di una IDE che fosse un po' più robusta, stabile, funzionante, chi-più-ne-ha-più-ne-metta... :D
Scherzi a parte, senza nulla togliere al Liferay Developer Studio 2.2.2 (che ad oggi l'Ing. Napolitano lista ancora nella sua personale top list delle versioni del LDS -di cui è un attento e preciso catalogatore seriale.. :D-), avevo da un po' cominciato a guardare al tema ma senza successo.
L'antefatto...
Poi è successo un fatto.. Nel weekend ho fatto upgrade del sistema operativo senza fare backup (prima volta in 20 anni.. :/).
Beh, Big Sur (ho un mac..) ha un piccolo glitch per cui non viene più impostata correttamente la JAVA_HOME
.
Poco male, direte voi, mica tu Jader sei uno che sviluppa.. :D
... Vero!
Però, però, però, c'è un però.. :D
... Questa settimana stavo proprio tenendo un corso guardacaso sulla 6.2 di LR.
E il fatto che non mi setti più la JAVA_HOME
(anche se a manazza sembra averla correttamente settata..), il Liferay Developer Studio 2.2.2. NON mi parte più!
[N.d.J.: Appunto che ho correttamente configurato l'init di Eclipse impostando a manazza l'argomento per la corretta JVM, ma niente. Parte ma si frizza sullo splash screen e sulla selezione del workspace..]
L'esigenza..
Quindi quello che fino a sabato mattina era solo un vezzo, ora è diventato una triste necessità! ;)
Per terminare il corso non ho avuto grossi problemi: ho riesumato il mac che avevo dismesso durante il lockdown in favore del nuovo e quindi il corso è terminato correttamente.
Però ci sono alcuni progetti sui quali abbiamo della maintenance attiva per i quali, purtroppo o per fortuna :), dobbiamo fare manutenzione.
[N.d.J.: Dobbiamo.. Devo: perché né l'Inge, né gli altri colleghi ne vogliono sapere.. :D]
La soluzione
Quindi questa mattina, di buon'ora (come sono solito fare da quando sono in smart working :)), mi sono messo d'impegno per far funzionare il LRSDK62 su IntelliJ..
Spoiler: la soluzione che segue è ovvia, lo so, talmente ovvia che i più, tra voi, sicuramente la bolleranno come "minchiata" :). La scrivo comunque, però, perché un giorno mi servirà e allora non dovrò rifare tutto il giro che ho fatto questa mattina! :)
Ragionandoci un po' su ho avuto un'intuizione: il DevStudio non fa altro che gestire dinamicamente il classpath e poi via ANT eseguire dei task.
Se sistemo a manazza il classpath e faccio in modo che ANT buildi, vinco facile.. :)
Quindi:
- ho aperto in IntelliJ LE SINGOLE PORTLET contenute all'interno del SDK;
- Quindi i progetti contenuti nelle varie folder del SDK (portlets, layouttpl, hooks, etc..);
- ho configurato il classpath (more on this later...) delle singole portlet impostando:
- il classpath globale con tutte le dipendenze per far compilare i miei portlet;
- il classpath dei singoli moduli puntando alla loro
WEB-INF/lib
interna (quando necessario);
- ho configurato ANT (la versione corretta) e l'ho fatto funzionare (solo da command line, sorry...)
Dettagli tecnici
Questo è lo screenshot di come ho configurato il classpath globale:
Come sicuramente avrete notato bisogna aggiungere (per praticità / velocità):
- tutti i JAR contenuti nella
lib
del Tomcat bundle Liferay; - tutti i JAR contenuti nella
lib/ext
del Tomcat bundle Liferay; - questi singoli JAR, presi dalla
<tomcat home>/webapps/ROOT/WEB-INF/lib
: commons-logging.jar
jstl-api.jar
jstl-impl.jar
log4j.jar
util-bridges.jar
util-java.jar
util-taglib.jar
Fatto questo gli artefatti vi compileranno già; rimane da sistemare ANT.
Per farlo funzionare, mi sono scaricato la versione apache-ant-1.9.15
e, a mano, lancio i singoli task da dentro alle folder dei singoli plugin. Questo approccio funziona: compila e fa deploy correttamente!
Conclusioni
Sicuramente starete dicendo peste e corna di questo post ;), mi sembra quasi di sentirvi! :)
Però dovete ammettere che di articoli che spiegano questa cosa non ce ne sono proprio su internet... Forse perché, come dicevo all'inizio, forse è un problema soltanto mio.. :D
Aggiungo che tutto quanto sopra funziona perché io ho già un SDK che è correttamente configurato: intendo che al suo interno è già presente, parametrizzato correttamente dal Liferay Developer Studio, il file build.jed.properties
(che è il file che permette ad ANT di funzionare correttamente).
Se così non fosse, nel senso che state iniziando un progetto nuovo sulla 6.2, beh, il mio consiglio è FERMARVI e cominciare il vostro nuovo progetto su LR7.x perché, e sono serio, la vostra vita sarà molto più semplice e divertente! ;)
In ultima analisi, è ovvio che questo paradigma (LR62 + IntelliJ) è un palliativo: quello che si perde nel non usare il Liferay Developer Studio è tanta roba (snippet, pannellini di configurazione, wizard.. Tanta roba davvero!).
È vero anche però, per contro, che il tempo che guadagnerete lavorando con questa configurazione sarà mostruosamente più alto del tempo che Eclipse -io parlo per me, magari la vostra esperienza è diversa..- vi fa perdere di solito.. :)
Detto questo, sperando di avervi aiutato a migliorare un po' la vostra performance lavorativa (o aver risolto il problema che BUG Sur ha introdotto.. :)), vi lascio e vi do appuntamento alla prossima! ;)
Divertitevi e buon IntelliJ a tutti (anche con LR62)!! ;)