2015-01-09 5 views
2

스프링 웹 애플리케이션이 있고 Tomcat에서 IDEA의 debbuger로 디버그하고 일부 변경 후에 프로젝트를 재배포하면 변경 사항이 배치되지 않고 디버거가 이전 코드를 "보게됩니다" 또는 빈 줄). 도움이되는 것은 maven을 새로 설치하고 Tomcat을 다시 시작하는 것입니다.IntelliJ IDEA가 변경 사항을 재배치하지 않습니다

IDEA 캐시 지우기를 시도했지만 도움이되지 않았습니다.

설정에서 올바른 옵션을 선택했지만 Hotswap도 작동하지 않지만 함께 살 수 있습니다.

핫 스왑이 아닌 재배포를 사용하므로 전체 응용 프로그램이 다시 시작되므로 모든 클래스를 다시로드해야하지만 그렇지는 않습니다. 빌드를 마친 후에 만 ​​작동합니다.

주 2 : 나는 한 달 전에 확인 작업을 생각하지만, 내가 생각할 수있는 변경이 (프로젝트 - 또는 IDEA 현명한)

편집을 할 수 없었다 : 그래서 핫 스왑 이제 마술 (OK 노력하고, I 아무것도하지 않았다). 그러나 더 큰 수정 (예 : 메소드 서명 변경 등)을 수행하면 서버에 대한 재배포 중에 해당 수정 사항이 선택되지 않습니다. 따라서 maven을 새로 설치하고 서버를 다시 시작하여 변경 사항을 확인하고 hotswap이이 새로운 코드의 메소드 본문 수정 후에 제대로 작동하도록합니다. 왜 그런가?

+0

가 인 IntelliJ와 톰캣 [에 대한 답을 참조하시기 바랍니다 분해 유물을 사용하고 있는지 확인은 파일이 자동으로 인식되지 않습니다 변경 Tomcat] (http://stackoverflow.com/questions/19596779/intellij-and-tomcat-changed-files-are-not-automatically-recognized-by-tomcat/19609115) – Javaru

+0

이 답변을 보았습니다. 정확히 동일한 설정. – redhead

+0

실행/디버그 구성의 스크린 샷을 게시 할 수 있습니까? 또한 어떤 버전의 것을 사용하고 있습니까? 즉 IntelliJ IDEA, Tomcat, Java, Spring. 난 그냥 간단한 webapp 프로젝트 에서이 작업을 재 시도하고 모든 작품은 예상대로. – Javaru

답변

3

실행하기 전에 Tomcat의 실행 구성을 확인해야합니다. "시작하기 전에"만들기 및 빌드 아티팩트 단계가 있어야하며 또한 변경된 모든 클래스가 실제로 재배포 중에 컴파일되는지 확인해야합니다. .

또한 핫 스왑 대신 재배치를 사용하는 이유가 무엇입니까? 재 전개는 일반적으로 재시작 서버만큼 시간이 오래 걸리지 만 핫 스왑은 거의 즉시입니다. 메소드 바디와 상수를 변경하는 것만 가능하지만 일반적으로 개발에 다시 적용 할 수 있습니다. 개인적으로 저는 지금 비상업적 인 프로젝트에 무료 인 JRebel을 사용하고 있으며 매우 드물게 서버를 다시 시작합니다.

편집 : 수업도 재배포 후에 된 이유 는 잘 모르겠지만, 이유는 그들이 폭발 폴더로 변경 한 후 컴파일하지 않는 것이 99 %이다. 각 코드 변경 후 maven 새로 설치를 수행하는 것은 너무 많습니다 (IDE 컴파일로 충분해야 함).

큰 변경 후에 다시 배포하지 않고 서버를 다시 시작하는 것이 좋습니다. 그래서 IDE가 Make, Build artifact 및 Deploy artifact tasks를 수행합니다.

힌트를 david.lucky에 추가
+0

"시작하기 전에"나는 '벌레가 전쟁 유물을 폭발 시켰을뿐만 아니라'만들었습니다. 내가 말했듯이 hotswap도 작동하지 않으며, 클래스를 컴파일하는 중이며 모든 파일을 최신으로 표시하지만 디버거는 여전히 메소드 본문에 있지만 변경 사항을 놓친다 고합니다. – redhead

+0

그리고 Debugger -> Settings의 HotSwap 섹션에 무엇이 있습니까? 3 개의 라디오 버튼이 있어야합니다. '컴파일 후 클래스 새로 고침'을 '항상'또는 '확인'으로 설정해야합니다. 또한 분명히 알 수 있습니다 : tomcat을 디버그 모드로 실행하거나 원격 디버거를 사용하여 연결해야합니다. –

+0

"항상"있습니다. 핫 스왑이 작동하지 않더라도 재배포해야합니다. 또한 코드를 디버깅 할 수 있지만 변경 사항은 디버거가 볼 수 있도록 maven 빌드를 통해 이동해야합니다. 로컬 Tomcat을 사용하고 있는데 왜 원격을 사용해야합니까? 한 가지 더 : 한 달 전에 잘 작동했습니다. – redhead

1

, ... 배포 섹션에서 Tomcat 구성에 당신이

관련 문제