티스토리 뷰
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://jeong-pro.tistory.com/168
주로 사용하는 의존성 라이브러리
Spring - #WebMvc
Spring - #JDBC
Spring - #Transaction
#DataSource
'JAVA > JAVA' 카테고리의 다른 글
[JAVA] Null Object Pattern (0) | 2019.10.11 |
---|---|
[JAVA] SQL / JDBC (0) | 2019.10.09 |