Развертывание войны на сервере Tomcat с помощью maven 1.1
-
12-09-2019 - |
Вопрос
Кто-нибудь знает способ настроить цель maven для развертывания на сервере Tomcat после запуска сборки?Я знаю, что это возможно с помощью плагина maven-tomcat, но похоже, что это работает только для Maven 2, тогда как я использую Maven 1.1.
В настоящее время я пытаюсь настроить Hudson, чтобы это было частью моей фазы непрерывной интеграции, которая, я надеюсь, будет проходить следующим образом:
- Сборка всех необходимых компонентов
- Создайте войну и разверните ее на (локальном) сервере.
- Запустите тесты селена
Любая помощь в этом будет очень признательна.
Спасибо.
Решение 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>