자바 웹 프로젝트의 디렉토리 구조는 어떻게 가져가는 것이 좋을까요?

2012-10-22 12:14

검색 지원 : java web project directory structure

자바 기반으로 웹 프로젝트를 진행하다가 python을 학습하다보니 제일 먼저 궁금한 것이 프로젝트 디렉토리 구조를 어떻게 가져가는 것이 좋을 것인지에 대해서였다. 그렇다면 자바 기반 웹 프로젝트의 디렉토리 구조는 어떻게 가져가는 것이 좋을까?

나는 메이븐의 기본 디렉토리를 최대한 따르려고 한다.

slipp-user - src/main/java : production 자바 코드 - src/main/resources : production 리소스 파일 - src/test/java : test 자바 코드 - src/test/resources : test 리소스 파일 - webapp : web 자원. 원래 메이븐 기본은 src/main/webapp이나 depth가 너무 깊어서 제일 상위로 추출해서 사용한다.

webapp 표준 디렉토리 - WEB-INF/lib - WEB-INF/classes

위와 같이 사용하는데 너무 익숙하다보니 다른 디렉토리 구조는 신경쓰지 않았는데 python 학습하다보니 다양한 접근 방식이 있겠다는 생각이 문득 들었다. 다른 분들은 어떻게 개발하고 있을지 궁금하네요.

11개의 의견 from SLiPP

2012-10-22 12:32

저도 메이븐을 사용한 기본적인 구조에서 webapp 만 depth 가 깊어서 최상위로 추출해 사용합니다.

개발 환경과 통합환경 운영환경에 따른 설정 때문에 src/main/resources 를 아래처럼 나누어 사용하고 있습니다. src/main/resources-local src/main/resources-ci src/main/resources-deploy

2012-10-22 12:35

저도 역시 메이븐의 기본 디렉토리를 최대한 따르려고 하고 있는데요,

실제 TDD 방식의 개발이나 테스트 코드를 생성하는 방식을 '아직까지'는 사용하지 않고 있기때문에 test 폴더는 제거한 형태로

개발을 수행하고 있습니다. (굳이 가져갈 필요가 있냐는 의견들이 종종 있어서요.)

위에서 제시해 주신 대로 resources 폴더를 세분화 해서 가져가는 방법도 심각하게 한번 고민해봐야 할듯 합니다.

2012-10-22 13:04

@yangwansu 저 리소스 구조는 어디서 많이 보던 구조인데요. ㅋㅋ 제 책 참고하셨다면 영광. 아니라면 역시 개발자들의 생각은 비슷하는 결론..

이제 메이븐이 대세인가요? 이쯤 되면 다른 디렉토리 구조도 논의해볼 시점이 되지 않았을까? 다들 똑같은 방식으로 개발하면 어딘가 모르게 발동하는 청개구리 기질..

2012-10-22 13:46

전자정부프레임워크를 사용할 땐 Maven을 사용했긴 했지만 따로 프로젝트를 구축할땐 없이 사용을 많이 했었서요. webapp 가 깊이 있어서 불편함이 많았었는데 최상위로 올리는건 좋은 구상인 것 같아요.

2012-10-22 14:33

전 예전 플젝에서는... resources 랑 config 를 나눠놨어요. 몇몇 사람들만 건드릴 xml/config 들은 config 쪽으로, 거의 모든 개발자들이 건드려도 되는 xml/config 들은 resources 쪽으로.

몇몇 사람이라는 기준은, Framework에 대한 이해가 있어서, Base Project 생성에 관여하는 사람들을 뜻합니다. 건드리면 안되는건 아니지만, 꼭 Spring MVC 기본 설정이라던가, Database Pool 관련 설정을 자꾸 건드려서 빌드가 깨지는 경우를 많이 겪다 보니 설정 파일에 대한 격리 조치를 취하게 되더라고요.

최근에 다시 프로젝트를 진행한다면, config 에 해당하는 항목 (Spring 기본, Spring MVC 기본, DataSource 관련 설정 및 Framework 관련 설정)은 그냥 Java Config + XMLless Java Web Config 로 묶어서 Jar 배포 해 버리는게 제일 나아 보입니다.

2012-10-22 14:51

@Kenny 좋은 생각이다. xml 설정도 성격에 따라 여러가지가 있는데 그에 따라서 디렉토리 구분하는 것은 의미있는 작업이라 생각되네. 특히 최근 spring 3.1에서는 Java Config가 되니 jar 묶어서 배포하는 것에 적극 찬성. 세상은 참 빨리도 변하네.

2012-10-22 15:34

저는 아직 기본 구조로 작업을 하고 있습니다. 변화를 가하고 싶으면서도, 쉽게 시도하기가 어렵네요. 잉여력이 바닥나서 쉬이 도전해볼 용기를 갖출 수가 없네요. ㅠㅅ-)

2012-10-22 15:46

흐아;;; maven으로 작업을 해보지 않고 소규모로만 작업해와서인지 글타래와 자바지기님의 github 스터디 프로젝트 branch를 clone(?)한 코드들의 디렉토리 구조들을 이해하기가 힘드네요;; 무작정 import하였더니 이처럼 폴더구조가 보이네요;; 하나는 java resource에 들어있고 하나는 resource처럼 보여서 익숙치 않은 그림이라 보기가 불편하네요. 그래서 잠깐 짬내서 maven 디렉토리 구조를 살펴보니 화면과 같네요. 적응해야겠죠 ㅎㅎ 참고로 저같은 경우엔 이클립스에서 web project를 생성한 후에 그 디렉토리 구조에서 벗어나지 않고 작업합니다 ㅠ

2012-10-23 01:51

Kenny님이 말씀하신 resource와 config의 구분은 좋은 방법이었어요. 단, 프로젝트 구성원 모두가 그 구분에 대해 명확히 이해하는게 선행되어야 할 부분이라고 생각해요. 격리를 위한 최소한의 장치라 쉽게 commit해 버릴 수도 있어 빌드가 깨지는 걸 완벽히 막지는 못하니까요. 프로젝트 진행하면서 늘 고민했던 부분인데 jar로 배포하면 좀 더 깔끔해지겠군요. @자바지기 참 더디고 어렵게 변하는게 제 스타일인데 세상이 빨리 변하라고 재촉하니 가끔 서글퍼지기도 해요. ㅋㅋㅋㅋㅋ

2012-10-23 09:47

@Yeongju Hwang 저도 더디게 사는 것을 좋아해요. 빠르게 변화하는 세상에 맞추어 사는 것이 가끔은 힘들고 거버울 때가 많습니다. 그래서 제가 세운 기준은 가능하면 제가 원칙을 세우고 그 원칙에 맞추어 살아가려고 노력합니다. 하지만 주위 모두가 빠르게 바뀌어 가기 때문에 쉽지 않은 경우가 많지만요.

최근에 제가 quiet라는 책을 읽고 있는데 혹시 영주씨에게도 도움이 될지 모르겠네요. 한번 읽어보면 좋을 듯 합니다. 스터디에서 뵐께요.

의견 추가하기

연관태그

← 목록으로