2010-04-27 2 views
3

Eclipse IDE에 Maven이 포함 된 웹 애플리케이션을 작성하고 Tomcat 서블릿 컨테이너를 사용한다.Maven + Tomcat acceleration

그래서 Maven을 다음과 같이 실행합니다 : mvn clean compile. 이 작업 후에 컨텍스트를 다시 초기화 할 수 있도록 Tomcat을 다시 실행해야합니다 (Sysdeo Tomcat 실행 프로그램이 많은 도움이됩니다).

문제는 Maven 실행이며 이후의 Tomcat 재실행은 매번 Iven (Maven의 경우 10 초 이상, Tomcat의 경우 20 초 이상, 로깅, O/R 매핑 등) 때문에 상당한 시간이 걸린다. 해.

이러한 작업을위한 자동화되고 더 빠른 솔루션이 있습니까? 필자가 보았 듯이, 더 나은 해결책은 다시 컴파일 된 클래스를 대상 디렉토리로만 이동할 수 있다는 것입니다.

+0

나는 'tomcat-maven-plugin'이라는 Maven 플러그인을 만들었습니다. http://mojo.codehaus.org/tomcat-maven-plugin/context-goals.html 프로젝트에 자동화 기능을 쉽게 도입 할 수있는 것처럼 보입니다. 수동 재실행을 생략하십시오. – 0x2D9A3

+1

달성하고자하는 바를 명확히하십시오. sysdeo 플러그인을 사용 하시겠습니까? Maven에서 Tomcat을 응시하는 것이 괜찮습니까? Tomcat에 대한 대안 (Maven Jetty 플러그인 규칙 및 Jetty가 Tomcat보다 빠름)을 사용해도 괜찮습니까? –

+0

이미 Sysdeo 플러그인을 사용하고 있습니다. 하지만 Tomcat을 먼저 중지하고 다음으로 Maven을 실행하고 완료 될 때까지 기다린 다음 Tomcat을 다시 시작해야합니다. 그래서 Tomcat을 Maven에서 실행하면 수동으로 다시 시작할 필요가 없습니다. 제 경우에는 부두가 적용되지 않습니다. – 0x2D9A3

답변

4

이러한 작업을위한 자동화 된 더 빠른 솔루션이 있습니까? 필자가 보았 듯이, 더 나은 해결책은 다시 컴파일 된 클래스를 대상 디렉토리로만 이동할 수 있다는 것입니다.

글쎄, 질문은 왜 clean 번에 실행합니까? 증분 컴파일을 수행하면 이미 작업 속도가 빨라집니다.

업데이트 : 톰캣의 아주 좋은 지원을 제공 이클립스 WTP에 대한 @Carl에 동의가 (정말 요즘 Sysdeo 플러그인의 부가 가치를 볼 수 없습니다). Maven을 개발 및 실행하기 위해 Eclipse WTP를 사용하여 변경 사항을 커밋하기 전에 끊임없이 빌드를 중단하지 않았는지 확인하는 것은 매우 일반적인 워크 플로입니다. 그리고 maven-eclipse-pluginm2eclipse (Maven과 Eclipse 통합을위한 두 가지 대안)은 WTP를 지원합니다. 즉 동적 프로젝트으로 인식 될 수 있습니다. 서버에서 실행 일 수 있습니다.

+1

'clean'에 대한 좋은 지적은 재 컴파일 시간을 낭비 할 것입니다. –

+1

동의하면,'clean'을 사용하는 것은이 경우 무의미한 습관입니다. 고맙습니다. – 0x2D9A3

3

Maven은 종속성 처리와 빌드 관리의 두 가지 작업을 수행합니다. 보통 Maven의 의존성 관리는 대개 내가 필요로하지 않는 큰 시간 낭비의 성가심이라고 생각합니다. 그래서 개미와 함께 빌드 관리를합니다.

손으로 조정 한 빌드 파일 가격으로 개미는 어느 파일이 언제 어디로 갈지를 제어합니다. 새로 컴파일 된 클래스를 WEB-INF/classes 디렉토리에 복사하고 web.xml을 터치하여 다시로드하는 경우 Tomcat을 중지했다가 다시 시작할 필요가 없습니다. 이렇게하면 컴파일/재로드 시간이 약 1 초가됩니다.

내가 선호하는 방식입니다. 일부 Maven 팬은 심하게 반대합니다.


편집 : 말했다, 내가 완전히 빌드 문제를 치마 할 수 있습니다 또 다른 방법이있다 : 이클립스는 자바 EE 개발자 에디션에 포함 년대 WTP 기능을 사용하여 개발한다. 코드를 변경하면 변경된 파일을 저장하기 위해 Ctrl-S을 누르기 만하면 Eclipse가 새로 컴파일 된 클래스를 실행중인 Tomcat으로 자동 복사하므로 브라우저가 즉시 새로 고침되고 새로 변경된 웹 앱이 실행되는 것을 볼 수 있습니다. Eclipse의 증분 컴파일 덕분에이 방법은 아마도 편집/실행 사이클 시간 측면에서 탁월 할 것입니다. 물론 Maven이 정말로 필요하다면 이것은 대안이 아닙니다.

+1

어리석은 시험적인 :) Maven은 Ant보다 아무것도 다시 시작하지 않습니다. –

+0

Hehe, 언제 나타나는지 궁금 해서요! 당신은 꿀에 대한 곰처럼 메이븐 (Maven) 옹호에 이끌 렸습니다.) –

+0

LOL! 알고 있었어! –

0

Maven Tomcat 플러그인이 있습니다. "mvn tomcat : redeploy"를 실행하고 maven이 소스를 컴파일하고 패키지하고 구성된 톰캣에 배포하십시오. 자세한 내용은 tomcat plugin을 참조하십시오.

3

JRebel을보고 싶을 수 있습니다. 실행중인 바람둥이에서 클래스를 다시로드하므로 변경 사항이 거의 즉각적입니다. 나는 그것을 많이 사용하지는 않았지만 좋은 의견을 요구하는 것처럼 보입니다.

+0

또는 Glassfish v3을 설치하면 JRebel이 필요하지 않습니다. –

+0

JRebel은 광고 된대로 작동합니다. 재 포장 및 재배포에 소요되는 시간을 모두 없앨 수 있습니다. 개발 샵에 꼭 있어야합니다. –

0

결국 저는«Build Automatically»(프로젝트 → 자동 빌드 확인란)라는 Eclipse 기능을 사용하여 해결했습니다.
리소스를 저장할 때마다 Eclipse는 리소스를 컴파일하고 .class 파일을 출력 폴더로 이동합니다.

관련 문제