Сегодня я покажу вам один из способов использования среды IDE NetBeans 7.1 и Maven для работы с проектом Vert.x. Это всего лишь один из способов настройки проекта, как я это делаю в настоящее время. Если вы еще этого не сделали, пожалуйста, ознакомьтесь с моей предыдущей статьей о настройке Java 7 в OS X (Lion) .
Убедитесь, что среда IDE NetBeans полностью обновлена как минимум до версии 7.1.2 или новее. Убедитесь, что Java 7 установлена, так как Vert.x работает только с Java 7.
Запустите IDE NetBeans и создайте новый проект: Файл -> Новый проект -> Maven -> Приложение Java
Для имени проекта дайте ему RouteMatchExample, так как я собираюсь позаимствовать часть примера кода для Vert.x.
Мы должны убедиться, что в этом проекте используется Java 7, поэтому, когда проект будет сгенерирован, щелкните правой кнопкой мыши по нему, выберите « Свойства», затем выберите « Компилировать» и установите для платформы Java значение JDK 1.7 .
Вы должны увидеть файл app.java , чтобы изменить его имя, щелкнув его правой кнопкой мыши и выбрав « Refactor -> Rename» . Установите имя как RouteMatchExample . Зайдите в файл и добавьте следующий пример кода:
package com.giantflyingsaucer.vertxroutes;
import org.vertx.java.core.Handler;
import org.vertx.java.core.http.HttpServerRequest;
import org.vertx.java.core.http.RouteMatcher;
import org.vertx.java.deploy.Verticle;
public class RouteMatchExample extends Verticle {
public void start() {
RouteMatcher rm = new RouteMatcher();
rm.get("/details/:user/:id", new Handler<HttpServerRequest>() {
public void handle(HttpServerRequest req) {
req.response.end("User: " + req.params().get("user") + " ID: " + req.params().get("id"));
}
});
vertx.createHttpServer().requestHandler(rm).listen(8080);
}
}
Теперь нам нужно добавить зависимости Vert.x. Поскольку Vert.x не используется в Maven Central, пока вам нужно сделать это вручную. Щелкните правой кнопкой мыши на Зависимости в вашем проекте и выберите: Добавить Зависимость
Мы вручную заполним необходимую информацию для Vert.x. В открывшемся диалоговом окне заполните следующие данные:
Идентификатор группы: org.vertx
Идентификатор артефакта: vertx-core
Версия: 1.0.0
Нажмите кнопку « Добавить» , а затем добавьте еще одну зависимость:
Идентификатор группы: org.vertx
Идентификатор артефакта: vertx-platform
Версия: 1.0.0
Это добавит две зависимости к вашему проекту. Вам нужно щелкнуть по ним правой кнопкой мыши и выбрать « Установить артефакт вручную», а затем перейти туда, куда вы поместили установку Vert.x (файлы jar Vert.x находятся в папке lib / jars ).
Ваш POM-файл Maven теперь будет иметь следующие зависимости:
<dependencies>
<dependency>
<groupId>org.vertx</groupId>
<artifactId>vertx-core</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.vertx</groupId>
<artifactId>vertx-platform</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
В файле POM давайте добавим немного кода, чтобы немного упростить жизнь, и перенесем все дополнительные jar-файлы, которые мы могли бы добавить в наш проект в будущем. Это скопирует эти зависимые фляги из вашего проекта в папку мода Vert.x, где вы можете создать новый мод . Maven xml для этого выглядит следующим образом (настройте при необходимости):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>/Users/chadlung/vert.x-1.0.final/mods/RouteMatchExample/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
Здесь важно, что я перемещаю зависимые банки в следующую папку: /Users/chadlung/vert.x-1.0.final/mods/RouteMatchExample/lib Конечно, вам нужно создать папку VerteMatchExample / lib в Vert. х мод папка. Читайте о модулях, если вы не понимаете их, прежде чем продолжить.
Другая вещь, которую вам нужно сделать, это скопировать файлы классов, которые вы генерируете, в папку проекта мода. Поскольку я использовал следующий пакет: com.giantflyingsaucer.vertxroutes, вам нужно создать структуру папок в папке мод вашего проекта, например: /Users/chadlung/vert.x-1.0.final/mods/RouteMatchExample/com/giantflyingsaucer/vertxroutes
Чтобы скопировать файлы классов, я снова использовал Maven, используя плагин maven-resources-plugin . POM xml выглядит так для этой части:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>/Users/chadlung/vert.x-1.0.final/mods/RouteMatchExample/com/giantflyingsaucer/vertxroutes/</outputDirectory>
<resources>
<resource>
<directory>${project.build.directory}/classes/com/giantflyingsaucer/vertxroutes/</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Теперь каждый раз, когда вы строите проект, все зависимости перемещаются, а также файлы классов. Имейте в виду, что хотя файлы jar Vert.x также перемещаются в папку mod, они на самом деле не нужны, поскольку они уже находятся в пути к классам. Из терминала вы можете легко запустить мод Vert.x, выполнив следующее ( убедитесь, что Vert.x находится на вашем пути ):
$ vertx run RouteMatchExample
В веб-браузере вы можете использовать следующий URL для генерации результата: http: // localhost: 8080 / details / Chad / 123
Результат:
|
Пользователь: Chad ID: 123 |
Весь мой POM выглядит так:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.giantflyingsaucer</groupId>
<artifactId>VertxRoutes</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>VertxRoutes</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.vertx</groupId>
<artifactId>vertx-core</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.vertx</groupId>
<artifactId>vertx-platform</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>/Users/chadlung/vert.x-1.0.final/mods/RouteMatchExample/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>/Users/chadlung/vert.x-1.0.final/mods/RouteMatchExample/com/giantflyingsaucer/vertxroutes/</outputDirectory>
<resources>
<resource>
<directory>${project.build.directory}/classes/com/giantflyingsaucer/vertxroutes/</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Это один из способов настройки проекта мода Vert.x в среде IDE NetBeans 7.1 с использованием Maven. Оставьте комментарий, если у вас есть лучший способ сделать это, потому что я всегда стараюсь сделать вещи проще, спасибо.