Статьи

Настройка сервера приложений с помощью Maven

Во многих случаях невозможно развернуть приложение без предварительной настройки приложения. В JBoss AS 7.x вы можете настроить, например, подключение к вашей базе данных. Или вы должны настроить область безопасности. Может быть, вы также хотите настроить пул SLSB … В любом из этих случаев все разработчики в команде должны иметь общую или хотя бы похожую конфигурацию.

Часто эту информацию можно найти в спорадически отправленных электронных письмах или на некоторых страницах вики. Но что происходит через некоторое время после выпуска, когда вам нужно проверить ветку, чтобы исправить ошибку или добавить новую функцию? Вам нужно будет восстановить конфигурацию, которая была действительной для этой ветви. Так почему бы не добавить файлы конфигурации в вашу систему управления версиями и вместе с простыми файлами конфигурации — конфигурацию maven, которая устанавливает весь сервер приложений?

Давайте постараемся сделать его простым и использовать только общедоступные и часто используемые плагины. Прежде всего давайте добавим все версии, которые нам понадобятся в следующем, в часть свойств файла pom.xml:

1
2
3
4
5
6
<properties>
        <jboss.install.dir>${project.build.directory}/jboss</jboss.install.dir>
        <jboss.version>7.2.0.Final</jboss.version>
        <app.version>${project.version}</app.version>
        <ojdbc.version>11.2.0.1.0</ojdbc.version>
    </properties>

Мы также определяем здесь каталог установки JBoss AS. Таким образом, мы можем изменить его, если захотим, используя опцию командной строки -D. Теперь мы добавляем новый профиль, такой, что мы должны явно включить процедуру установки и чтобы он не был частью обычной сборки:

1
2
3
4
5
6
7
8
<profile>
    <id>setupAs</id>
    <build>
        <plugins>
        ...
                </plugins
        </build>
</profile>

Если у нас есть текущая версия JBoss в качестве артефакта maven, развернутого в нашем хранилище maven, мы можем использовать плагин maven-dependency-plugin для загрузки и распаковки JBoss в каталог установки, указанный выше:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.8</version>
    <executions>
        <execution>
            <id>unpack-jboss</id>
            <phase>package</phase>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>org.jboss</groupId>
                        <artifactId>jboss-as</artifactId>
                        <version>${jboss.version}</version>
                        <type>zip</type>
                        <outputDirectory>${project.build.directory}/jboss</outputDirectory>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>

Теперь, когда сервер приложений распакован, мы должны добавить драйвер JDBC, а также наше приложение (или все, что вам нужно). Мы установили это, добавив еще один блок выполнения в плагин зависимостей maven:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<execution>
    <id>copy</id>
    <phase>package</phase>
    <goals>
        <goal>copy</goal>
    </goals>
    <configuration>
        <artifactItems>
            <artifactItem>
                <groupId>our-company</groupId>
                <artifactId>our-application-ear</artifactId>
                <version>${app.version}</version>
                <type>ear</type>
                <outputDirectory>${jboss.install.dir}/jboss-as-${jboss.version}/standalone/deployments</outputDirectory>
            </artifactItem>
            <artifactItem>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>${ojdbc.version}</version>
                <outputDirectory>${jboss.install.dir}/jboss-as-${jboss.version}/standalone/deployments</outputDirectory>
                <destFileName>ojdbc6.jar</destFileName>
            </artifactItem>
        </artifactItems>
    </configuration>
</execution>

И последнее, но не менее важное: мы также хотим настроить стандартные файлы конфигурации в соответствии с нашими потребностями. Мы можем использовать maven-resources-plugin для замены значений переменных в каждом файле. Поэтому мы добавляем шаблоны для этих файлов в папку ресурсов нашего модуля JBoss и вызываем цель copy-resources:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>copy-jboss-configuration</id>
            <phase>package</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${jboss.install.dir}/jboss-as-${jboss.version}/standalone/configuration</outputDirectory>
                <resources>
                    <resource>
                        <directory>src/main/resources/jboss/standalone/configuration</directory>
                        <filtering>true</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
        <execution>
            <id>copy-jboss-bin</id>
            <phase>package</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${jboss.install.dir}/jboss-as-${jboss.version}/bin</outputDirectory>
                <resources>
                    <resource>
                        <directory>src/main/resources/jboss/bin</directory>
                        <filtering>true</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

Значения для фильтрации могут быть заданы в командной строке с параметром -D. Если в команде более нескольких участников, для каждого пользователя также можно создать файл свойств, который содержит его конкретные значения конфигурации. Если мы используем пользователя ОС в качестве имени файла, мы можем легко выбрать файл по имени текущего пользователя, вошедшего в систему. Таким образом, каждый член команды может легко настроить свой собственный полностью настроенный экземпляр сервера приложений, просто выполнив:

1
mvn clean install -PsetupAs

Чтобы предотвратить удаление только что настроенного сервера при следующем чистом вызове, мы отключаем плагин maven clean для обычной сборки:

1
2
3
4
5
6
7
<plugin>
    <artifactId>maven-clean-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <skip>false</skip>
    </configuration>
</plugin>

В профиле setupAs, созданном выше, мы, конечно, должны включить его, чтобы мы могли удалить всю установку, просто вызвав «mvn clean -PsetupAs». Теперь переключиться на более старую ветку легко, так как мы не теряем время на поиск нужной конфигурации …

Справка: Настройка сервера приложений с maven от нашего партнера по JCG Мартина Моиса в блоге Martin’s Developer World .