Maven Project for SugarCRM Java Web Services Client

Nel corso di un precedente articolo abbiamo visto come creare un client Java per i Web Services di SugarCRM utilizzando il framework Apache CXF (versione 2.5.x), inoltre l’intero progetto creato appositamente per la stesura dell’articolo, è disponibile all’interno del repository GitHub raggiungibile all’indirizzo:

In questo periodo sono in fase di migrazione del sistema di build di una serie di progetti Java da Ant a Maven, ho approfittato quindi dell’occasione per riportare anche questo progetto del client Java di SugarCRM su Maven.

Così come fatto per il precedente progetto, ho pensato bene di pubblicare anche questo progetto convertito per Maven sul repository GitHub raggiungibile all’indirizzo:

Visto che adesso il progetto è sotto il controllo di Maven e solitamente cerco di evitare di scrivere troppo (sia linee di codice sia a linee di comando), ho fatto in modo da non dovermi preoccupare di eseguire il tool wsdl2java, tanto pensa a tutto Maven, in breve: mvn install. In pochi istanti avrete l’artifact (da utilizzare poi in altri progetti) più un semplice test del client tramite JUnit. Tanto per non far mancar nulla, ho eseguito anche il deploy del site, raggiungibile all’indirizzo:

  • http://www.dontesta.it/projects/maven/sites/sugarcrmce-64-v4-soap-api/

Dato che non ho la possibilità di eseguire il deploy del progetto su di un repository pubblico e quindi facilitarvi nell’inserimento come dipendenza nei vostri progetti qualora necessario, sappiate che siete comunque liberi di fare il checkout del progetto e il successivo build, ottenendo in questo modo l’artifact.

La via forse più semplice (o almeno abituale) e che propongo per eseguire il build del progetto, richiede i seguenti requisiti:

Soddisfatti i requisiti elencati in precedenza, è possibile andare avanti con il checkout del progetto e il successivo build. Tramite l’ausilio di alcune figure cercherò di illustrare il procedimento. Iniziate aprendo il vostro Eclipse, e dal menù File =>; Import selezionare la voce Checkout Maven Project from SCM, così come mostrato in Figura 1.

Checkout Maven Project from SCM

Figura 1. Checkout Maven Project from SCM

Il secondo step prevede la selezione del repository, specificandone il tipo e l’URL. In questo particolare caso il tipo di repository è Git e la URL da indicare è: git://github.com/amusarra/MVNSugarCRMCE64v4APISOAPLibrary.git. Qualora il connettore SCM non fosse presente in elenco è possibile installarlo tramite l’apposito link all’M2E MarketPlace (vedi Figura 2).

Configurazione del connettore SCM

Figura 2. Configurazione del connettore più repository SCM

E’ possibile lasciare le impostazione predefinite per quel che riguarda la locazione su file system del progetto, così come indicato in Figura 3.

Selezione della locazione del Progetto

Figura 3. Selezione della locazione del Progetto

Terminata la configurazione dell’import, confermata dalla pressione del pulsante Finish, inizia il processo di checkout (della durata di poco meno di un minuto), al termine del quale viene mostrato il contenuto del progetto appena importato (vedi Figura 4).

Progetto dopo il completamento del checkout

Figura 4. Progetto dopo il completamento del checkout

A questo punto non resta altro che eseguire il processo di build dal menu (contestuale del progetto) Run AS =>; Maven Install, così come indicato in Figura 5.

Esecuzione del Goal Maven Install

Figura 5. Esecuzione del Goal Maven Install

Avviato il processo di build, in console vedrete una serie d’informazioni sulle operazioni (Goal), tra le quali: wsdl2java e Test. In Figura 6 (in rosso) è evidenziata la fase di generazione del client Java dal WSDL, mentre in Figura 7 è evidenziata la fase di test del client appena generato.

Per quanto riguarda il test, è stata realizzata una semplice classe JUnit, eseguita poi dal plugin Maven Surefire subito dopo la fase di compilazione. Il test esegue i seguenti due item sul server di SugarCRM:

  • Get ServerInfo
  • Login
La classe di test si chiama it.shirus.labs.sugarcrm.client.soap.SimpleClientTest, questa utilizza un file di properties da cui legge i dati di accesso all’istanza di SugarCRM. Sul file di properties troverete dei dati che fanno riferimento ad una mia istanza installata sul Cloud phpFog.
Console che mostra in particolare l'esecuzione di wsdl2java

Figura 6. Console che mostra in particolare l'esecuzione di wsdl2java

Esecuzione del test JUnit

Figura 7. Esecuzione del test JUnit

La directory target del progetto, dopo il processo di build, conterrà una serie di nuove directory e file, uno dei file più importanti è per l’appunto artifact (un file jar) che si chiama sugarcrmce-64-v4-soap-api-0.0.1-SNAPSHOT.jar da utilizzare in possibili altri progetti. A seguire una serie di figure che mostrano alcune parti del site di distribuzione creato da Maven stesso tramite il comando: mvn site.

Site: Dipendenze di Progetto

Figura 8. Site: Dipendenze di Progetto

Site: Build Plugin

Figura 9. Site: Build Plugin

Site: Source Repository

Figura 10. Site: Source Repository

Conclusioni

Ho voluto sfruttare il progetto del client Java SugarCRM per indurre la vostra curiosità verso questo strumento potente che prende il nome di Maven. Si tratta di un strumento completo per la gestione di progetti software Java, in termini di compilazione del codice, distribuzione, documentazione e collaborazione del team di sviluppo. E’ errato arrivare alla conclusione che Maven sia “solamente” un altro strumento di build o che si tratti di una semplice sostituzione di Ant. Anche se in forma “stringata” abbiamo avuto modo di verificare come questo strumento faciliti determinate operazioni consentendo un risparmio di tempo notevole.

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