Programming/Web, HTML

Web :: 자바 웹 프로젝트(Web Application) 디렉토리 구조

WANJIN 2017. 6. 2. 10:33
반응형

이전에 자바 웹 프로젝트를 생성하는 것을 설명한 적이 있었당.


요것을 모르겠다면 이전 포스트 읽고오시길.


=>  2017/06/01 - [Programming/Lib, Tools] - Eclipse :: 이클립스에서 웹 애플리케이션(Web Application) 프로젝트 만들기



이번 포스트에서는 이클립스의 자바 웹 애플리케이션 구조 와  실무의 자바 웹 애플리케이션 구조  를 설명하고 어떻게 다른지 비교하면서


왜. 대체 왜 실무에서는 다른 프로젝트 폴더 구조를 사용하는지를 이야기하며 마무리하도록 하게따.



1. 이클립스 웹 애플리케이션 디렉토리 구조

$workspace/프로젝트명/build

/classes

/src

/WebContent

/META-INF

/WEB-INF

/lib


이거슨 이클립스의 자바 웹 애플리케이션 디렉토리 구조이다.

이전에 이클립스에서 웹 프로젝트를 만드는 방법을 소개했었는데, 그 2 가지 방법이 있었다. 
(이클립스의 다이나믹 웹 프로젝트를 만드는 방법과 gradle을 이용하는 방법.)

그 중, 손쉽게 만들 수 있는 이클립스 다이나믹 웹 프로젝트를 생성하게되면, 위와 같은 구조를 띈다.

그런데, 회사마다 다르겠지만. 이 구조는 잘 사용하지 않는다.


그렇담?? 뭐가 실무에서 많이 쓰이는데??

2. 실무의 웹 애플리케이션 디렉토리 구조 (=Maven 웹 프로젝트 구조)


실무에서는 대부분  메이븐의 웹 프로젝트 구조를 많이 쓴다.

개발을 돕는 툴들이 겁나게 많은데, 메이븐은 그 중 하나로, 사이트에 가보면 스스로를 이렇게 설명하고 있다.

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.


비슷한게 Gradle이 요새는 뜨고 있는데 이와 관련된 내용은 다음에 제대로 포스팅 하는 것으로 하고. 

다시 본론으로 돌아와, 이게 그 폴더 구조이다.

$workspace/프로젝트명

/src

/main

/java

/resources

/webapp(=WebContent)

/WEB-INF

/test

/java

/resources

/bin




 

<디렉토리 설명>


-  src : 프로그램 소스 파일을 두는 곳


- main/java : 자바 소스 파일(.java파일)을 두는 곳


- main/resources : 프로그램을 실행할 때 사용하는 설정 파일(.properties, .xml 등)을 두는 곳


- main/webapp : HTML, CSS, JavaScript, GIF 등 정적 웹 자원을 두는 곳.

                   (JSP파일도 여기에 둠)


- main/webapp/WEB-INF : 웹 애플리케이션 정보 파일을 두는 곳


- test : 코드를 테스트하는 소스 파일을 두는 곳


- test/java : 단위 테스트 관련 자바 소스 파일을 두는 곳


-bin : 소스코드가 컴파일된 *.class 파일, *properties파일, *xml파일 등



그런데 우리의 이클립스는 메이븐 폴더구조를 알아서 딱딱 만들어주지 않는다.


이클립스로 웹 플젝트를 암만 만들어봐야 지네 플젝 구조를 만들어줄 뿐. 몹쓸.



3. 현업에서 메이븐 폴더 구조를 자바 웹프로젝트 디렉토리 구조로 많이 사용하는 이유

사람마다, 회사마다 모두 다른 IDE를 사용한다.

어떤 사람은 이클립스를 쓰는데 또 어떤 사람은  인텔리제이를 쓰고.. 

그럼 프로젝트를 함께 개발한다고 할 때, 공유하기가 매우 불편하다.


즉, 특정 IDE폴더구조를 사용하게 되면 공유하기가 불편하다. 


저사람과 내가 사용하는 폴더구조가 다르면, 어떤 파일은 여기에, 또 어떤 파일은 저기에 내가 직접 한땀한땀 복붙해줘야 하며

뭐 하나 잘못하면 잘 돌아가야 할 프로젝트가 안 돌아가는 대참사가 일어나게 마련.


이 때문에 전 세계 공통으로 사용하는 폴더구조가 있는데 그게  Maven 폴더 구조다.

이게 국제적으로 모든 개발자가 가장 많이 사용하는 폴더 구조인거다.


그리고 다른 사람과 공유할 일이 생기면, src폴더만 공유하면 된다.



그럼 이클립스에서 이 메이븐 폴더 구조를 사용하려면??


이클립스에서 메이븐 폴더 구조를 만들어주려면 src 폴더와 그 밑의 폴더들을 모두 직접 만들어주면 된다.


참고로 이클립스는 컴파일이 되면서 자동으로 bin 폴더를 생성한 후 그 곳에 class파일을 두니까 굳이 bin폴더를 만들어줄 필요는 없다.


src 폴더 구조만 만들어준 후, 이전 포스트에서 소개한 방법을 응용해주면 되시겠다.



끄읏-.






반응형