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:
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
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.
- 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:
<maven.test.skip>true</maven.test.skip>
Quest'opera è distribuita con Licenza Creative Commons Attribuzione 4.0 Internazionale (CC BY 4.0) - Condividi allo stesso modo
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
<maven.test.skip>true</maven.test.skip>
Quest'opera è distribuita con Licenza Creative Commons Attribuzione 4.0 Internazionale (CC BY 4.0) - Condividi allo stesso modo
Commenti
Posta un commento