Как развернуть несколько одноранговых веб-приложений из родительского ПОМа? - PullRequest
18 голосов
/ 12 марта 2009

У меня есть набор веб-приложений, которыми я управляю, и пытаюсь перейти на maven.

/pom.xml            // parent pom
 webapp1/pom.xml    // configured to point to parent
 webapp2/pom.xml    // peer of webapp1 and points to parent.

каждый из веб-приложений ссылается на родительский pom, и оба они в настоящее время имеют работающий плагин Jetty Maven.

У меня вопрос, как мне смонтировать каждый из веб-приложений из родительского pom, чтобы mvn jetty: run работал в родительском каталоге?

изменить на ответ: Паскаль Т Проблема не столько в том, что я получаю сообщение об ошибке при попытке запустить команду из корневого модуля, но в том, что я не уверен, как ее настроить.

например, webapp1 / pom.xml выглядит так:

<project>
...
<plugins>
  <plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
  </plugin>
</plugins>
...
</project>

Перейдя в этот каталог и набрав mvn jetty: run отлично работает и дает мне возможность нажать: http://localhost:8080/webapp1.

Тем не менее, я хотел бы быть в родительском элементе webapp1 и запускать все 'n' webapps из родительского каталога. Таким образом, http://localhost:8080/webapp1, и http://localhost:8080/webapp2 доступны с одним параметром командной строки.

Кстати, если бы ответ включал плагин tomcat, это было бы хорошо.

Ответы [ 2 ]

10 голосов
/ 12 марта 2009

РЕДАКТИРОВАТЬ : я полностью отредактировал свой первый ответ, теперь я лучше понимаю ожидания ОП.

Извлеките Cargo , тонкую оболочку, которая позволяет вам манипулировать контейнерами Java EE стандартным способом .

На самом деле, на веб-сайте Cargo есть учебник , который демонстрирует, как использовать плагин Cargo Maven2 для автоматического запуска / остановки контейнера (возможно, развертывания в нем некоторых развертываемых объектов при его запуске), что и нужно Ищите из того, что я поняла.

Я просто не уверен, что это можно сделать из родительского каталога, и если это необходимо, или было бы нормально сделать это из другого каталога. Я вернусь к этому позже. Давайте сначала посмотрим на настройку плагина Cargo Maven2.

В вашем случае вы можете начать с минимальной конфигурации (которая использует Jetty 5.x, который является контейнером Cargo по умолчанию):

[...]
<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.cargo</groupId>
      <artifactId>cargo-maven2-plugin</artifactId>
    </plugin>
  </plugins>
</build>
[...]

Если вы хотите использовать Jetty 6.x, вам нужно будет указать <containerId> и <type> в элементе <container>:

[...]
<plugin>
 <groupId>org.codehaus.cargo</groupId>
 <artifactId>cargo-maven2-plugin</artifactId>
 <configuration>
   <container>
     <containerId>jetty6x</containerId>
     <type>embedded</type>
   </container>
 </configuration>
</plugin>
[...]

Затем добавьте модули, которые вы хотите развернуть, определив deployables явно в конфигурации плагина (подробные сведения о конфигурации см. В Справочном руководстве по плагину Maven2 ):

<deployables>
  <deployable>
    <groupId>com.mycompany.myproject</groupId>
    <artifactId>myproject-alpha</artifactId>
    <type>war</type>
    <properties>
      <context>optional alpha root context</context>
    </properties>
  </deployable>
  <deployable>
    <groupId>com.mycompany.myproject</groupId>
    <artifactId>myproject-beta</artifactId>
    <type>war</type>
    <properties>
      <context>optional beta root context</context>
    </properties>
  </deployable>
  [...]
</deployables>

При этом вы сможете запустить Jetty и развернуть на нем свои веб-приложения с помощью простого (для запуска из проекта, содержащего конфигурацию грузового плагина):

$ mvn cargo:start

Я просто не уверен, что это может работать с родительским pom (интересно, может ли это привести к проблемам с циклическими зависимостями), и я не проверял это. Но лично я бы положил все эти вещи в отдельный проект, например в одноуровневом проекте ваших веб-приложений, а не в родительском пом. Я не думаю, что это действительно большое дело, и это IMHO лучше, особенно если вы планируете использовать груз для интеграционного тестирования .

6 голосов
/ 18 сентября 2009

Может быть, эта ссылка решит вашу проблему:

http://www.jiajia.eu/post/2008/10/08/Deploy-multiple-web-apps-with-maven-jetty-plugin.aspx.

ссылка выше не работает, поэтому вот новая:

http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin

См. Раздел «Запуск нескольких веб-приложений».

...