심심한잉여의 잡동사니

[Maven&Gradle]메이븐(Maven)과 그래들(Gradle) 본문

코딩일기/Spring&SpringBoot

[Maven&Gradle]메이븐(Maven)과 그래들(Gradle)

심심한잉여 2022. 3. 27. 11:28
반응형

메이븐(Maven)이란?
자바용 프로젝트 관리 도구이다.
아파치 앤트의 대안으로 만들어 졌으며, 아파치 라이센스로 배포되는 라이브러리를 관리해주는 오픈 소스이다.

특징은 네트워크를 통해 라이브러리를 관리해주기 때문에 과거에 일일히 수동으로 다 업데이트 혹은 연결 시켜주던 것을 자동으로 해주는 것이다.

<?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.6.4</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.kh</groupId>
	<artifactId>Basic</artifactId>
	<version>0.1</version>
	<name>Basic</name>
	<description>Test</description>
	<properties>
		<java.version>11</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-validation</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</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>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

그래들(Gradle)이란?
Groovy라는 언어를 기반으로 만들어진 빌드 도구.
Groovy란 JAVA가상 머신에서 실행되는 스크립트 언어이다.
JAVA와 마찬가지로 소스 코드를 작성하고 JVM에서 작동하지만 JAVA와 달리 컴파일을 할 필요가 없다.
따라서 Groovy를 JAVA의 방언이라고 부르는 사람도 있다.
이러한 Groovy를 사용하는 것이 그래들(Gradle)이다.
메이븐은 XML을 사용하여 복잡한 내용으로 접어들면 사용을 어려워하는 개발자들이 많았으나
그래들은 Groovy(자바의 방언)을 사용하기 때문에 개발자들이 보다 쉽게 사용이 가능하다고 말하는 사람들이 많다.

plugins {
	id 'org.springframework.boot' version '2.6.5'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

group = 'com.test'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
	useJUnitPlatform()
}

메이븐(Maven) vs 그래들(Gradle)

메이븐은 프로젝트가 커질수록 내용이 길어지고 가독성이 떨어진다.
그래들은 훨씬 적은 양의 스크립트로 짧고 간결하게 작성이 가능하다.

소규모 프로젝트에서는 큰 차이가 없지만 규모가 커질수록 그래들(Gradle)을 사용하는 것이 더욱 유리하다.
그 이유는 따로 컴파일하지 않기 때문이다.
Groovy를 따로 익혀 사용해야하는 것이 단점이라면 단점이지만 최근 그래들로 많이 넘어가고 있는 추세라고 한다.

 

반응형