Passa ai contenuti principali

JHipster - Uso base






Cosa è

JHipster è un "generatore di applicazioni" che fornisce tutto lo stack necessario ad implementare una applicazione web e/o a microservizi basata su Spring Boot e AngularJs.

E' dotato di un marketplace di componenti già pronte:

https://www.jhipster.tech/#modules

E' dotato di uno strumento web per la modellazione dello schema E-R:

https://start.jhipster.tech/jdl-studio/



Prerequisiti

- Java 8 
- Node.js (usare la versione LTS 64-bit)
- NPM viene installato con Node.js ma va aggiornato
  
  $ npm install -g npm

- Per usare il JHipster Marketplace, installare Yeoman: 
  
  $ npm install -g yo



Uso base

Gli step, presi dal sito ufficiale sono questi:

1. Installare JHipster:
   
  $ npm install -g generator-jhipster

Nota: per installare una versione specifica del generator:

  $ npm install -g generator-jhipster@6.0.5

2. Crea una nuova directory ed entra dentro questa:

  $ mkdir myApp
  $ cd MyApp

3. Eseguire JHipster e seguire le istruzioni sullo schermo:

  $ jhipster

Nota: in fase di sviluppo impostare a "No" l'opzione relativa alla cache di Hibernate perché fa caching dei resultset nelle interrogazioni al db e non li aggiorna fin quando non scade il tempo di cache. 

4. Modellare le proprie entità su JDL Studio e scaricare il file jhipster-jdl.jh

5. Generare le entità con il comando:

  $ jhipster import-jdl jhipster-jdl.jh


A questo punto il sistema automaticamente genererà tutto il codice necessario, farà partire la build e pacchettizzerà l'applicazione.
Per lanciare l'applicazione eseguire nella directory di questa il comando:

  $ npm start





ATTENZIONE: così parte solo il frontend (quindi il login non funzionerà).

Per il backend bisogna lanciare

  $ mvnw

oppure 

  $ yarn start

Se non è presente sul sistema:

1. Scaricare il repository git:

  $ git clone git://github.com/vdemeester/mvnw.git ~/.mvnw

2. Aggiungere il path di mvn alla variabile di ambienre $PATH:

  $ echo 'export PATH="$HOME/.mvnw/bin:$PATH"' >> ~/.bash_profile

3. Inserire l'init di mvnw all'avvio della consolle:
  
  $ echo 'eval "$(mvnw init -)"' >> ~/.bash_profile


NOTA: ho avuto un sacco di problemi con la versione di jdk installata sul sistema. Ho risolto con openjdk-8-jdk.


Con il wizard del lancio del comando "jhipster" ho specificato come database "MongoDB". Quindi quando partiva mvnw mi restituiva un errore di accesso ad database. Questo perchè MongoDb non è installato.

Ho scaricato dal docker-hub il docker con MongoDb:

    $ docker pull mongo

L'ho eseguito dovendo specificare la porta e dove avere i dati in persistenza:

    $ sudo docker run -p27017:27017 --name myMongoDbExposedNow -v /home/utente/myApp/datiMyApp:/data/db -d mongo

E la MyApp mi ha loggato:





Oltre all'applicazione già pronta per il CRUD sulle entità sulle quali è stata modellata si hanno anche tutti i servizi disponibili nativamente come API:




Sviluppo


Se si usa Eclipse come IDE (installare il plugin per Maven):

- Importare il progetto generato da JHipster come "Maven Project"
- Impostare sulle proprietà del progetto, nel menu Maven:
   
    “Active Maven Profiles”, type dev,IDE

Fare riferimento alla guida :


https://www.jhipster.tech/configuring-ide-eclipse/

Esiste anche un apposito plug-in per eclipse dal quale ho provato ad usare il wizard per la creazione di una applicazione a microservizi ma si comporta in maniera molto diversa dal wizard eseguibile a riga di comando perché crea un progetto vuoto.


Note


- L'importazione in Eclipse di progetti come Maven porta questo errore fra i Markers di Eclipse:

"The project was not built since its build path is incomplete. Cannot find the class file for javax.servlet.ServletContext. Fix the build path then try building this project"

Si risolve aggiungendo a "Properties">"Java Build Path">"Libraries" la libreria: 


Project > Properties > Java Build Path > Libraries > Add library from library tab > Choose server runtime > Next > choose Apache Tomcat

Oppure mediante pom (se il progetto è di tipo Maven):
   <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <scope>provided</scope>

   </dependency>

- A questa soluzione segue l'errore: 

"Cannot find the class file for io.undertow.Undertow$Builder."
Soluzione:


  • Right click on Project -> Properties -> Maven
  • In “Active Maven Profiles”, type dev,IDE
- Per evitare che "mvnw" faccia la build delle classi di test basta aggiungere nelle "<properties>" del pom:
   
   <maven.test.skip>true</maven.test.skip>




Licenza Creative Commons
Quest'opera è distribuita con Licenza Creative Commons Attribuzione 4.0 Internazionale (CC BY 4.0) - Condividi allo stesso modo

Commenti

Post popolari in questo blog

Telecamere Ip con accesso "nascosto"

Telecamere Ip con accesso "nascosto" Storia triste di un auto-hacking obbligato che mi ha fatto scoprire come la nostra privacy è realmente messa a rischi. Storia Ho acquistato dal mercatino/fiera del Radioamatore di Fasano quattro telecamere IP. La scatola riporta "Smart Camera" LF4810. Ne ho montata una e testata in tutte le sue funzionalità per oltre un mese. Chiaramente la manualistica scarsissima, come da tradizione in questi prodotti cinesi di costo molto concorrenziale, consiste in un "pieghevole" di 4 facciate. Chiaramente non erano documentate le impostazioni necessarie per attivare i protocolli ONVIF e RTSP che mi sono indispensabili per l'uso che ne devo fare. Nonostante questa scarsa documentazione dopo l'installazione base fatta con l'apposita app: tutto sembrava corretto. Chiaramente la prima azione che ho compiuto è stata quella di cambiare la password che di default è "123". Subito dopo h...

Dynamic DNS con Duckdns.org in HTTPS

Obiettivo Avere un dominio https con certificato valido da usare come endpoint pubblico per Homeassistant e per un WebHook per i bot telegram. Fase 1 Registrazione del dominio in un servizio di dynamic DNS come https://www.duckdns.org/   : Scegliere per quale sistema operativo installare il client che si occuperà dell'aggiornamento dell'ip: Seguire la semplice guida per la configurazione del processo cron: Fase 2 Creazione del certificato e installazione sul server. Di tutto questo si occuperà una applicazione che si chiama certbot. $ sudo add-apt-repository ppa:certbot/certbot $ sudo apt install python-certbot-apache $ sudo certbot --apache -d ol3.duckdns.org -d www.ol3.duckdns.org Fase 3 Esporre il servizio https sulla rete pubblica. Aprire o reindirizzare la porta 443 verso l'host sul quale si è fatta la configurazione di certbot dal proprio router. Il certificato di certbot è valido per novanta giorn...

Wemos D1 mini ESP8266 - Aggiornamenti OTA

Wemos D1 mini - Aggiornamenti OTA Cosa è Può risultare scomodo dover collegare con un cavo usb un ESP8266 e derivati (come in questo caso un Wemos D1 mini) ad un pc per un semplice aggiornamento software.  OTA sta per "Over The Air". Con questa tecnologia si ha la possibilità di modificare il firmware di questi microcontrollori mediante la wi-fi.  Come funziona Per ottenere questa funzionalità ci si è inventato un meccanismo molto semplice: il nostro microcontrollore, dotato della capacità di aggiornamenti OTA, ha in carico un firmware che all'avvio non fa altro che, usando la libreria ArduinoOTA, collegarsi alla wi-fi (della quale avremo fornito SSID e Password) e mediante il " Multicast DNS " dichiara la sua presenza sulla WI-FI LAN, l' Ide di Arduino rileva questa presenza e ci fornisce il supporto alla comunicazione mediante wi-fi (la porta di rete rilevata prenderà il nome del modello e l'ultima parte del suo mac-address per identificarlo, se non r...