Java 프레임워크 만들기 - JSP

이클립스 메이븐 프로젝트 만들기 1 - Eclipse Maven Project

carrotweb 2021. 3. 30. 19:29
728x90
반응형

메이븐(Maven, Apache Maven)이란 소프트웨어 프로젝트 관리(management and comprehension) 도구로써 프로젝트 객체 모델(POM, Project Object Model)의 개념을 기반으로 프로젝트 관리에 필요한 환경 설정과 라이브러리에 대한 의존성을 관리합니다. 또한 플러그인을 기반으로 프로젝트 빌드(build), 보고(reporting), 문서(documentation) 기능 등을 관리할 수 있습니다.

이러한 프로젝트 객체 모델(POM)의 정보는 프로젝트의 "pom.xml"파일에 있습니다.

Eclipse Maven Integration - m2eclipse™

이클립스(Eclipse)에서는 Indigo 버전부터 아파치 메이븐(Apache Maven)을 통합하여 Maven의 "pom.xml"을 편집하고 IDE(Integrated Development Environment, 통합 개발 환경)에서 빌드를 실행하는 등의 작업을 더 쉽게 할 수 있도록 지원하고 있습니다. 그래서 메이븐(Maven)을 위한 다른 설정이 필요 없습니다.

메이븐(Maven)의 주요 기능에 대해 간단하게 설명하겠습니다.

메이븐 의존성(Dependency) 관리

개발자들이 프로젝트에 필요한 라이브러리(JAR파일)들을 직접 찾아서 다운로드하고 프로젝트 라이브러리("WebContent > WEB-INF > lib")에 추가하여 사용하였습니다. 그러다 보니 프로젝트에서 사용되는 라이브러리의 종류와 버전이 각각 달라져 프로젝트를 통합적으로 빌드할 경우 라이브러리 버전 충돌과 같은 다양한 문제가 발생하였습니다.

그래서 라이브러리를 편리하게 다운로드하고 라이브러리 간의 버전 문제를 해결하기 위해서 메이븐(Maven)은 라이브러리 다운로드 및 의존성에 대한 관리를 지원합니다.

메이븐(Maven)은 POM(프로젝트 객체 모델)에서 선언된 "<dependency>"설정으로 빌드 및 배포에 필요한 라이브러리(JAR파일)들을 로컬 저장소(또는 원격 저장소)에 다운로드 받아서 관리하고 사용합니다.

메이븐(Maven)을 사용하는 가장 큰 이유입니다.

메이븐 저장소(Repository)

메이븐(Maven)은 기본적인 로컬 저장소로 "C:\Users\{사용자계정}\.m2\repository"에 메이븐 아티팩트(Maven artifact)들이 저장되도록 구성합니다. (윈도우10 기준입니다.)

이클립스 메뉴에서 [Window > Perferences]를 클릭한 후 [Maven > User Settings]에서 확인할 수 있습니다.

 

메이븐 플그인(Plugin)

메이븐(Maven)은 프로젝트 빌드나 보고 시에 플러그인(Plugin)을 사용합니다.

메이븐(Maven)은 POM(프로젝트 객체 모델)에서 선언된 "<build>"의 "<plugin>"설정으로 빌드(컴파일)할 때 사용합니다. 또한 POM(프로젝트 객체 모델)에서 선언된 "<reporting>"의 "<plugin>"설정으로 사이트 생성 중에 진행 상태를 보고서로 작성할 때 사용합니다.

이클립스에서 통합된 메이븐(Maven)에 대한 설치 확인은 다음과 같습니다.

1. 이클립스 메뉴에서 [Help > About Eclipse IDE]를 클릭합니다.

 

2. 아이콘 리스트에서 "m2"를 클릭합니다.

또는 "Installation Details" 버튼을 클릭합니다.

 

2021년 6월 4일에 1.18.0 버전으로 업데이트되었습니다.

이클립스 메뉴에서 [Help > Check for Updates]를 통해 최신 버전으로 업데이트받을 수 있습니다.

 

이클립스 메뉴에서 [Help > Check for Updates]를 클릭합니다. "Available Updates"에서 "Deselect All"버튼을 클릭하여 전체 선택을 없앤 후 "m2e"만 선택한 다음 "Next >"버튼을 클릭합니다.

 

 

메이븐(Maven)에 대해 이해를 했으니 간단하게 메이븐 프로젝트(Maven Project)를 만들어 보겠습니다.

 

1. "Project Explorer"에서 컨텍스트 메뉴에서 [File > New > Maven project]를 클릭합니다.

또는 "Project Explorer"에서 오른쪽 버튼을 클릭하여 컨텍스트 메뉴에서 [New > Other...]를 클릭합니다. 그리고 "Select a wizard"창에서 "Maven"의 "Maven Project"를 클릭하고 "Next >"버튼을 클릭합니다.

 

2. "New Maven project"창이 나타납니다.

"Create a simple project (skip archetype selection)"를 체크하고 "Next >"버튼을 클릭합니다.

 

"Artifact"를 설정합니다.

"Artifact"정보를 입력하고 "Finish"버튼을 클릭합니다.

"Group Id" : 프로젝트 또는 라이브러리를 식별하기 위해 네임스페이스(namespace)로"Artifact"들이 저장되는 그룹입니다. 다른 그룹과 구분되는 고유 값이어야 합니다.

첫 번째는 회사나 조직 이름 또는 대표 도메인(URL 주소인 도메인을 역순으로 적용)을 사용하고 그다음은 프로젝트 또는 서비스나 모듈 명을 사용합니다. '.'(도트)을 이용하여 구분합니다.

개인적인 개발 프로젝트임으로 가상 도메인인 "www.home.com"을 역순으로 적용한 "com.home"과 프로젝트 임으로 "project"을 결합하여 사용하겠습니다.

"Group Id"는 "com.home.project"으로 하였습니다.

"Artifact Id" : 제품명(산출물명)이자 프로젝트 명입니다.

소문자로 작성하며 '-'(하이픈) 또는 '.'(도트)를 포함하여 구분하기도 합니다.

"Packaging"이 jar일 경우 jar 파일의 파일명이 됩니다. jar 파일명 구조는 {Artifact Id}-{Version}.jar 입니다.

"Artifact Id"는 "test2"로 하였습니다. 전체적으로는 "com.home.project.test2"가 됩니다.

"Version" : "Artifact"의 버전입니다. 기본 버전인 "0.0.1-SNAPSHOT"으로 하였습니다.

개발 버전은 SNAPSHOT, 배포 버전은 RELEASE로 사용됩니다. 생략할 수 있습니다.

"Packaging" : 프로젝트의 패키징 방식입니다. 웹 프로젝트임으로 "war"를 선택합니다.

- jar(Java Archive)는 여러 개의 자바 클래스나 리소스, 메타데이터 등을 하나의 파일로 압축합니다.

- pom(Project Object Model)는 프로젝트의 라이브러리 의존성(dependencies), 모듈(modules), 정보(properties), 저장소(repositories), 빌드(build) 등을 관리하는 관리 파일입니다.

- war(Web application ARchive)는 자바 클래스, 서버 페이지(jsp), XML, HTML, 스크립트, 이미지 등 웹 프로젝트의 모든 파일을 하나의 파일로 압축합니다.

"Name" : Artifact 명입니다.

"Description"는 Artifact 설명입니다.

"Project Explorer"에 "test2"으로 웹 프로젝트가 생성됩니다.

그렇지만, 2개의 경고와 1개의 에러가 발생하였습니다.

하단에 "Markers"탭에 경고와 에러 메시지를 자세히 나타납니다.

 

다음처럼 메이븐 프로젝트 구조로 생성됩니다.

 

3. "Markers"탭에서 "JRE Compiler Compliance Problem"과 "Java Build path Problems"에 대한 경고를 클릭해보면 설치된 JRE와 Compiler compliance가 맞지 않는다는 메시지입니다.

 

메뉴에서 [Project > Properties]를 클릭합니다.

 

"Properties"창이 나타납니다. "Java Compiler"를 선택합니다.

"Java Compiler"에서 "Compiler compliance level"이 1.5인걸 확인할 수 있습니다. 하단 메시지에도 Compiler compliance level이 설치된 JRE(1.8)과 맞지 않는다고 알려줍니다.

"Properties"창에서 "Java Build Path"를 선택하고 "Libaries"탭을 선택합니다.

"Libaries"탭에서 "JRE System Libary [J2SE-1.5]"를 선택하고 "Edit..."를 클릭합니다.

"Edit Library"창이 나타납니다.

"System library"에서 "Execution environment"에서 이전에 설치한 "JavaSE-1.8 (jdk1.8.0_181)"를 선택하고 "Finish"버튼을 클릭합니다.

"Apply and Close"버튼을 클릭하여 적용합니다.

"Markers"탭에 2개의 경고가 없어지고 1개의 에러가 추가된 것을 확인할 수 있습니다.

"Properties"창에서 "Java Compiler"를 선택하면 경고가 없어진 것을 확인할 수 있습니다.

 

4. "Faceted Project Problem (Java Version Mismatch) - Java compiler level does not match the version of the installed Java project facet."는 "Project Facet"의 java 버전이 일치하지 않는다는 메시지입니다.

 

메뉴에서 [Project > Properties]를 클릭합니다.

 

"Properties"창이 나타납니다. "Project Facets"를 선택합니다.

"Project Facet"에서 "Java"의 버전이 "1.5"로 되어있습니다.

"Java"의 버전을 "1.8"로 변경하고 "Apply and Close"버튼을 클릭하여 적용합니다.

"Markers"탭에 1개의 에러가 없어진 것을 확인할 수 있습니다.

5. "Markers"탭에 있는 "Maven Java EE configuration Problem"는 "web.xml"이 없다는 메시지입니다.

 

"Project Explorer"의 "test2"에서 오른쪽 버튼을 클릭하여 컨텍스트 메뉴 [Java EE Tools > Generate Deployment Descriptor Sub]를 클릭합니다.

 

그러면 "src > main > webapp > WEB-INF"에 "web.xml" 파일이 생성됩니다.

 

이젠 모든 경고와 에러가 없어졌습니다.

 

이어서 "pom.xml"에 "HttpServlet"를 추가하는 방법과 간단하게 "Hello world"를 만들어 실행해보겠습니다.

 

Spring으로 Project를 진행하신다면, 다음으로 이동하여 보시기 바랍니다.

Spring은 Maven Spring Project 메뉴에서 설명하고 있습니다.

728x90
반응형