Развертывание войны на сервере Tomcat с Maven 1.1 - PullRequest
1 голос
/ 22 сентября 2009

Кто-нибудь знает способ настроить цель maven для развертывания на сервере Tomcat после запуска сборки? Я знаю, что это возможно при использовании maven-tomcat-plugin, но похоже, что это работает только для Maven 2, тогда как я использую Maven 1.1

В настоящее время я пытаюсь настроить Hudson, чтобы это было частью моей фазы непрерывной интеграции, которая, я надеюсь, будет проходить так:

  1. Сборка всех необходимых компонентов
  2. Сборка войны и развертывание на (локальном) сервере
  3. Выполнить тесты на селен

Любая помощь с этим будет очень признательна.

Спасибо.

Ответы [ 4 ]

0 голосов
/ 06 октября 2011

webappDirectory можно настроить для maven-war-plugin для развертывания разнесенной войны. Ничего особенного не требуется, просто запустите maven install.

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
    <webappDirectory>path/to/server/deploy/dir</webappDirectory>
</configuration>
</plugin>
0 голосов
/ 22 сентября 2009

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

CALL mvn clean install
CALL rm C:\apps\tomcat\webapps\Foo.war 
CALL rm -rdf C:\apps\tomcat\webapps\foo
CALL rm -rdf C:\apps\tomcat\work\Catalina
CALL copy C:\webapps\workspace\Foo\target\Foo.war C:\apps\tomcat\webapps\Foo.war /y

(я знаю, -1 для сценариев MS)

Суть в том, что вы обычно хотите очистить рабочий каталог и каталог webapps, а плагин Maven 1 ant не делает этого (насколько я знаю, и читал по предоставленной ссылке). Предполагается, что Tomcat воссоздает файлы классов в этих каталогах, когда он взрывает файл войны, но любой, кто работал с ним достаточно долго, знает: это не всегда так.

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

0 голосов
/ 24 сентября 2009

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

<goal name="deployWar" prereqs="buildWar">

    <echo message="+---------------------------------------------------+" />
    <echo message="installing war file to server" />
    <echo message="+---------------------------------------------------+" />

    <j:set var="deploy.dir" value="${server}/webapps" />

    <copy file="${maven.build.dir}/${pom.artifactId}.war"
        todir="${deploy.dir}" overwrite="true" />
</goal>

Переменная сервера может быть определена в вашем файле project.properties. Также не забудьте указать это предварительное условие для построения WAR, прежде чем пытаться развернуть его. Надеюсь, это кому-нибудь поможет!

0 голосов
/ 22 сентября 2009

Честно говоря, я бы реорганизовал ваш проект для использования Maven 2, есть несколько руководств, которые могут помочь облегчить боль при миграции (google maven 2 миграции ), и даже есть maven-one-plugin для преобразования вашего project.xml или упаковки ваших плагинов Maven 1 для Maven 2.

Если вы не можете сделать это, вы можете использовать муравьиный плагин Maven 1 , чтобы скопировать войну в каталог webapps tomcat после его упаковки. Tomcat обнаружит новую войну и должен развернуть ее в горячем режиме.

...