Это случилось со мной много. Я бы не назвал это Вуду. Я думаю, что Eclipse WTP не работает, когда вы меняете вещи в фоновом режиме (например, сборка maven).
Что я делаю, чтобы решить эту проблему, чтобы вообще не использовать его. Вместо этого я использую плагин Maven WAR для развертывания приложения:
mvn war:inplace tomcat:inplace -DskipTests=true
Это работает очень быстро, так как не нужно собирать и упаковывать войну.
Затем, чтобы отменить развертывание приложения:
mvn tomcat:undeploy
У меня есть сценарии, которые
- развернуть и запустить tomact
- развернуть и остановить кота
Это выглядит примерно так:
Запустите tomcat и разверните приложение:
#!/bin/sh
if [ -f $CATALINA_PID ]; then
echo "tomcat already running with pid " `cat $CATALINA_PID`
exit 1
fi
java -Dmy.arg=val -Dcatalina.home=<catalina-home> -Dlog4j.configuration=file:///log4j.xml -classpath <path-to-tomcat-lib>/bootstrap.jar:/usr/lib/jvm/java-6-sun-1.6.0.20/lib/tools.jar org.apache.catalina.startup.Bootstrap start &
echo $! > $CATALINA_PID
mvn war:inplace tomcat:inplace -DskipTests=true
Развернуть и остановить кота:
#!/bin/sh
mvn tomcat:undeploy
<path-to-tomcat>/shutdown.sh -force
rm $CATALINA_PID
То же самое возможно с любым другим сценарием сборки - вопрос только в том, сколько кода вам придется написать.
Я выбрал войну Мейвена: цель на месте, потому что она делает очень мало, и поэтому бежит очень быстро. Смотрите здесь: maven.apache.org / plugins / maven-war-plugin / creation.html .
Кстати, у ANT и Gradle есть военное задание / плагин, который, вероятно, можно настроить для выполнения чего-то подобного (я не помню ...)
Надеюсь, это поможет.