웹 프로그래밍의 구조 그리고 CVS와 Ant

오늘 오전에 회사에서 CVS관련 자료를 보면서 기존에 세팅해 두었던 CVS서버를 드디어 처음으로 건드려 보았다.

 

[ 초 스피트 CVSNT 설치 방법 ]

1. Windows 2003 서버에 CVSNT 설치(http://www.march-hare.com/cvspro/#downcvsnt)
2. 제어판 -> CVSNT Server 실행
3. Repository Configuration 선택해서 저장소 추가. Add버튼 누르고 적절한 경로 입력(단, Name은 /cvs 이런 식으로 입력해야 유닉스 호환이 가능)
4. 시작->cmd 에서 set CVSROOT=:pserver:127.0.0.1:/cvs(여기서 cvs는 3번에서 입력한 Name) 로 환경변수 추가
5. cvs login 입력 후 엔터. 비밀번호는 현재 접속한 윈도우의 접속 계정(보통 Administrator계정의 비번)
6. 계정을 추가 : cvs passwd -a -r administrator test 입력->administrator는 계정과 연결할 윈도 계정, test는 cvs로 로그인 할 계정
7. 비번 물어보는데 아무거나 한다.

 

그래서 CVS과 Ants(자동빌드용)에 대해 생각해 보았다.
– CVS에서 Commit를 하면 History관리(헤더)가 있는 각종 소스 파일이 올라간다.(작업PC->CVS서버)
– Ants에서 build.xml을 run as를 통해 실행시키면 빌드된 클래스 파일 등이 올라간다.(작업PC->운영 서버)
그럼 이것들의 차이점은 무엇인가..?

사실 난 CVS서버를 통해 소스를 관리하고 싶지만, CVS서버를 통해 업로드 된 파일들을 실제 운영 서버의 WAS와 매칭된 Root Path와 같게 하고 싶지는 않았다. CVS에서는 소스파일과 심지어 문서들까지도 관리하게 되는데, 그 루트를 WAS의 루트와 같게 한다? 그건 아니라고 생각했다. (보안상의 위험도 있고..)

그래서 프로그램을 다시 유심히 살펴 보니, BASE_SRC(기본 소스코드) 와 WEB(.jsp 및 이미지들, 즉 실제 서비스할 파일들) 이렇게 나뉘어져 있었다.

  • BASE_SRC
    • SRC
      • com.xxx
        • 클래스 하위 구조들(Spring의 controller, view, dao들)
    • sql 맵핑 xml데이터
    • properties 파일
    • library 파일
  • WEB
    • WebContent(웹 파일들)
      • images(이미지)
      • js(자바스크립트)
      • jsp(jsp 소스들)
    • WEB-INF
      • 각종 library 및 web.xml 등

 얼추 이와 비슷한 파일 구조를 가지는데(여기서 BASE_SRC와 WEB은 독립된 프로젝트이다.) 중요한 것은 BASE_SRC에서는 자동 컴파일을 통해 WEB의 WEB-INF안에 class라는 폴더로 빌드된 파일들을 전송해 준다. 결국, 실제 운영 서버에는 CVS루트의 파일 중 WEB폴더 안의 내용들을 집어 넣으면 잡다한 소스 파일들은 프로젝트 딴에서 걸러지고 운영에 필요한 파일들만 집어넣을 수 있다는 것!

결국 CVS를 설정할 때 더 효율적으로 구조를 잡으려면 CVS의 설정을 건드리는 게 아니고 각 프로젝트의 Properties를 보고 Build Path와 이클립스의 CVS설정을 보는 것이 가장 효과적이라는 이야기이다.

아, 중요한 것을 하나 배운 것 같다. 이클립스는 자동화 기능이 너무 좋지만, 제대로 설정을 하지 않으면 반드시 낭패를 경험하게 되므로, 정확한 설정과 무엇보다 어려운 것은 없으니 도전해 보는 것이 중요하지 않을까라고 생각한다.