Сегодня я покажу вам один из способов использования среды 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. Оставьте комментарий, если у вас есть лучший способ сделать это, потому что я всегда стараюсь сделать вещи проще, спасибо.