Развертывание войны на сервере Tomcat с Maven 1.1

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

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

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

Любая помощь с этим будет высоко ценится.

Благодарю.

4 ответа

Решение

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

<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, прежде чем пытаться развернуть его. Надеюсь, это поможет кому-то!

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>

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

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

Я должен признать, я не знаю много о плагине для 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 минуты.

Другие вопросы по тегам