본문 바로가기
Java/└ Maven

Maven) Maven이란?, 프로젝트 생성 및 환경설정

by 박채니 2022. 8. 2.

안녕하세요, 코린이의 코딩 학습기 채니 입니다.

 

개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.


Maven이란?

- 자바용 프로젝트 관리 도구

- POM (Project Object Model) XML 문서를 통해 해당 프로젝트의 버전 정보 및 라이브러리 정보들을 통합하여 관리하는 프레임워크

 

라이브러리 종속성

- 일반적인 프로젝트는 개발자가 필요한 라이브러리를 직접 찾아서 추가해야 함

- Maven을 사용하면 pom.xml 문서에 사용하고자 하는 라이브러리를 등록하여 자동으로 프로젝트에 추가되게 하여 관리의 편리성 제공

 

Maven 사용하지 않을 때

직접 다운로드 받아 프로젝트에 추가해주었기 때문에, 프로젝트가 라이브러리에 의존하고 있습니다.

만일 cos.jar, gson.jar가 없다면 컴파일 오류가 나기 때문이죠.

 

Maven 사용 시

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