Maven и Cargo: запустите Jetty-Container с war-File

Я только что начал новый проект Maven, который предназначен для запуска Jetty, содержащего военный файл из зависимого проекта. Грузовой плагин должен быть подходящим инструментом для этого.

К сожалению, это не работает для меня. Он успешно запускает Jetty, но содержит только файл-грузовой-войны-по-умолчанию, а не ожидаемый.

Это соответствующая часть моего файла войны:

<dependencies>
   <dependency>
      <groupId>com.group</groupId>
      <artifactId>my-webapp</artifactId>
      <version>0.1.0-SNAPSHOT</version>
      <type>war</type>
   </dependency>    
</dependencies>

<build>     
    <plugins>                       
        <plugin>
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <version>1.0.5</version>
            <configuration>
                <container>
                    <containerId>jetty7x</containerId>
                    <type>embedded</type>                       
                </container>
                <configuration>
                    <properties>
                        <cargo.servlet.port>7070</cargo.servlet.port>
                        <cargo.logging>high</cargo.logging>
                    </properties>
                </configuration>            
                <deployer>
                    <type>embedded</type>
                    <deployables>
                        <deployable>
                            <groupId>com.group</groupId>
                            <type>war</type>
                            <artifactId>my-webapp</artifactId>
                            <properties>
                                <context>/path</context>
                            </properties>
                        </deployable>                           
                    </deployables>
                </deployer>                 
            </configuration>                
        </plugin>
    </plugins>
</build>

Я использую плагин, запуская mvn cargo:start.

Журнал ошибок не выводится.

[INFO] [cargo:start]
[INFO] [beddedLocalContainer] Jetty 7.x Embedded starting...
2011-01-17 18:57:44.586:INFO::jetty-7.2.0.v20101020
2011-01-17 18:57:44.663:INFO::Extract jar:file:/tmp/cargo/conf/cargocpc.war!/ to /tmp/jetty-0.0.0.0-7070-cargocpc.war-_cargocpc-any-/webapp
2011-01-17 18:57:45.082:INFO::Started [email protected]:7070
[INFO] [beddedLocalContainer] Jetty 7.x Embedded started on port [7070]

Как я могу сказать Cargo загрузить указанный файл войны?


person tautologe    schedule 17.01.2011    source источник


Ответы (4)


Хорошо, теперь я приступил к работе.

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

Вероятно, это ошибка. Я не могу представить какой-либо разумной причины для такого поведения.

(также pom-файл, который я разместил выше, был неправильным, вы должны адаптировать изменения, которые Робин предлагает в своем ответе)

person tautologe    schedule 18.01.2011
comment
Cargo молча игнорирует любые зависимости моментальных снимков??/?/? Хорошо знать. Кажется, меня просто укусили... - person Jonas N; 26.03.2012
comment
очень вряд ли. Я запускаю грузы со снапшотами, не проблема. - person Genry; 11.05.2014

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

            <configuration>
                <type>standalone</type>
                <properties>
                    <cargo.servlet.port>7070</cargo.servlet.port>
                    <cargo.logging>high</cargo.logging>
                </properties>
                <deployables>
                    <deployable>
                        <groupId>com.group</groupId>
                        <type>war</type>
                        <artifactId>my-webapp</artifactId>
                        <properties>
                            <context>/path</context>
                        </properties>
                    </deployable>                           
                </deployables>                
             </configuration>           
person Robin    schedule 17.01.2011
comment
Спасибо, вы правы. Я пробовал это раньше, и это не сработало, поэтому я попытался использовать элемент deployer. Настоящая проблема заключалась в том, что Cargo, по-видимому, игнорирует зависимости моментальных снимков. - person tautologe; 18.01.2011

Если вы просто хотите развернуть на встроенном Jetty, вам может не понадобиться Cargo. Просто используйте это в pom.xml вашего веб-приложения:

  <build>
    ...
    ...
    <plugins>
        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>7.2.2.v20101205</version>
            <configuration>
              <scanIntervalSeconds>10</scanIntervalSeconds>
              <webAppConfig>
                <contextPath>/path</contextPath>
              </webAppConfig>
              <connectors>
                <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
                  <port>7070</port>
                  <maxIdleTime>60000</maxIdleTime>
                </connector>
            </connectors>
            </configuration>
        </plugin>
        ...
        ...
    </plugins>
    ...
    ...
  </build>

создать и запустить пользователя Jetty

 mvn clean install jetty:run
person Nishant    schedule 17.01.2011
comment
Это потребует от него сначала запустить mvn против другого pom в другом проекте. Он хочет развернуть зависимую войну от проекта, а пристань не очень хорошо с этим справляется. Я бы предположил, что для какого-то типа интеграционного тестирования. - person Robin; 17.01.2011
comment
Он лучше всего подходит для среды разработки, где вы пишете код и сразу же развертываете его. Вы просто помещаете этот фрагмент XML в pom.xml своего веб-приложения и добавляете mvn clean install jetty:run в меню run > run configuration. Теперь, всякий раз, когда вам нужно протестировать, вы просто щелкнете по этому пункту меню, сборка завершена, приложение развернуто, а сервер запущен и работает. чистый. - person Nishant; 17.01.2011
comment
Нишант, это не то, чем он хочет заниматься. Он хочет сделать java -jar myproject.war - person Rafael Sanches; 21.03.2012
comment
@RafaelSanches Похоже, ОП ответил сам себе. Итак, смотрите, что он хотел. - person Nishant; 21.03.2012

Кажется, это может работать лучше, если вы сначала выполните развертывание, скажем, запустите команду «mvn cargo:deploy», а затем запустите «mvn cargo:start».

person Mohammed Irfan Tirupattur    schedule 06.06.2013