Как включить горячую замену с помощью движка приложений Google, maven и eclipse?

Следуя инструкциям Google на странице https://developers.google.com/appengine/docs/java/tools/maven каким-то образом изменения в файлах jsp не подхватываются, а изменения в файлах java - есть.

Поэтому, когда я изменяю файл Java, я получаю следующий журнал:

[ИНФОРМАЦИЯ] ИНФОРМАЦИЯ: файл был изменен, перезагружается веб-приложение.

Но когда я изменяю файл jsp или html, он не подхватывается, и в браузере отображается старый контент.

Мой файл pom.xml включает строки:

<build>
<outputDirectory>target/${project.artifactId}-${project.version}/WEB-INF/classes</outputDirectory> 
...        
<plugins>
    <plugin>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>${appengine.target.version}</version>
        <configuration>
            <fullScanSeconds>1</fullScanSeconds>
        </configuration>
    </plugin>
...

После некоторых исследований я вижу, что некоторые предлагают использовать решение типа файловой синхронизации, но это кажется немного странным. Разве это не должно работать из коробки с плагином maven и gae в eclipse? Без maven он работает нормально, но без maven вам придется самостоятельно разбираться с зависимостями jar. Без горячей замены/горячей замены кода решение maven в eclipse с gae не является хорошей средой разработки.


person user1120821    schedule 16.03.2014    source источник


Ответы (3)


Но когда я изменяю файл jsp или html, он не подхватывается, и в браузере отображается старый контент.

Просто выполните пакет mvn в каталоге myapp (не myapp-ear или myapp-war), когда я изменяю код java или код jsp. так что это работает (горячее развертывание). надеюсь, что это будет полезно для вас.

person egret    schedule 10.09.2014

Попробуйте установить подключаемый модуль m2e-wtp, который действует как мост между проектами m2e и wtp. Решит ли это вашу проблему, может зависеть от того, какую версию eclipse вы используете.

person Nick    schedule 16.03.2014
comment
Я должен был добавить, что плагины m2e (1.4.0) и m2e-wtp (1.0.1) уже установлены. Версия Eclipse, которую я использую, — это Kepler. - person user1120821; 17.03.2014
comment
И поведение горячей замены, которое вы ищете, использует eclipse «запустить как веб-приложение Google», а не командную строку? - person Nick; 19.03.2014
comment
В идеале я бы использовал «запустить как веб-приложение Google», но с maven я делаю «запустить как › maven build › appengine:devserver». Я думаю, что проблема связана с тем, что maven сканирует целевую папку, но целевая папка заполняется только в том случае, если вы делаете пакет maven. Однако это замедляет процесс разработки. - person user1120821; 19.03.2014

Когда вы запускаете приложение движка приложения на локальном сервере разработки с помощью цели «appengine:run», оно продолжает отслеживать изменения в файлах, и всякий раз, когда вы вносите какие-либо изменения и сохраняете их, плагин автоматически развертывает его на уже работающем сервере разработки. .

Никакой дополнительной настройки не требуется.

Вы можете просто проверить это следующим образом;

  1. Реализуйте конечную точку GET (testApi/v1/getName), возвращающую «String», и возвращайте любое имя, например «Aashish».
  2. Выполните цель «appengine: run», и это запустит ваше приложение на локальном сервере разработки.
  3. Если вы нажмете этот GET - http://localhost:8080/_ah/api/testApi/v1/getName в браузере вы увидите «Aashish».
  4. Теперь перейдите к eclipse, просто измените этот возвращаемый текст на «Ajay», сохраните и нажмите тот же GET API в браузере, и вы увидите «Ajay».
person Aashish    schedule 21.01.2019