Die Dokumente der Vert.x 3-Serie enthalten "Einführung in Vert.x". Es wird beschrieben, wie Sie den Quellcode von Grund auf neu zusammenstellen, um einen einfachen CRUD-Bildschirm zu erstellen. Dies ist ein hervorragendes erstes Tutorial. Aber leider basiert es auf Maven, so dass Gradle nicht sagt, wie es geht. Also habe ich dieses Tutorial auf Gradle ausprobiert. Die Quelle befindet sich im folgenden Repository.
https://github.com/nakaken0629/my-first-app
Bitte geben Sie vorerst Ihr Bestes, bis die Gradle 3-Serie funktioniert. Ich versuche es auf einem Mac. Ich denke, Sie können das gleiche mit Linux tun, aber ich denke, Windows hat mehr Korrekturen. Wenn Sie Gradle so ausführen können, ist die Installation von Gradle abgeschlossen.
$ 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 !
Erstellen Sie zunächst ein neues Projekt.
$ mkdir my-first-app
$ cd my-first-app
$ gradle init --type java-application
Legen Sie die Projektinformationen und die Einstellung so fest, dass sie in build.gradle auf vertx-core verweisen.
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 !
Erstellen Sie die MyFirstVerticle-Klasse in "src / main / java / io / vertx / blog / first / MyFirstVerticle.java".
Jetzt wird die Zusammenstellung bestanden.
$ ./gradlew compileJava
:compileJava UP-TO-DATE
BUILD SUCCESSFUL
Total time: 2.633 secs
Let’s test
Setzen Sie den Verweis auf vertx-unit in 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'
}
Erstellen Sie die MyFirstVerticleTest-Klasse in "src / test / java / io / vertx / blog / first / MyFirstVerticleTest.java".
Der Test wird nun bestanden.
$ ./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
Da Schatten ein Plug-In für Maven ist, werden wir in Gradle Schatten mit ähnlicher Funktion einführen. Alles was Sie tun müssen, ist es in build.gradle zu setzen. Die folgenden Inhalte wurden hinzugefügt.
$ 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'
+ }
+}
Führen Sie die Aufgabe shadowJar aus, um eine Fat JAR-Datei zu erstellen. Die Datei wird im Verzeichnis "build / libs /" erstellt.
$ ./gradlew shadowJar
:compileJava
:processResources NO-SOURCE
:classes
:shadowJar
BUILD SUCCESSFUL
Total time: 2.74 secs
Executing our application
Sie können es mit dem folgenden Befehl starten. Drücken Sie "STRG + C", um zu stoppen.
$ java -jar build/libs/my-first-app-1.0-SNAPSHOT-fat.jar
3 26, 2017 9:59:36 Uhr io.vertx.core.Starter
Information: Succeeded in deploying verticle
Vert.x Application Configuration
Dieses Kapitel enthält keine nennenswerten Anpassungen nur für Gradle.
Some Rest with Vert.x
Vert.x Web
Fügen Sie vertx-web zum Klassenpfad hinzu.
$ 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
Dieses Kapitel enthält keine nennenswerten Anpassungen nur für Gradle.
Unit and Integration Tests
Implement the plan
TODO: Suchen Sie einen freien Port zum Testen und schreiben Sie src / test / resources / my-it-config.json zur Erstellungszeit neu
Fügen Sie eine Einstellung hinzu, um den Vertx-Prozess vor dem Ausführen des Tests zu starten und den Vertx-Prozess nach Abschluss des Tests zu beenden, indem Sie die vorhandene Testaufgabe von shadowJar abhängig machen.
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 !
Stellen Sie build.gradle so ein, dass "AssertJ" und "Rest-Assured" zum Klassenpfad hinzugefügt werden.
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"
}
Jetzt können Sie auch den Integrationstest bestehen.
$ ./gradlew test
:compileJava
:processResources
:classes
:shadowJar
:compileTestJava
:processTestResources NO-SOURCE
:testClasses
:test
BUILD SUCCESSFUL
Total time: 9.685 secs
Using the asynchronous SQL client
Dieses Kapitel enthält keine nennenswerten Anpassungen nur für Gradle.
Combine vert.x and mongo to build a giant
TODO: Probieren Sie es aus (ich interessiere mich bisher nicht für Mongo, also gebe ich es weiter :-p)
Recommended Posts