티스토리 뷰

Language/Java

Maven 환경설정

Seogineer 2020. 12. 21. 18:56

Maven

  • 자바용 프로젝트 관리 도구. 이 외에 Ant, Gradle이 있음.
  • 설정 파일에서 의존성 라이브러리를 관리함으로써 직접 다운로드하지 않아도 라이브러리를 사용할 수 있다.
  • 이클립스에 내장된 Maven을 이용해 프로젝트를 생성할 수 있다.

 

파일구조

project home
    ㄴsrc
        ㄴmain
            ㄴjava : 자바 패키지 폴더와 소스 코드가 위치함.
            ㄴresources : *.properties, *.xml 등 설정파일들이 위치함.
            ㄴwebapp : WEB-INF와 웹 관련 리소스(html, jsp)들이 위치함.
        ㄴtest
            ㄴjava : 테스트와 관련된 자바 패키지와 소스코드가 위치함.
            ㄴresources : 테스트와 관련된 설정파일이 위치함.
    ㄴtarget : 컴파일, 패키징된 결과물이 위치함.
    ㄴpom.xml : Maven 설정 파일

 

기본 pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>kr.or.connect</groupId>
  <artifactId>mavenweb</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>mavenweb Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <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>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>mavenweb</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>
</project>

 

태그

  • project : pom.xml 파일의 최상위 루트 엘리먼트
  • modelVersion : POM model의 버전
  • groupId : 프로젝트를 생성하는 조직의 고유 아이디. 일반적으로 도메인 이름을 거꾸로 적는다.
  • artifactId : 해당 프로젝트에 의하여 생성되는 artifact의 고유 아이디를 결정함. Maven을 이용하여 pom.xml을 빌드할 경우 artifactid-version.packaging 의 규칙으로 생성됨. ex)mavenweb-0.0.1-SNAPSHOT.war
  • packaging : 해당 프로젝트를 어떤 형태로 packagin 할 것인지 결정함. ex)jar, war, ear
  • version : 프로젝트의 현재 버전
  • name : 프로젝트 이름
  • url : 프로젝트 사이트 URL

 

scope 태그

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>provided</scope>
</dependency>
  • compile : 컴파일할 때 필요. 테스트 및 런타임에도 클래스 패스에 포함된다. scope을 설정하지 않을 경우 기본값.
  • runtime : 컴파일 시에는 필요하지 않지만, 실행 시에 필요한 경우. ex) JDBC
  • provided : 컴파일 시에 필요하지만, 실제 런타임 때에는 컨테이너 같은 것에서 제공되는 모듈. 배포 시 제외됨. ex) servlet, jsp api
  • test : 컴파일 시에 필요. 테스트 시 클래스 패스에 포함되며, 배포 시 제외됨.

 

maven repository

https://mvnrepository.com/
위 링크에서 의존성 라이브러리를 가져올 수 있다.

 

참조

 

웹 프로그래밍(풀스택)

부스트코스 무료 강의

www.boostcourse.org

 

웹 프로그래밍(풀스택)

부스트코스 무료 강의

www.boostcourse.org

 

아파치 메이븐

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

 

'Language > Java' 카테고리의 다른 글

try - with - resources 문을 이용한 예외 처리  (0) 2020.12.21
JDBC 설정  (0) 2020.12.21
redirect와 forward  (0) 2020.12.19
JSP(JavaServer Pages)  (0) 2020.12.17
Servlet 생명주기  (0) 2020.12.09
댓글
Total
Today
Yesterday
링크
Apple 2023 맥북 프로 14 M3, 스페이스 그레이, M3 8코어, 10코어 GPU, 512GB, 8GB, 한글