오늘 수업시간에 메이븐 빌드 도구와 STS에 대해서 배웠는데 둘에 대한 정확한 개념이 잡히지 않아서 따로 검색을 하고 찾아 추가 공부를 해보았다.
1. Apache Maven
1) Maven(메이븐)
- 정의 : 프로젝트 구조와 내용을 기술하는 선언적 접근 방식의 오픈 소스 빌드 도구(툴)
- 프로젝트 종속 라이브러리들과 그 라이브러리에 의존하는 dependency 자원까지 관리를 해준다.
- 프로젝트의 전과정을 통합 관리 해준다.
- 프로젝트 전반의 리소스 관리와 설정 파일, 이와 관련된 표준디렉토리 구조를 처음부터 일관된 형태로 구성하여 관리할 수 있다.
2) Maven(메이븐) 설치
메이븐 설치하는 방법은
수업 TIL에도 적혀있지만 간단하게 글로만 풀자면 아래와 같다.
- maven.apache.org에 접속한 후 Download를 클릭
- apahce-maven-(version)-bin.zip 파일을 다운로드
- 원하는 폴더에 다운로드 한 압축을 해제하고 경로를 복사
- 환경 변수 설정에서 MAVEN_HOME을 생성하고 MAVEN_HOME/bin을 PATH에 등록한다.
(수업에서는 M2_HOME으로 생성을 하여서 M2_HOME/bin을 등록해 PATH에 새롭게 등록해주었다)
- cmd에서 mvn -version 명령으로 설치가 잘되었는 지 확인
3) 메이븐 기반의 웹 프로젝트 기본 디렉토리 구조
4) 프로젝트 구성 요소
구성요소 | 설명 |
pom.xml | 프로젝트 정보 표시 스프링에서 사용되는 여러 가지 라이브러리를 설정해 다운로드 할 수 있음 |
src/main/java | 자바 소스 파일 위치 |
src/main/resources | 프로퍼티 파일이나 XML 파일 등 리소스 파일이 위치 |
src/main/webapp | WEB-INF 등 웹 어플리케이션 리소스 위치 |
src/text/java | JUnit 등 테스트 파일 위치 |
src/test/resources | 테스트 시에 필요한 리소스 파일이 위치 |
5) pom.xml
프로젝트가 생성되면 pom.xml 파일이 자동으로 생성되어지는데 여기서 POM은 Project Object Model의 약자로 Project의 Object Model의 정보를 담고있는 파일이다.
pom.xml은 <project>...</project>로 둘러싸여서 section 별로 여러 정보를 나타내며 설정할 수 있다. 이 파일에서 주로 다루는 기능은 프로젝트 정보, 빌드 설정, 빌드 환경, 의존성 정보 등이 있다.
- 프로젝트 정보 : 프로젝트의 이름, 개발자 목록, 라이센스 등
속성 | 설명 |
groupId | 프로젝트 그룹 id를 나타내며 일반적으로 도메인 이름을 사용해 설정. |
artifactId | 프로젝트 아티팩트 id를 설정. 대개는 패키지 이름으로 설정. |
version | 프로젝트의 버전을 설정. |
packaging | 애플리케이션 배포 시 패키징 타입을 설정. 이 경우는 war파일로 패키징됨 |
- 빌드 설정 : 소스, 리소스, 라이프 사이클별 실행한 플로그인(goal) 등 빌드와 관련된 설정
- 빌드 환경 : 사용자 환경 별로 달라질 수 있는 프로파일 정보
- POM 연관(의존성) 정보 : 의존 프로젝트(모듈), 상위 프로젝트, 포함하고 있는 하위 모듈 등
속성 | 설명 |
dependency | 해당 프로젝트에서 의존하는 다른 라이브러리 정보를 기술 |
groudId | 의존하는 프로젝트의 그룹 id |
artifactId | 의존하는 프로젝트의 artifact id |
version | 의존하는 프로젝트의 버전 정보 |
2. Spring Tool Suite(STS)
- 이클립스 기반으로 만들어진 스프링 기반 애플르키이션 개발용 도구
log4j란?
스프링 프로젝트를 생성하면 자동으로 log4j 라이브러리가 설치 된다. -> log4j.xml
log4j는 로그 기능을 제공하는 오픈 소스 라이브러리로, 애플리케이션에서 웹 사이트에 접속한 사용자 정보나 각 클래스의 메소드 호출 시각 등 여러 가지 정보를 로그로 출력해서 관리한다.
log4j XML 태그
태그 | 설명 |
<Appender> | 로그의 출력 위치를 결정(파일, 콘솔, DB등). log4j API 문서의 XXXAppender로 끝나는 클래스들의 이름을 보면 출력 위치를 알 수 있다. |
<Layout> | Appender가 어디에 출력할 것인지 결정했다면 어떤 형식으로 출력할지 출력 레이아웃을 결정한다. |
<Logger> | 로깅 메세지를 Appender에 전달한다. 개발자가 로그 레벨을 이용해 로그 출력 여부를 조정할 수 있다. logger는 로그 레벨을 가지고 있으며, 로그의 출력 여부는 로그문의 레벨과 로거의 레벨을 가지고 결정한다. |
https://logging.apache.org/log4j/1.2/manual.html