프로젝트를 진행하면서 사용되는 수많은 라이브러리들을 관리해주는 도구이다.
여기서 메이븐의 특징적인 점은 그 라이브러리들과 연관된 라이브러리들까지 거미줄 처럼 모두 연동되서 관리가 된다는 점이다.
즉, 메이븐은 네트워크를 통해 연관된 라이브러리까지 같이 업데이트를 해주기 때문에 사용이 편리
Maven의 기능을 이용하기 위해 POM이 사용된다.
POM은 약자 이름 그대로 Project Object Model의 정보를 담고 있는 파일이다.
pom.xml에서 주요하게 다루는 기능들은 아래와 같다.
Groovy?
Java 가상 머신에서 실행되는 스크립트 언어이다.
Java 가상 머신에서 동작하지만, Java와는 달리 소스 코드를 컴파일 할 필요는 없다.
스크립트 언어이고 소스 코드를 그대로 실행한다.
기존 메이븐의 경우 XML로 라이브러리를 정의하고 활용하도록 되어 있으나,
Gradle의 경우 별도의 빌드 스크립트를 통하여 사용할 어플리케이션 버전, 라이브러리 등의 항목을 설정할 수 있다.
Groovy 스크립트 언어로 구성되어 있기에 XML과 달리 변수선어느 if, else, for 등의 로직이 구현가능하며 간결하게 구성 가능하다.
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.2</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example2</groupId> <artifactId>demo-maven</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo-maven</name> <description>Demo project for Spring Boot</description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
plugins { id 'org.springframework.boot' version '2.5.2' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter' testImplementation 'org.springframework.boot:spring-boot-starter-test' } test { useJUnitPlatform() }