Jelastic Cloud + Maven. Часть 1

Что такое Jelastic Cloud? это облачный java-хостинг, а с некоторых пор и php-хостинг, который поддерживает такие сервера приложений как Tomcat 6/7, Jetty 6, Glassfish 3, среду выполнения Java 6/7, а так же БД MariaDB 5.5, MySQL 5.5, PostgreSQL 8.4, MongoDB 2.0 и CouchDB 1.2 (версии указаны на момент публикации поста). Более подробно можно узнать у них на сайте.

Мы же поговорим про создание и загрузку java web-приложения в cloud-окружение посредством maven-плагина от Jelastic.

В первой части мы создадим окружение в облаке и создадим простой web-проект, который и установим в окружение.

шаг 1. Создадим cloud-окружение.

Для этого потребуется создать, если у вас её ещё нет, учетную запись и перейти в «Панель администрирования» у своего провайдера (Jelastic Cloud располагается у разных провайдеров).

Я выбрал tomcat 6 и java 6. Использовать окружение будет от одного до трёх клаудлетов. так же, на картинке я подчеркнул имя окружения (env-6560883) — на него мы будет в последующем устанавливать web-приложение, а так же, по нему мы будем открывать его в браузере (env-6560883.j.rsnx.ru)


шаг 2. Создадим простое web-приложение используя Maven.

много картинок





После того, как Maven закончит создавать базовую структуру прокта, откроем файл /src/main/webapp/WEB-INF/web.xml и заменим в нём содержимое полностью на наше, тем самым, указывая, что мы будем использовать servlet API 2.5 вместо 2.3.

xml-исходник
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>



Что же, мы закончили создавать наше самое простое web-приложение и теперь самое время приступить к настройки проекта для его установки через Maven на Jelastic Cloud.
Вы можете спросить, чем меня не устраивает пример от самого Jelastic? ну, хотя бы тем, что там требуется делать 2 шага (собрать, установить) вместо одного (собрать и установить).
Приступим.

Для начала, в соответствии с официальной документацией, добавим в ~/.m2/settings.xml следующий блок:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <profiles>
    <profile>
      <id>jelastic</id>
<удаляем>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
</удаляем>
      <properties>
        <jelastic.username>[insert your Jelastic user name]</jelastic.username>
        <jelastic.password>[insert your Jelastic password]</jelastic.password>
      </properties>
    </profile>
  </profiles>
</settings>

отличие составило только в том, что я удалил включение профиля по-умолчанию (секция activation) — мне удобнее явно включать нужные профили для конкретного проекта.

теперь, так же, согласно официальной документации, добавим в pom.xml проекта репозитарий для jelastic-плагина:
<pluginRepositories>
    <pluginRepository>
      <id>sonatype-oss-public</id>
      <url>https://oss.sonatype.org/content/groups/public</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>


На этом наше соответствие официальной документацией Jelastic заканчивается и переходим к «магии».

добавил в pom.xml новый профиль с id, соответствующим id jelastic-профиля в settings.xml:

xml-исходник
<profiles>
  <profile>
    <id>jelastic</id>
    <build>
      <plugins>
        <plugin>
          <groupId>com.jelastic</groupId>
          <artifactId>jelastic-maven-plugin</artifactId>
          <version>1.7-SNAPSHOT</version>
          <configuration>
            <api_hoster><span style="color: red;"><b>app.j.rsnx.ru</b></span></api_hoster>
            <context>ROOT</context>
            <email>${jelastic.username}</email>
            <environment><span style="color: red;"><b>env-6560883</b></span></environment>
            <password>${jelastic.password}</password>
          </configuration>
          <executions>
            <execution>
              <phase>install</phase>
              <goals>
                <goal>deploy</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.4</version>
          <executions>
            <execution>
              <phase>none</phase>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>



Здесь мы сделали следующее:
1) отключили для данного профиля выполнение плагина maven-install-plugin, который производит установку нашего артефакта в локальный репозитарий Maven\
2) Добавили maven-плагин jelastic с указанием cloud-окружения, данных для аутентификации и контекст для нашего web-приложения (если вам потребуется не корень домена, то вместо ROOT напишите ваш путь, например "/myapp")
3) для maven-плагина jelastic указали, что он выполняется автоматически на шаге "install"

Всё — теперь мы готовы собрать и установить наше web-приложение на Jelastic Cloud.

включаем профиль "jelastic" и указываем maven произвести установку, указав этап "install"


Смотрим, что установка прошла успешно:
много картинок





На этом наша первая часть закончена — мы успешно выполнили deploy нашего web-приложения в окружение Jelastic Cloud.

PS: на текущий момент при использовании maven-плагина jelastic наблюдается проблема с созданием дубликатов war-файлов в диспетчере дистрибутивов — приходится заходить в панель администрирования и удалять вручную дубликаты.
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 8

    0
    Также у нас есть плагин для Intellij IDEA для деплоя приложения напрямую одним кликом. Сборка артефактов maven в нем тоже поддерживается.
    Плагин находтся в официальном репозитарии JetBrains.
      0
      Видел, но для него требуется SVN/Git репозитарий, которые не для каждого проекта используется.
        0
        Не сборка в облаке Maven'ом, а именно плагин Jelastic для IDE, позволяющий собирать локально war и деплоить в облако. Ему точно не требуется никаких репозитариев.
          0
          если приложение не использует maven, то да)
            0
            И если использует maven, тоже не требуется репозитариев. Что вы мне рассказываете, я разрабатывал этот плагин :)
              0
              Вот простой проект (скачать) — просто добавил filtering для maven-war-plugin, чтобы в index.jsp попал property из pom файла.
              При deploy через maven-плагин, в index.jsp прекрасно обрабатывается фильтрация.
              При deploy через плагин IDE нет.
                0
                Если на артефактах в идее поставить галочки «Build on make», то ваш пример работает.
                testingenv.j.rsnx.ru/ttt/ — задеплоено через плагин.
                  0
                  Странно. поставил галки для обоих артефактов. контрольно поменял значение property с «maven property1» на «maven property2». сделал деплой, а приложение всё равно показывает пустоту. env-2413093.j.rsnx.ru/

                  Предлагаю вынести данный диалог в личку.

    Only users with full accounts can post comments. Log in, please.