2010-12-27 3 views
4

maven을 사용하여 웹 응용 프로그램을 만들었습니다. 그것은 도메인, DAO, 서비스 등 서로 의존하는 서로 다른 프로젝트의 형태로 만들어졌습니다. 나는 이클립스를 실행했습니다 : 각각의 Eclipse 환경을 구성하는 일식. 그래서 지금은 일식에 여러 프로젝트가 있습니다. 이것은 내 개발 환경입니다.Maven을 사용하는 Tomcat 배포

Operations Guys 용 Tomcat 번들도 만들었으므로 서버를 시작하기 위해 배치 파일을 추출하고 실행할 수있는 zip 파일을 제공 할 수 있습니다. 이 zip 파일에는 tomcat에 대한 <context> 구성에 언급 된 war 파일이 들어 있습니다.

또한 개발 목적으로 Eclipse 내에서 시작하도록 tomcat을 설정했습니다. 내 목표는 소스가 변경 될 때마다 핫 코드 배포를 수행하는 것입니다. 이것은 현재 클래스 파일이 "대상"폴더에 있기 때문에 발생합니다 (Maven의 디렉토리 구조로 인해). 그리고 바람둥이가 전쟁 파일을 봅니다. (폭발 된 구조입니다.)

핫 코드 배포를 시작할 수 있도록 내 tomcat/eclipse 환경을 어떻게 구성합니까?

- 두꺼운!

답변

10

tomcat-maven-plugin과 그 목표 tomcat7:run을 사용하여 Eclipse 내에서 Tomcat을 시작합니다 (Eclipse 용 m2e 플러그인 - 훌륭한 도구 - Eclipse Marketplace에서 사용 가능). 핫 코드 대체가 나를 위해 작동하지 않습니다. 하지만 해결 방법을 사용합니다 : <contextReloadable>true</contextReloadable>와 함께 tomcat은 파일 변경을 감지 할 때마다 응용 프로그램을 다시로드합니다.

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.tomcat.maven</groupId> 
      <artifactId>tomcat7-maven-plugin</artifactId> 
      <version>2.2</version> 
      <configuration> 
       <path>/myapp</path> 
       <contextReloadable>true</contextReloadable> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
1

Tomcat은 응용 프로그램 프레임 워크가 클래스 재로드를 지원하지 않는 한 직접 재배포를 지원하지 않습니다. (Tapestry는하지만 다른 이유로 Tapestry 사용을 권장하지 않습니다.) 나는 일식 : 일식 또한 뜨거운 재배포를 지원하지 않는다는 것을 확실히 확신한다. 그래서 당신은 두 가지 일을한다.

내가 알고있는 두 가지 대안이 있습니다 ... 먼저 이클립스 대신에 M2Eclipse를 사용합니다 : eclipse. 당신은 오래된 일식을 제거해야합니다 :이 일을하기위한 일식 구성. m2eclipse를 사용하면 eclipse 컴파일러에서 Tomcat으로 클래스를 내보낼 수 있습니다. 이것은 중간의 "mvn 클린 패키지"단계를 피한다. m2eclipse가 실행되면 JRebel을 다운로드 할 수 있습니다. JRebel은 프레임 워크가 클래스 재로드를 기본적으로 지원하지 않더라도 핫 재배포를 지원합니다.

행운을 빈다.

+0

을 할 필요가이 후

<properties> <my.tomcat.path>[MY TOMCAT WEBAPP PATH]</my.tomcat.path> </properties> 

와, 잊지 마세요 받아 들일 수 있습니다. 내 대답이 악취가 들지 않으면 신경 쓰지 마라. D –

0

당신은 당신이 그것을 here에 대해 읽을 수있다 "autoDeploy"에 의해 관리되는 다시로드 메커니즘을 사용할 수 있습니다. 나는 웹 애플리케이션 폴더로 출력 전쟁을 내 maven-war-plugin을 변경 :

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.3</version> 
    <configuration> 
     <outputDirectory>${my.tomcat.path}</outputDirectory> 
    </configuration> 
</plugin> 

난 단지 내 대답 도움이된다면 mvn compile war:war 또는 mvn compile package

관련 문제