본문 바로가기
boostcource/boostcourse_web programming

Maven 실습

by sgyeong 2024. 4. 22.

File > New > Maven Project

 

 

또는 File > New > Other > Maven 아래의 Maven Project

 

 

Maven 프로젝트가 기존 워크스페이스에 생성되도록 하고 Next

 

 

아키타입(Archetype)을 선택한다. 아키타입이란 일종의 프로젝틑 템플릿(Template)이다.
어떤 아키타입을 선택했느냐에 따라서 자동으로 여러가지 파일들을 생성하거나 라이브러리를 셋팅해주는 일을 한다.

Maven을 이용하여 웹 어플리케이션을 개발하기 위해 maven-archetype-webapp을 선택한 후 Next 해준다.

 

 

 

 

Group Id는 보통 프로젝트를 진행하는 회사나 팀의 도메인 이름을 거꾸로 적는다.
Artifact Id는 해당 프로젝트의 이름을 적는다.
버전은 보통 기본값 (0.0.1-SNAPSHOT)으로 설정한다.

package 이름은 group id와 Artifact id가 조합된 이름이 된다.

Group Id는 kr.or.connect이고, Artifact Id가 mavenweb으로 설정했기 때문에 package 이름은 kr.or.connect.mavenweb이 된다.

 

 

 

 

콘솔에 이러한 내용이 나오면

 

Y를 입력하고 엔터한다.

 

Maven Project가 생성되었다. 

 

 

 

Maven 디렉토리 구조

 

 

 

 

 

프로젝트를 우측 클릭하여 Properties를 선택한다.

그리고 Java Compiler 메뉴를 선택한다.

 

기본적으로 JDK 1.7을 사용한다.

JDK8을 사용하도록 하려면 Maven 설정 파일인 pom.xml 을 수정해야 한다.

 

 

 

mavenweb의 pom.xml 코드이다.

 

 

위 내용에 다음과 같은 코드를 입력하고 저장해준다.

 

 

다시 Properties의 Java Compiler을 확인하면 1.8버전으로 바뀐 것을 볼 수 있다.

 

만약 바뀌지 않았을 경우 Maven 메뉴 아래의 Java EE Integration을 선택한다.

그리고 Enable Project Specific Settings 에 체크하고 Apply and Close를 해준다.

 

 

 

그런데 index.jsp에서 오류가 뜬다.

 

원인

 The default superclass, "javax.servlet.http.HttpServlet", according to the project's Dynamic Web Module facet version (2.3), was not found on the Java Build Path.

 

Maven 프로젝트로 생성했을 경우 WAS 런타임이 지정을 안 했기 때문에 서블릿 라이브러리를 찾을 수 없다.

 

이 경우 

 

방법1)

dependencies 엘리먼트 아래에 다음을 추가한다.

 

provided는 servlet 라이브러리를 컴파일 시에만 사용되고 배포 시에는 사용되지 않는다는 것을 의미한다.

 

 

* scope 

1) compile : 컴파일 할 때 필요하다. 테스트 및 런타임에도 클래스 패스에 포함된다. scope을 설정하지 않는 경우 기본값이다.
2) runtime : 런타임에 필요하다. JDBC 드라이버 등이 해당된다. 컴파일 시에는 필요하지 않지만, 실행 시에 필요한 경우이다.
3) provided : 컴파일 시에 필요하지만, 실제 런타임 때에는 컨테이너 같은 것에서 제공되는 모듈이다. servlet, jsp api 등이 이에 해당된다. 배포시 제외된다.
4) test : 테스트 코드를 컴파일 할 때 필요하다. 테스트 시 클래스 패스에 포함되며, 배포 시 제외된다.

 

 

 

 

방법2)

프로젝트 우클릭 > Properties

 

 

Java Build Path의 Add Library를 선택하고 Server Runtime 선택한다. 그리고 Next

 

 

Server Library에서 서버를 선택한 후 Finish 해준다.

 

 

다음으로 Project Facets으로 가서 Runtimes에서 서버를 선택해주고 Apply해준다. 

 

 

오류가 사라진 것을 볼 수 있다.

 

 

 

JSTL 라이브러리 추가

 

pom.xml에 추가해준다.

 

JSTL은 Tomcat이 기본적으로 제공하지 않기 때문에 컴파일할 때도 배포할 때도 사용돼야 한다.

그래서 scope에 provided가 있지 않다.

 

* 다이나믹 웹 모듈의 2.4부터 EL이 기본으로 사용할 수 있도록 설정되기 때문에 2.3일 경우에는 EL표기법의 결과가 출력되지 않는다.

 

* 만약 실행했는데 오류가 나면서 실행이 되지 않는 경우

웹 어플리케이션을 초기화하고 실행한다.

1) 기존 tomcat을 종료한다.
2) 프로젝트의 우측 버튼을 눌러서 Maven 메뉴 아래의 update project를 선택한 후 확인한다.
3) Server view에서 기존 Tomcat Runtime을 삭제한다.
4) Project 메뉴의 clean을 선택한다.

5) 프로젝트 익스플로러에서 server 삭제한다.

 

 

 

 

 

프로젝트 실행 결과

 

 

 

 

 

 

참고 : boostcourse  https://www.boostcourse.org/web316/lecture/16724?isDesc=false

 

웹 프로그래밍(풀스택)

부스트코스 무료 강의

www.boostcourse.org

 

'boostcource > boostcourse_web programming' 카테고리의 다른 글

JDBC -1  (0) 2024.04.24
JDBC (Java Database Connectivity)  (0) 2024.04.24
Maven  (0) 2024.04.22
데이터베이스  (0) 2024.04.21
JSTL -4  (0) 2024.04.21