티스토리 뷰

JAVA/JAVA

[JAVA] Maven 프로젝트

stdbc 2019. 10. 9. 00:24

Maven

1. Maven이란?

자바 프로젝트의 war 또는 jar 파일을 빌드(build), 라이브러리 의존성(dependency) 해결, 컴파일(compile), 배포 (deploy) 등을 자동화해주는 빌드 툴

즉, 자바 소스를 compile하고 package해서 deploy하는 일을 자동화해주는 것이다.

 

https://victorydntmd.tistory.com/159


2. Maven 프로젝트 디렉토리 구조

https://www.edwith.org/boostcourse-web/lecture/16724/


3. pom.xml

Maven 프로젝트에서 필요한 모듈(스프링 기능)을 가져오기 위한 설정파일

POM(Project Object Model)을 설정하는 부분

필요한 라이브러리만 다운로드해서 사용할 수 있게 해준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<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>
    <properties>
        <spring.version>4.3.5.RELEASE</spring.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
cs
 
  • line 1 project: pom.xml 파일의 최상위 루트 엘리먼트(Root Element)
  • lint 4 modelVersion: POM model 버전
  • line 5 groupId: 프로젝트를 생성하는 조직의 고유 이름. 일반적으로 도메인 이름을 거꾸로 적는다.
  • line 6 artifactId: 해당 프로젝트에서 생성되는 artifact의 고유 이름
  • line 7 packaging: jar, war, ear, pom 등 해당 프로젝트의 패키징 유형
  • line 8 version: 프로젝트의 버전. 접미사로 SNAPSHOT이 붙으면 프로젝트가 아직 개발 중이라는 의미. Maven의 버전 관리 기능은 라이브러리 관리를 편하게 해준다.
  • Maven을 이용하여 pom.xml을 빌드할 경우, artifactId-version.packaging의 규칙으로 artifact가 생성된다 (examples-1.0-SNAPSHOT.jar)
  • line 9 name: 프로젝트의 이름
  • line 10 url: 프로젝트 사이트
  • line 11 properties: pom.xml에서 중복으로 사용되는 설정(상수) 값들을 지정해놓는 부분. 다른 위치에서 ${...}로 표기해서 사용할 수 있다. 
  • line 14 dependencies: Dependency Management 기능의 핵심. 하위에 필요한 라이브러리를 지정한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  <build>
        <fileName></fileName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
cs
  • JDK 1.8 버전 사용하기 위한 플러그인 추가

[Java] Java설치 및 환경변수 설정 (JDK 설치 방법)


4. dependency

의존성 라이브러리 정보를 적을 수 있다.

A라는 라이브러리를 사용하는데 B, C, D가 의존성을 가진다면 A를 dependency에 추가하면 자동으로 필요한 B,C,D도 가져온다.

<groupId>, <artifactId>, <version>: 필수

<scope>: 해당 라이브러리가 언제 필요한지, 언제 제외되는지를 나타내는 것

  • compile : scope를 설정하지 않는 경우 기본값. 모든 상황에서 포함된다. 컴파일, 테스트, 런타임 시 classpath에 등록된다. 
  • provided : 컴파일, 테스트 시에는 필요하지만 런타임 시에는 필요하지 않다. 실제 런타임 때에는 JDK 또는 컨테이너에서 해당 라이브러리를 제공한다. 배포 시 제외 ex) tomcat에서 기본으로 servlet api를 제공하기 때문에 servlet api를 provided로 기재
  • runtime : 컴파일 시에는 필요하지 않지만, 런타임 시에 필요. 런타임, 테스트 시 classpath에 추가되지만 컴파일 시에는 추가되지 않음 ex) JDBC 드라이버
  • test : 테스트 시에만 필요. 테스트 시 classpath에 포함되며, 배포 시 제외된다. ex) JUnit
  • system : provided와 유사. Repository에서 검색을 하지 않고 명시된 path에서 Jar를 이용한다.
  • import : Maven 2.0.9 이후에서 사용. 다른 POM 설정 파일에 정의되어 있는 의존 관계 설정을 현재 프로젝트로 가져온다. <dependencyManagement>에서만 사용 가능

https://javafactory.tistory.com/1486

https://wikidocs.net/18344

https://jeong-pro.tistory.com/168


주로 사용하는 의존성 라이브러리

 

#Servlet

#mysql

Spring - #WebMvc

Spring - #JDBC

Spring - #Transaction
#DataSource

#Jackson

'JAVA > JAVA' 카테고리의 다른 글

[JAVA] Null Object Pattern  (0) 2019.10.11
[JAVA] SQL / JDBC  (0) 2019.10.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함