Развертывание войны на сервере Tomcat с помощью maven 1.1

StackOverflow https://stackoverflow.com/questions/1459877

  •  12-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

Спасибо.

Это было полезно?

Решение 3

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

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

Другие советы

Честно говоря, я бы реорганизовал ваш проект для использования Maven 2, есть несколько руководств, которые могут помочь облегчить миграцию (google миграция maven 2), и есть даже maven-один-плагин чтобы преобразовать файл 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)

Дело в том, что вы обычно хотите очистить рабочий каталог и каталог веб-приложений, а плагин ant Maven 1 этого не делает (насколько я знаю, и прочитал по предоставленной ссылке).Tomcat «должен» воссоздавать файлы классов в этих каталогах, когда он взрывает военный файл, но любой, кто работал с ним достаточно долго, знает:это не всегда так.

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

webappDirectory можно настроить для плагина maven-war для развертывания развернутой войны.Ничего особенного не требуется, просто запустите 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top