Il y a "Introduction à Vert.x" dans les documents de la série Vert.x 3. Il décrit comment assembler le code source à partir de zéro pour créer un écran CRUD simple, ce qui est un excellent premier tutoriel. Mais malheureusement, il est écrit sur la base de Maven, donc Gradle ne dit pas comment le faire. J'ai donc essayé ce tutoriel sur Gradle. La source se trouve dans le référentiel suivant.
https://github.com/nakaken0629/my-first-app
Pour le moment, faites de votre mieux par vous-même jusqu'à ce que la série Gradle 3 fonctionne. J'essaye sur un Mac. Je pense que vous pouvez faire la même chose avec Linux, mais je pense que Windows a plus de correctifs. Si vous pouvez exécuter Gradle de cette façon, l'installation de Gradle est terminée.
$ gradle --version
------------------------------------------------------------
Gradle 3.4.1
------------------------------------------------------------
Build time: 2017-03-03 19:45:41 UTC
Revision: 9eb76efdd3d034dc506c719dac2955efb5ff9a93
Groovy: 2.4.7
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_101 (Oracle Corporation 25.101-b13)
OS: Mac OS X 10.11.6 x86_64
My first Vert.x 3 Application
Let’s start !
Commencez par créer un nouveau projet.
$ mkdir my-first-app
$ cd my-first-app
$ gradle init --type java-application
Définissez les informations du projet et le paramètre pour faire référence à vertx-core dans build.gradle.
diff --git a/build.gradle b/build.gradle
index c63225d..2576243 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,6 +6,12 @@
* user guide available at https://docs.gradle.org/3.4.1/userguide/tutorial_java_projects.html
*/
+group 'io.vertx.blog'
+version '1.0-SNAPSHOT'
+project.ext {
+ artifactId = 'my-first-app'
+}
+
// Apply the java plugin to add support for Java
apply plugin: 'java'
@@ -21,7 +27,7 @@ repositories {
dependencies {
// This dependency is found on compile classpath of this component and consumers.
- compile 'com.google.guava:guava:20.0'
+ compile 'io.vertx:vertx-core:3.0.0'
// Use JUnit test framework
testCompile 'junit:junit:4.12'
Let’s code !
Créez la classe MyFirstVerticle dans "src / main / java / io / vertx / blog / first / MyFirstVerticle.java".
Maintenant, la compilation passera.
$ ./gradlew compileJava
:compileJava UP-TO-DATE
BUILD SUCCESSFUL
Total time: 2.633 secs
Let’s test
Définissez la référence à vertx-unit dans build.gradle.
diff --git a/build.gradle b/build.gradle
index 2576243..404ca01 100644
--- a/build.gradle
+++ b/build.gradle
@@ -31,6 +31,7 @@ dependencies {
// Use JUnit test framework
testCompile 'junit:junit:4.12'
+ testCompile 'io.vertx:vertx-unit:3.0.0'
}
Créez la classe MyFirstVerticleTest dans "src / test / java / io / vertx / blog / first / MyFirstVerticleTest.java".
Le test va maintenant réussir.
$ ./gradlew test
:compileJava UP-TO-DATE
:processResources NO-SOURCE
:classes UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources NO-SOURCE
:testClasses UP-TO-DATE
:test UP-TO-DATE
BUILD SUCCESSFUL
Total time: 1.665 secs
Packaging
Étant donné que l'ombre est un plug-in pour Maven, nous allons introduire l'ombre avec une fonction similaire dans Gradle. Tout ce que vous avez à faire est de le définir dans build.gradle. Le contenu suivant a été ajouté.
$ git diff
diff --git a/build.gradle b/build.gradle
index 404ca01..c7198bb 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,6 +6,10 @@
* user guide available at https://docs.gradle.org/3.4.1/userguide/tutorial_java_projects.html
*/
+plugins {
+ id 'com.github.johnrengelman.shadow' version '1.2.3'
+}
+
group 'io.vertx.blog'
version '1.0-SNAPSHOT'
project.ext {
@@ -35,5 +39,14 @@ dependencies {
}
// Define the main class for the application
-mainClassName = 'App'
-
+mainClassName = 'io.vertx.core.Starter'
+
+shadowJar {
+ classifier = 'fat'
+ manifest {
+ attributes 'Main-Verticle': 'io.vertx.blog.first.MyFirstVerticle'
+ }
+ mergeServiceFiles {
+ include 'META-INF/services/io.vertx.core.spi.VerticleFactory'
+ }
+}
Exécutez la tâche shadowJar pour créer un gros fichier jar. Le fichier sera créé dans le répertoire "build / libs /".
$ ./gradlew shadowJar
:compileJava
:processResources NO-SOURCE
:classes
:shadowJar
BUILD SUCCESSFUL
Total time: 2.74 secs
Executing our application
Vous pouvez le démarrer avec la commande suivante. Appuyez sur "CTRL + C" pour arrêter.
$ java -jar build/libs/my-first-app-1.0-SNAPSHOT-fat.jar
3 26, 2017 9:59:36 heures du matin.vertx.core.Starter
information: Succeeded in deploying verticle
Vert.x Application Configuration
Ce chapitre ne contient aucune personnalisation notable uniquement pour Gradle.
Some Rest with Vert.x
Vert.x Web
Ajoutez vertx-web au classpath.
$ git diff head^ head
diff --git a/build.gradle b/build.gradle
index c7198bb..31f115e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -32,6 +32,7 @@ repositories {
dependencies {
// This dependency is found on compile classpath of this component and consumers.
compile 'io.vertx:vertx-core:3.0.0'
+ compile 'io.vertx:vertx-web:3.0.0'
// Use JUnit test framework
testCompile 'junit:junit:4.12'
Some Rest with Vert.x
Ce chapitre ne contient aucune personnalisation notable uniquement pour Gradle.
Unit and Integration Tests
Implement the plan
TODO: Trouvez un port gratuit pour tester et réécrire src / test / resources / my-it-config.json au moment de la construction
Ajoutez un paramètre pour démarrer le processus vertx avant d'exécuter le test et terminer le processus vertx une fois le test terminé en rendant la tâche de test existante dépendante de shadowJar.
diff --git a/build.gradle b/build.gradle
index 31f115e..fc8c656 100644
--- a/build.gradle
+++ b/build.gradle
@@ -51,3 +51,13 @@ shadowJar {
include 'META-INF/services/io.vertx.core.spi.VerticleFactory'
}
}
+
+test.dependsOn.add(shadowJar)
+test.doFirst {
+ ant.java(jar: "build/libs/${project.name}-${version}-fat.jar",
+ fork: true,
+ spawn: true)
+}
+test.doLast {
+ ['sh', '-c', "ps -ax | grep ${project.name}-${version}-fat.jar | grep -v grep | awk 'NR==1{print \$1}' | xargs kill -SIGTERM"].execute()
+}
Hey, we don’t have integration tests !
Définissez build.gradle pour ajouter «AssertJ» et «Rest-Assured» au chemin de classe.
diff --git a/build.gradle b/build.gradle
index fc8c656..a5ea94a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -37,6 +37,8 @@ dependencies {
// Use JUnit test framework
testCompile 'junit:junit:4.12'
testCompile 'io.vertx:vertx-unit:3.0.0'
+ testCompile "com.jayway.restassured:rest-assured:2.4.0"
+ testCompile "org.assertj:assertj-core:2.0.0"
}
Vous pouvez désormais également réussir le test d'intégration.
$ ./gradlew test
:compileJava
:processResources
:classes
:shadowJar
:compileTestJava
:processTestResources NO-SOURCE
:testClasses
:test
BUILD SUCCESSFUL
Total time: 9.685 secs
Using the asynchronous SQL client
Ce chapitre ne contient aucune personnalisation notable uniquement pour Gradle.
Combine vert.x and mongo to build a giant
TODO: Essayez-le (je ne suis pas intéressé par mongo pour l'instant, donc je le passe :-p)
Recommended Posts