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