본문 바로가기

Program/IDE

이클립스 Tomcat 서버에 배포하는 Publish to the server, 소스를 수정했는데 반영되지 않았다?

이클립스에서 .jsp 나 .css, .js 등등을 수정했는데..

웹브라우저로 확인해 보면 적용이 안 되어 있는 경우가 종종 발생해요.

이거 종종 미칩니다.


웹브라우저 캐시 때문인지,

이클립스에 세팅한 웹서버 때문인지,

이클립스 때문인지,

OS 가 미쳤는지..


이클립스에서 웹서버를 재시작 해 보거나,

이클립스를 다시 실행해 보거나,

윈도우를 재시작 하거나..

아예 전원 버튼을 누르고 한 참 뒤에 다시 켜보거나..

이런 일을 앞으로는 하지 마세요. (물론, 다른 이유 때문에 오동작하는 것일 수도 있긴 하겠지만..)


이클립스에 세팅한 ...\workspace\프로젝트명\ 경로 밑에 있는 파일은,

이클립스가 관리하는 파일 경로에요. 물론, SVN 과 연결해 놓았겠죠..?

그런데, 이클립스에 세팅한 웹서버(보통은 Tomcat)가 필요로 하는 파일경로는 여기가 아니에요.

대체로는 아래와 같은 경로에 파일이 있어요.

...\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\프로젝트명\

이클립스에서 만들고 수정하는 경로의 파일들을,

웹서버가 관리하는 경로로 복사(이걸 서버 입장에서는 Publish 퍼블한 것이라 하죠)해야

웹브라우저에서 화면을 볼 수 있는 겁니다.


그런데, 간혹.. 이클립스에서 저장했음에도 웹서버 해당 경로에 퍼블하지 않는 경우가 생겨요.

이 때를 위해서 만들어진 버튼이 'Publish to the server' 입니다.


다음 부터는 소스를 수정했는데 웹브라우저에 적용이 안 된다고 미치지 말고,

상기 버튼을 누르고 새로고침 해 보세요..



-------------------------------------------------------------------------------

아니면,

Servers view 에서 Tomcat 서버명을 (더블)클릭했을 때 나오는 Overview 에서,

Server Options 의 'Serve modules without publishing' 을 체크해 보세요.

서비스 중이면 서비스를 중지해야 체크한 내용을 저장할 수 있어요.

이렇게 하면 아래 프로젝트명 경로가 사라집니다.

...\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\ 경로에는

ROOT 만 덩그라니 남습니다. 혹시 사라지지 않았으면 삭제해도 됩니다.

tmp0, tmp1, tmp2, .. 이런게 여러개면 서버 세팅이 여러개라는 겁니다. 필요 없으면 이것도 삭제.

이제는 퍼블리싱 하지 않아도 이클립스에서 저장하면 바로 반영됩니다.

이렇게 하면 하드디스크나 SSD 공간도 좀더 적게 사용하게 되고,

불필요한 작업도 줄이고 여러모로 좋아요.. ㅎ

다만, .css .js .jsp(안에 기술된 java 코드) 등은 체크되어 있을 때 퍼블을 하지 않고 SVN 와 연계되는 파일을 그대로 반영하지만,

.class 파일은 안 되네요.

음.. 여기저기 찾아보고 직접 실험해 봤는데,

Debug mode 로 서버를 시작하면 .java 를 수정해도 바로 바로 반영됩니다.


결국, Serve moduls without publishing 을 체크하고

(re)Start the server in debug mode 로 실행.


Maven 이나 Mylyn 등으로 복잡하게 세팅되는 경우에는 이런 방법이 적용되지 않을 수도 있어요.

그렇게 된다면 Serve modules without publishing 을 켜고 Restart, 끄고 Restart 등을 반복하는 무한 루프.. ㅋㅋㅋ