본문 바로가기

Web Programming/Web PR

젠킨스 Jenkins 부분배포 익명클래스 반영 문제

 

전체배포 vs 부분배포

 

전체배포의 경우, SVN 또는 Git과 같은 형상관리 툴을 통해 변화된 전체 소스코드를 war 파일로 묶어 배포하는 작업이다(upload 폴더도 초기화되는 문제가 있기에 이는 예외를 두던지, 따로 구성을 하던지 등을 고려해야 한다)

 

부분배포는, SVN 또는 Git과 같은 형상관리 툴에서 변화된 소스코드 중 일부만 서버에 배포반영하는 작업이다.

(SW의 유지보수성, 안정성, 협업에서 의도치 않은 소스코드 반영 등을 막기 위해 많은 SW들이 부분배포를 채택하고 있다)

 

Java 부분배포 익명클래스 반영문제

 

부분배포 진행 중

can't find 'xxxx$1.class ' ...

과 같은 로그를 보게 되었다.

후에 보니, Java 컴파일 시 anonymous inner class가 있을 경우

xxxx.class, xxxx$1.class, xxxx$2.class,... 와 같이 기존 클래스 파일 뒤에 $n을 붙여서 컴파일된다.

 

그렇기에 부분배포시에 해당 파일들도 추가로 배포리스트에 추가해줘야한다.

정리하자면 아래와 같다.

구분

현상

현상

Java 컴파일 시 anonymous inner class가 있는 class를 빌드할 때
익명 클래스 파일을 찾을 수 없어 정상 배포 진행 불가.

원인

Java 컴파일 시, anonymous inner class의 경우,
xx.class, xxxx$1.class, xxxx$2.class,... 와 같이 기존 클래스 파일 뒤에 $n을 붙여서 컴파일되는데,
부분 배포 리스트 파일 작성 시, 해당 익명클래스들을 리스트에 포함시켜주지 않을 경우 발생.

해결

1) 부분 배포 리스트 파일 작성 시, anonymous inner class 존재한 class 포함할 경우, 익명클래스도 포함해서 작성

2) (비추) 대부분의 기업에서는 유지보수를 위해, 익명클래스 작성을 자제하고 별도의 클래스로 작성하고 import 하는 방식을 선호한다... 그치만 코드 이해성 등을 위해서 잘 모르겠다. 

 

'Web Programming > Web PR' 카테고리의 다른 글

Git 메모장  (0) 2021.01.29
사회대 스터디룸 시스템 트러블슈팅  (0) 2020.08.29
Ngrok 로컬 네트워크 연결  (2) 2020.07.03
Django EC2 window server 배포  (0) 2020.07.03
셀레니움(Selenium) 자동화 툴  (0) 2020.04.21