Maven
빌드, 패키징, 문서화, 테스트, 테스트리포팅, git, 의존성 관리(Dependency Management), 배포, 형상관리 서버와의 연동(SCMs) 작업 등을 손쉽게 해주는 도구
CoC (Convention over Configuration) : 관습. 예로 소스파일의 위치와 소스가 컴파일된 파일의 위치를 미리 지정하는 것
장점
- Maven을 사용하면 의존성 라이브러리를 관리하기 편리함. - JSTL처럼 lib 폴더에 복붙X
- Maven에서 설정한 대로 모든 개발자가 일관된 방식으로 빌드 수행
- 제공되는 다양한 플러그인으로 많은 일을 자동화 시킴
기본 사용 방법 - pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>kr.or.connect</groupId>
<artifactId>examples</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>mysample</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
위 pom.xml 파일에서 <dependencies/> 엘리먼트가 Dependency Management 기능의 핵심이라고 할 수 있습니다.
해당 엘리먼트 안에 필요한 라이브러리를 지정하게 됩니다.
- project : pom.xml 파일의 최상위 루트 엘리먼트(Root Element)입니다.
- modelVersion : POM model의 버전입니다.
- groupId : 프로젝트를 생성하는 조직의 고유 아이디를 결정합니다. 일반적으로 도메인 이름을 거꾸로 적습니다.
- artifactId : 해당 프로젝트에 의하여 생성되는 artifact의 고유 아이디를 결정합니다. Maven을 이용하여 pom.xml을 빌드할 경우 다음과 같은 규칙으로 artifact가 생성됩니다. artifactid-version.packaging. 위 예의 경우 빌드할 경우 examples-1.0-SNAPSHOT.jar 파일이 생성됩니다.
- packaging : 해당 프로젝트를 어떤 형태로 packaging 할 것인지 결정합니다. jar, war, ear 등이 해당됩니다.
- version : 프로젝트의 현재 버전. 추후 살펴보겠지만 프로젝트가 개발 중일 때는 SNAPSHOT을 접미사로 사용합니다. Maven의 버전 관리 기능은 라이브러리 관리를 편하게 합니다.
- name : 프로젝트의 이름입니다.
- url : 프로젝트 사이트가 있다면 사이트 URL을 등록하는 것이 가능합니다.
실습
1. 이클립스에서 Maven Project 생성 시작
File - New - Project - Maven Project- Next - Next
2. Archetype(아키타입) 선택하기
일종의 프로젝트 템플릿. 어떤 아키타입을 선택했느냐에 따라서 자동으로 여러 파일을 생성 및 라이브러리 셋팅해줌.
Maven으로 웹 어플리케이션을 개발하려면 maven-archetype-webaap 으로 선택 후 NEXT

3. Group Id와 Artifact id 지정 후 Finish
Group id : 보통 회사나 팀의 도메인 이름을 거꾸로 적음
Artifact id : 해당 프로젝트의 이름
package : group id와 artifact id 조합

4. Maven의 플러그인을 잘 사용할 수 있도록 설정하기
- JDK 1.8 버전으로 설정하기
- pom.xml에서
- maven compiler .source와 .target을 1.8로 수정 후 저장
-
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
- WAS Runtime을 Tomcat으로 설정하기
- index.jsp 파일에서 발생하는 에러를 해결해줌
- web.xml 파일 삭제 -> 이 파일이 존재하면 아무리 3.1로 바꾸어도 2.3으로 돌아감.
- pom.xml의 <dependencies>에 아래 코드 추가 후 저장
-
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
- pom.xml 에서의 scope 설명
- compile(기본값) : 컴파일 시 필요. 테스트 및 런타임에도 클래스 패스에 포함됨.
- runtime : 런타임 시 필요. ex-JDBC드라이버. 컴파일 시 필요 없지만 실행 시 필요함
- provided : 컴파일 시 필요함. 배포 시 제외됨. 의미는 런타임 때 컨테이너 등에서 제공된 모듈. ex - servlet, jsp api 등
- test : 테스트 코드를 컴파일 할 때 필요. 테스트 시 클래스 패스에 포함되며, 배포 시 제외됨.
- pom.xml 에서의 scope 설명
- 프로젝트 우클릭 -> Properties -> Project Facets -> Runtimes -> Apache Tomecat 체크하기
- 이전에 Dynamic Web Application에서는 WAS Runtime 설정을 Tomcat으로 지정했기에 tomcat 라이브러리를 이클립스에서 사용할 수 있었음. Maven에선 미리 지정하지 않았기에 Servlet 라이브러리를 찾지 못해서 발생한 에러
- Apply and Close
JSTL은 Tomcat이 기본으로 제공하지 않기에 컴파일 할 때도, 배포할 때도 사용돼야 함
그래서 scope를 아예 삭제함 (provided가 아님)
- JSTL 라이브러리 추가
- JSTL은 Tomcat이 기본 제공X. 그래서 컴파일, 배포 시에도 사용돼야 함 (그래서 scope 아예 삭제. provided아님)
- pom.xml 에 아래 코드 추가 후 저장
<dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
- Dynamic Web Module버전을 3.1로 설정
- 2.3 버전에서는 EL 표기법의 결과가 출력되지 않기에 버전을 높여줘야 함.
- /WEB-INF에 web.xml 파일을 아래 내용으로 덮은 후 저장
-
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <display-name>Archetype Created Web Application</display-name> </web-app>
- 프로젝트 우클릭 -> Properties -> Project Facets -> Dynamic Web Module -> Version -> 3.1 선택
- Update 해줌으로써 모든 설정이 완료되었는지 재점검
- 프로젝트 우클릭 -> Maven -> Update Project -> OK

- 확인
- 아래 사진처럼 되었다면 apply and close

- 모든 설정 이후 디렉토리를 확인했을 때, 1.8도 보여야 함

4. pom.xml 및 대략적인 디렉터리 구조 확인
java 코드를 담아둘 폴더 생성하기


5. JSTL 적용한 JSP 파일로 테스트
jstl03.jsp 를 /src/main/webapp에 생성 후 Run on Server
B학점 입니다. 가 정확히 떠야 함

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% request.setAttribute("score", 83); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:choose>
<c:when test="${score >= 90}">
A학점입니다.
</c:when>
<c:when test="${score >= 80}">
B학점입니다.
<c:otherwise>
F학점입니다.
</c:otherwise>
</c:choose>
</body>
</html>
'Web > Java+Spring' 카테고리의 다른 글
JDBC - 입력/수정/조회/삭제 (0) | 2021.05.14 |
---|---|
JDBC 준비 (0) | 2021.05.14 |
JSTL (JSP Standard Tag Library) (0) | 2021.05.10 |
EL (Expression Language) for JSP (0) | 2021.05.10 |
Scope (0) | 2021.05.10 |