Для тех, кто пытается отладить Google App Engine с помощью Eclipse, но без использования плагина GAE Eclipse , я написал подробный ответ здесь:
Рабочий процесс для ядра приложения + модулей + maven
Как и просили, вот копия ответа:
Я использую похожую структуру с небольшой разницей. Верхний уровень
каталог имеет войну и слух, а затем они содержат свои конкретные
pom.xml. Я использую Eclipse для отладки, и я могу выполнить горячее развертывание
"большую часть времени", и я не использую плагин Eclipse, который (I
понимаю) это то, что вы хотите. Структура каталогов
.
|-- pom.xml
|-- README.md
|-- my-ear
| |-- devpid
| |-- pom.xml
| `-- src
| `-- main
| `-- application
| `-- META-INF
`-- my-war
|-- build
| `-- classes
| |-- main
| | |-- java
| | `-- webapp
| `-- test
| `-- java
|-- pom.xml
`-- src
|-- main
| |-- java
| | `-- com
| `-- webapp
| |-- css
| |-- favicon.ico
| |-- index.html
| |-- js
| |-- test.html
| `-- WEB-INF
`-- test
`-- java
Инструменты
- Eclipse Luna без плагина Google App Engine (или SDK)
- Maven 3.2.1
- Google App Engine SDK 1.9.6
Рабочий процесс Dev
- Если у вас уже есть исходный код, сохраните его где-нибудь еще и создайте скелет с помощью команды mvn appengine.
- Запустите первый разрез с помощью простого Hello World, используя только maven и терминал и команду mvn appengine: devserver.
- После этого создайте проект eclipse.
- Импортировать проект eclipse как проект Maven. Он увидит банки через Maven. Я не написал бы этот ответ перед Луной, поскольку это требовало
слишком много настроек. В Луне это работает автоматически.
- Шаг выше создаст три проекта, верхнего уровня, ear и war, каждый с pom.xml - все нормально.
- В eclipse укажите выходной каталог как каталог war / target. Это тот шаг, который делает возможным горячее развертывание.
В maven ear / pom.xml добавьте xArgs в плагин appengine для запуска в режиме отладки.
<plugin>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>${appengine.target.version}</version>
<configuration>
<jvmFlags>
<jvmFlag>-Xdebug</jvmFlag>
<jvmFlag>-Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n</jvmFlag>
</jvmFlags>
<disableUpdateCheck>true</disableUpdateCheck>
</configuration>
</plugin>
Обратите внимание на приостановку = n.
- Запустите механизм приложений из внешнего затмения, используя mvn appengine: devserver из каталога ear . Я использую эту команду:
`mvn appengine: devserver> ~ / .logs / .appengine.devserver.logs & echo $!
devpid` Давайте назовем этот терминал 1.
- Преимущество этого метода в том, что Eclipse не захватывает вашу консоль, поэтому вы можете свободно использовать любой инструмент для его просмотра, например
я использую эту простую команду tail:
tail -f
~/.logs/.appengine.devserver.logs | sed
's/INFO/^[[0;34m&^[[0m/g;s/ERROR/^[[0;31m&^[[0m/g;s/WARN\|WARNING/^[[0;35m&^[[0m/g;s/SEVERE\|FATAL/^[[0;31;47m&^[[0m/g'
Вышеприведенная команда сложна для ввода. Каждый экземпляр ^ [есть
на самом деле Ctrl + V Esc - стоит напечатать его один раз. Но
это, конечно, субъективно и зависит от вас.
- В Eclipse создайте профиль отладки для своего проекта в разделе Remote Java Application - выберите военный проект и параметры подключения к сокету.
Этот шаг доступен во многих местах в Интернете, но, тем не менее, это изображение ![Debug Config, Remote Application, War Socket Attach](https://i.stack.imgur.com/HDJK7.png)
- Откройте другой терминал, Терминал 2 в каталоге war и оставьте его открытым, чтобы при необходимости запустить
mvn compile install
.
- Вы готовы идти. Вы должны иметь возможность интегрировать свой исходный код, просто вставив его в нужное место. Вы также должны быть в состоянии
использовать стандартные методы отладки. Затмение скомпилирует справа
location и devserver все обнаружат. Если Затмение бросает
предупреждение, игнорируй это.
- Это работает большую часть времени. Иногда вы сохраняете что-то, что нарушает компиляцию всего проекта, или меняете имя функции
вызывается из предварительно скомпилированного класса или просто изменить web.xml, который
загружается при запуске. Конечно, тогда горячее развертывание не будет работать.
- В этом случае остановите удаление отладки из затмения, завершите свои задачи, запустите
mvn compile install
из Терминала 2.
Devserver автоматически обнаружит.
- В основном, мне едва нужно касаться хвоста, работающего в Терминале 1. Devserver, как правило, не нуждается в перезапуске.
- Если я не изменяю web.xml или не выполняю рефакторинг, мне не нужно запускать
mvn compile install
извне.
Моя причина для предоставления списка окон (Eclipse, Terminal 1 и Terminal 2) просто для того, чтобы показать, что Alt + Tab на самом деле быстрее, чем
Shift + F7 из затмения. Это субъективно и конечно до
вы.