Горячий код развертывания кота с Maven - PullRequest
5 голосов
/ 28 декабря 2010

У меня есть веб-приложение, созданное с использованием maven. Он построен в форме различных проектов, которые зависят друг от друга - домен, дао, сервисы и т. Д. Я запустил eclipse: eclipse в каждом из них, чтобы настроить свою среду затмения. Так что теперь у меня есть несколько проектов в затмении. Это моя среда развития.

Я также создал пакет Tomcat для парней из отдела операций, чтобы я мог просто предоставить им zip-файл, который они могут извлечь, и запустить пакетный файл для запуска сервера. Этот zip-файл содержит военный файл, указанный в конфигурации <context> для tomcat.

Кроме того, для целей разработки я настроил запуск tomcat из затмения. Моя цель - выполнять горячее развертывание кода при изменении источника. В настоящее время этого не происходит, потому что файлы классов находятся в «целевой» папке (из-за структуры каталогов maven). А кот смотрит на файл войны (я имею в виду взорванную структуру)

Как мне сконфигурировать среду tomcat / eclipse, чтобы я мог приступить к оперативному развертыванию кода?

-Спасибо!

Ответы [ 3 ]

13 голосов
/ 21 октября 2011

Я использую tomcat-maven-plugin и его цель tomcat7:run, чтобы запустить tomcat из затмения (кстати, используя плагин m2e для eclipse - отличный инструмент - доступен на рынке Eclipse).Горячая замена кода не работает для меня тоже.Но я использую обходной путь: с <contextReloadable>true</contextReloadable> tomcat перезагружает приложение всякий раз, когда обнаруживает изменение файла.

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <path>/myapp</path>
                <contextReloadable>true</contextReloadable>
            </configuration>
        </plugin>
    </plugins>
</build>
1 голос
/ 01 июня 2011

Tomcat не поддерживает само горячее повторное развертывание, если только ваша прикладная среда не поддерживает перезагрузку классов.(Гобелен делает, но я не рекомендую использовать Гобелен по другим причинам).Я вполне уверен, что eclipse: eclipse также не поддерживает горячее повторное развертывание, поэтому у вас есть две вещи, которые работают против вас.

У вас есть две альтернативы, о которых я знаю ... во-первых, переключитесь на использование M2Eclipseзатмения: затмение.Вам придется избавиться от старой конфигурации eclipse: eclipse, чтобы это работало.Использование m2eclipse экспортирует классы из компилятора eclipse в Tomcat.это позволяет избежать промежуточного этапа «mvn clean package».После запуска m2eclipse вы можете скачать JRebel.JRebel будет поддерживать горячее повторное развертывание, даже если среда не поддерживает перезагрузку классов.

Удачи!

0 голосов
/ 18 января 2013

Вы можете использовать механизм перезагрузки, управляемый "autoDeploy", о котором вы можете прочитать здесь . Я изменил свой maven-war-plugin для вывода войны в папку webapp:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>
    <configuration>
        <outputDirectory>${my.tomcat.path}</outputDirectory>
    </configuration>
</plugin>

с

<properties>
    <my.tomcat.path>[MY TOMCAT WEBAPP PATH]</my.tomcat.path>
</properties>

После этого мне нужно только сделать mvn compile war:war или mvn compile package

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...