2021.10.28 - [Developer/Spring] - maven 빌드 pom.xml 구성

올해 중순에 수행한 팀 프로젝트의 package explorer 구성을 적어본다.

 

개발을 처음 시작했을 때 가장 궁금했던 부분이고, 어디에 어떤 파일이 위치하는지가 알고싶었던 나와 같은 다른 사람들에게 조금이나마 도움이 되었으면 좋겠다.

(GitHub에 더 많은 자료가 있지만 설명과 함께 설명이 되어 있는 곳을 찾는 것이 응근 쉽지 않았다.)

 

+ 프로젝트 구성은 개발자의 의도와 프레임워크 구성에 따라 상이하므로 참고로 보는 것을 추천한다.

 


개발환경: Spring Maven, Eclipse, JAVA, JS, CSS, HTML, JSP, Oracle XE, Window 10 

 

 

Spring maven 구성에 대한 설명은 아래와 같다.

 

main 이하 java 폴더

com.example은 group 디폴트 값이고, 개발자 또는 저작권 그룹을 나타낸다. artifact 명으로는 프로젝트명을 사용했다.

 

팀프로젝트이기 때문에 각자 담당한 기능을 기준으로 하위 폴더를 나누고 거기에 각각 model, controller, service라는 폴더를 나누어 관리했다. 여기서 /model은 VO와 DAO를 포함하고, /controller는 @RequestMapping 등의 기능을 구현하는 .java 파일이다. /service는 DAO를 통해 DB에 연결할 수 있도록 하는 메소드들을 정의하는 곳이다.

(기능 구현에 대한 부분은 이후에 포스팅을 통해 연결해 놓을 예정이다.)

 

log4j.xml

Spring maven 설정시 자동으로 생성되며, 로그 확인을 위해 사용된다.  기본적으로 생성되기에 별도 설정을 필요로 하지 않는다. Appender는 로그를 찍을 대상이나 어떤 방식으로 찍을지를 결정한다. logger는 package 영역을 지정하고 해당 영역에서 사용할 logger를 정의한다. root는 설정하지 않은 logger에 대해 출력요소를 정의하는 디폴트 값이다.

 

로그 자체는 controller에서 Logger 상수를 선언 패키지의 클래스명 또는 이름을 파라미터로 선언해서 사용한다. 해당 상수.debug와 같이 실행해서 log 값을 볼 수 있다.

 

JRE System Library

JRE나 JDK가 실행될 수 있도록 하는 라이브러리들이 있다. 스프링 프레임워크 사용환경이 아니여도 기본적으로 있는 라이브러리라고 할 수 있다. 세부 라이브러리 내용은 OpenJDK를 참고하자.

 

Maven Dependencies

이름에서 알 수 있듯이 maven 환경에서 적용될 dependencies를 담고 있다.

dependencies 추가하고 싶을 땐 최상위 프로젝트명에서 우클릭해서 Maven - Add Dependency를 이용해서 라이브러리를 추가한다. 그리고 Build Path에 잘 설정되어 있는지 확인하자. 

또는 pom.xml에서 필요한 dependencies를 추가해주면 자동으로 빌드되면서 라이브러리가 추가되는 것을 볼 수 있다.

 

dependencies 종류와 선호도는 MVN REPOSITORY 사이트에서 확인할 수 있다.

 

Webapps

웹 서비스를 만들어 본 적이 있다면 가장 익숙한 경로가 아닐까 싶다. 크게 resources와 WEB-INF로 구성되어 있다.

 

먼저 resources는 css, js, audio, images 등 웹 애플리케이션 구동에 필요한 프론트를 구성하는 자료를 포함하는 하위 디렉토리로 구성되는 공간이다.

 

WEB-INF는 디폴트 값으로 spring > appServlet > servlet-contex.xml 파일과 config/websocketContext.xml 그릭 web.xml 파일이 있다. 여기서 tiles나 views 등 하위 디렉토리 생성으로 뷰단 설정을 위한 파일들을 추가할 수 있다.

 

servlet-context.xml

DispatcherServlet이 참조하는 파일이다. HandlerMapping을 통해 요청에 매핑된 Controller가 있는지를 검색하고 해당 Controller에서 요청을 처리할 수 있도록 한다. 그리고 다시 DidspatcherServlet을 거쳐 view단에 처리결과를 내보낸다.

 

그 중 예를 들면, 다음과 같은 설정으로 InternalResourceViewResolver를 이용해서 Controller 단에서 return 값을 String으로 넘겼을 때, 설정한 경로 디렉토리 이하의 리턴값과 동일한 파일명의 JSP 파일을 찾아서 view단으로 보여줄 수 있게 한다. 

 

1
2
3
4
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <beans:property name="prefix" value="/WEB-INF/views/" />
        <beans:property name="suffix" value=".jsp" />
</beans:bean>
cs

 

이외에도 동일한 view단 구조를 tiles를 통해 관리하기 위해 설정하는 TilesViewResolver 등 다양한 뷰 리졸버를 빈 객체로 주입할 수 있다.

 

web.xml

스프링 프로젝트가 가장 먼저 읽는 파일로 위에서부터 순차적으로 해석한다. 그리고 환경설정 파일인 root-context.xml 파일부터 참조할 수 있도록 한다. 그외에도 web.xml은 servlet 설정, 첫 페이지 설정, filter 설정을 할 수 있다.

 

pom.xml

pom.xml은 dependencies들을 추가하고 스프링 프로젝트에 적용되어 사용할 수 있도록 한다. maven 구성환경에서 볼 수 있다. 대부분의 프로젝트 빌드 옵션을 설정하는 곳이다. 

 

2021.10.28 - [Developer/Spring] - maven 빌드 pom.xml 구성

 

 

 

댓글