Подтвердить что ты не робот

Как развернуть несколько одноранговых веб-страниц из родительской помпы

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

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

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

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

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

например, webapp1/pom.xml выглядит следующим образом:

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

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

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

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

4b9b3361

Ответ 1

EDIT: теперь я полностью отредактировал свой первый ответ, чтобы лучше понять ожидания OP.

Отметьте 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>
[...]

Затем добавьте модули, которые вы хотите развернуть, указав параметры развертывания явно внутри конфигурации плагина (см. Справочное руководство 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 и развертывать свои webapps на нем с помощью простого (для запуска из проекта, содержащего конфигурацию плагина):

$ mvn cargo:start

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