안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
Maven이란?
- 자바용 프로젝트 관리 도구
- POM (Project Object Model) XML 문서를 통해 해당 프로젝트의 버전 정보 및 라이브러리 정보들을 통합하여 관리하는 프레임워크
라이브러리 종속성
- 일반적인 프로젝트는 개발자가 필요한 라이브러리를 직접 찾아서 추가해야 함
- Maven을 사용하면 pom.xml 문서에 사용하고자 하는 라이브러리를 등록하여 자동으로 프로젝트에 추가되게 하여 관리의 편리성 제공
직접 다운로드 받아 프로젝트에 추가해주었기 때문에, 프로젝트가 라이브러리에 의존하고 있습니다.
만일 cos.jar, gson.jar가 없다면 컴파일 오류가 나기 때문이죠.
pom.xml에 필요한 라이브러리를 정해진 형식에 맞춰 작성 후 저장하면, 적힌 내용을 바탕으로 인터넷 상에 사용할 법한 모든 jar를 가진 maven 저장소 (maven repository)에 가서 찾아 local repository에 다운로드 시켜줍니다.
그 후, project에서 사용할 수 있게 연결해줍니다.
(내부적으로 의존관계를 가진 것까지 다운로드 받아주기 때문에 의존성 관리 수월)
Maven Project 생성
Next - Archetype 선택 - Next
Group Id - 여러 프로젝트를 묶을 때 사용
Artifact Id - 실제 프로젝트 이름
Package - 패키지
설정 후 Finish
pom.xml
<groupId>com.ce</groupId>
<artifactId>hello-maven2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
packaging의 war는 tomcat에 배포 (deploy to tomcat) / jar는 실행가능한 파일이므로 그 자체로 실행 (runnable jar)
<dependecies>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
의존 - <dependecy> 하나하나가 jar를 의미!
(기본적으로 junit을 의존하며 testing 프레임워크)
<build>
<build>
<finalName>hello-maven2</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
여러 플러그인이 기본적으로 존재
환경설정
pom.xml - <properties>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
버전을 11로 잡아주었습니다.
properties - Java Build Path - Libraries
Server Runtime 추가 (Add Library) - 상황에 따라 필요 없음!
JRE 버전을 잡아주었습니다. (Edit)
properties - Project Facets
Dynamic Web Module 버전을 4.0, Java 버전을 11로 잡아준 후 Apply and Close해줍니다.
web.xml
기존 사용하는 4.0 버전과 맞지 않아 설정해주었습니다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>hello-maven2</display-name>
</web-app>
구조 확인하기
test 폴더 : 프로젝트의 test 클래스들을 모으는 곳 (잘 작동하는 지 테스트 케이스를 모음)
target 폴더 하위에 classes, test-classes가 존재하는 것을 확인할 수 있는데, src/main에서 컴파일된 파일은 classes에 저장되며, src/test에서 컴파일된 파일은 test-classes에 저장됩니다.
(maven이 컴파일하는 주체이므로 maven이 저장한 경로에서 관리됨)
index.jsp
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h2>Hello World!</h2>
</body>
</html>
기본적인 구조만 갖고 있으므로, page contentType와 doctype, head 태그를 추가해주었습니다.
※ pageEncoding="ISO-8859-1" 는 256개의 아스키코드를 인코딩화한 것)
서버를 생성한 후, 페이지에 접근해보기
'Java > └ Maven' 카테고리의 다른 글
Maven) Maven 사용해보기 (0) | 2022.08.02 |
---|