본문 바로가기
Programming

자바 프로젝트 내에서의 빌드 버전 관리 (ant)

by leanu 2013. 4. 24.

이번에 새로 맡게된 자바 프로젝트의 소스를 이것저것 보다가, 빌드 버전에 대한 내용이 여러 곳에 분산되어 하드코딩 되어 있었고, 마침 시간적 여유도 되어서 빌드버전관리의 일원화에 대한 효율적인 구조들을 찾아보았다.

소스 자바 빌드 버전에 대한 관리를 다른 사람들은 어떤식으로 하고 있는지 찾아보다가 몇가지 좋은 링크들을 발견하였지만 본인의 프로젝트 요구조건과는 맞지 않았다.

 

프로젝트의 상황은 다음과 같다.

  • 특정 properties 파일에 빌드버전정보가 들어있다.
  • properties 파일의 빌드버전 정보를 ant package script에서 이용한다.
  • 빌드버전정보는 java source 내에 중복되어 하드코딩 되어 있다. 이는 프로그램 시작시 버전 정보 출력을 하는데 사용된다.

본인이 생각하는 개선사항은 다음과 같다.

  • 버전 정보는 하나의 파일에서만 관리하고 이를 필요한 위치에 적용하는 형식으로 사용한다.
  • eclipse 상에서 테스트 시에는 ant 빌드 없이 진행이 될 수 있으므로, 이러한 상황에서도 일원화된 버전정보를 잘 가져올 수 있어야 한다.

이러한 개선 요구사항을 기반으로 여러가지 방법들을 생각해보았으나 딱히 마땅한 해결책이 떠오르지 않았다. 그래서 소스를 크게 변경하지 않는 선에서 효율적으로 관리할 수 있는 방안을 적용하였다.

  • 빌드버전정보는 기존처럼 properties 파일 내에 기록한다.
  • VersionInfo.java를 추가하여 빌드버전정보를 제공한다. 기능은 다음과 같다.
    • 패키지 화 할 경우에는 소스를 복사해서 컴파일 하므로, ant build script 내부에서 복사할 때 VersionInfo.java의 특정 부분을 properties 의 빌드버전정보로 치환하여 복사한다.
    • eclipse에서 디버깅 할 때 해당 버전 정보를 정확하게 보여줄 수 있어야 하므로, eclipse내에서 디버깅 중인지를 인지하여 조건이 일치하는 경우  properties파일을 읽어 빌드버전정보를 얻어오게 한다.

본인이 사용하고 있는 properties는 다음과 같다.

ant build script 내에서 복사시 치환하는 부분이다. filter 부분과 copy 의  filtering부분을 참조한다.

 

해당 properties 파일을 읽고 해당 빌드 버전과 번호를 읽어오는 자바 소스(VersionInfo.java)는 다음과 같다.

p.s 혹시 이보다 더 괜찮은 방법을 알고 계시면 추천 부탁드립니다. 

 

댓글