2013-08-29 2 views
1

필요한 모든 .jar를 별도의 .war/ear에 넣을 수있는 방법이 있는지 궁금해서 제 코드에서 사소한 변경을했을 때 모든 라이브러리 .jars를 서버에 배포해야합니까?배포 : 라이브러리 항아리를 내 클래스에서 분리하기

개발 중에 변경 사항을 테스트 할 때마다 50mb (오프 사이트 Tomcat 서버)를 업로드하는 것이 시간을 보내는 좋은 방법이 아니기 때문에.

내가 읽고있는 대부분의 주제는 당신이 .war 파일이 포함 된 자기를 원한다고 말했습니다. 이 경우 1 .war 파일과 만 공유됩니다. 배포 디스크립터에서 일종의 라이브러리 참조로 이것이 가능한지 확실하지 않습니다.

+0

이 jar를 서블릿 컨테이너의 클래스 경로에 넣으려고 했습니까 (다른 웹 응용 프로그램에 부정적인 영향을 미칠 수 있지만 업로드 문제가 해결되었을 가능성이 있음)? JBoss 7은 모듈 식 클래스 로딩 개념을 사용하여이를위한 솔루션을 제공합니다. – Beryllium

+0

아니요,하지만 그 옵션을 살펴 보겠습니다. – mgamsjager

답변

0

Java EE Spec에 따르면 .jars는 WAR 파일 내에서 WEB-INF/lib으로 배포되어야합니다. 일부 사람들이 Tomcat 클래스 로더를 해킹하여 외부에서 직접 가져 오는 것을 보았습니다 (특히 Tomcat 5+가 CATALINA_HOME/shared/lib에 대한 지원을 제거한 이후).하지만 그 단점은 명백합니다.

코드를 변경하는 대신 배포 프로세스를 변경하는 것이 좋습니다. 실제로는 "폭발 된 WAR"배포를 appBase (Tomcat docs 참조)으로하고 변경된 파일 만 전송할 수 있습니다.

나는 Inedo을 위해 일하는데 많은 사용자가 BuildMaster을 사용하여이 작업을 수행 한 것으로 나타났습니다.

  1. 받기 최신 $에서/MyApp를
  2. 실행 개미 (의 build.xml)
  3. 의 압축을 풀고 MyApp.war
  4. 빌드 유물 만들기
  5. 정지 톰캣 서비스
  6. : 워크 플로는 다음과 같이 보입니다
  7. SERVER (/ path/appbase)에 빌드 이슈 배포
  8. 톰캣 서비스 시작

마지막 단계 (빌드 아티팩트)는 변경된 파일 만 배포하므로 50MB 아티팩트를 배포하는 데 소요되는 시간이 크게 단축됩니다.

관련 문제