Статьи

Настройка проекта Vert.x для работы с Maven и NetBeans IDE 7.1 в OS X и Java 7

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