[JAVA] Versuchen Sie "Einführung in Vert.x" mit Gradle

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

Versuchen Sie "Einführung in Vert.x" mit Gradle
[Einführung] Erstellen Sie eine Ruby on Rails-Anwendung
Einführung in Ruby 2
Einführung in Micronaut 1 ~ Einführung ~
Einführung in die Migration
Einführung in Java
Einführung in Doma
Versuchen Sie, eine Java 8-Umgebung unter Amazon Linux2 zu erstellen
Einführung in Kotlin für iOS-Entwickler ③-About gradle
Versuchen Sie, Hallo Welt mit Frühling + Gradle anzuzeigen
Einführung in JAR-Dateien
Versuche Edelstein freizugeben
Einführung in Ratpack (8) -Session
Probieren Sie DisplayLink unter Ubuntu 20.04 aus
Probieren Sie OpenLiteSpeed unter CentOS8 aus
Einführung in die Bitarithmetik
Einführung in Ratpack (6) --Promise
Einführung in Ratpack (9) - Thymeleaf
Einführung in PlayFramework 2.7 ① Übersicht
Einführung in das Android-Layout
Einführung in Entwurfsmuster (Einführung)
Einführung in den Befehl javadoc
Einführung in den Befehl jar
Einführung in Ratpack (2) -Architektur
Einführung in den Lambda-Stil
Versuchen wir Zoomdata (Einführung)
Wie benutzt man Gradle?
Einführung in die Keycloak-Entwicklung
Einführung in den Befehl javac
<Punktinstallation> Einführung in Ruby on Rails5 Vergleich des Quellcodes
Probieren Sie Rabbit MQ + PHP unter CentOS aus
Einführung in Entwurfsmuster (Builder)
Versuchen Sie Spring Boot von 0 bis 100.
Gradle zum Anfassen und Erinnern
Einführung in Ratpack (5) --Json & Registry
Probieren Sie Docker unter Windows 10 Home aus
Wie man mit Heroku einsetzt
Einführung in Metabase ~ Umgebungskonstruktion ~
Einführung in Ratpack (7) - Guice & Spring
(Punktinstallation) Einführung in Java8_Impression
Einführung in Entwurfsmuster (Composite)
Einführung in Micronaut 2 ~ Unit Test ~
Einführung in JUnit (Studiennotiz)
Einführung in Spring Boot ~ ~ DI ~
Einführung in Designmuster (Fliegengewicht)
[Java] Einführung in den Lambda-Ausdruck
Einführung in Spring Boot ② ~ AOP ~
Einführung in Apache Beam (2) ~ ParDo ~
Einführung in die EHRbase 2-REST-API
Einführung in Entwurfsmuster Prototyp
[Java] Einführung in die Stream-API
Einführung in Entwurfsmuster (Iterator)
Einführung in Spring Boot Teil 1