본문 바로가기
web/SpringBoot

Maven VS Gradle

by 뽀리님 2023. 9. 7.

회사에서 신규로 프로젝트 진행중인데 수행사에서 개발스펙을 아래와같이 들고왔다.

Java 17(OpenJDK)

API : Spring boot 3.1.0(Maven 기반)
프론트사이트 : vue.js 3.x + nuxt.js
관리자사이트 : vue.js (bootstrap style)

Mysql Ver 8.X

 

순간 두눈을 의심했다. Maven...????? 메 이 븐?  ( 참고로 우리는 Gradle 로 진행해달라고 사전에 미리 요청한 상태 )

그리고 프론트사이트는 Nuxt로 하면서 관리자는 또 왜 아니야? 뭐 따로 가는겨?

stateless 하게 가달랬더니 maven 을 들고 온 게 좀 불안하다. (아 설마 JSP 쓰는거아니겠지^^)

 

그래도 이유가 있을까?.....싶어 Maven 의 장단점을 찾아보았다.

 

참조 https://min-0.tistory.com/entry/%EB%B9%8C%EB%93%9C%EB%8F%84%EA%B5%ACBuild-Tools%EB%9E%80-Maven-Gradle-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%9E%A5%EB%8B%A8%EC%A0%90spring-build-tools

 

???

음......... 딱히... 메리트있는 장점이 아닌거같은데?????.....

 

일단 같은 개발환경을 세팅한다는 가정하에 maven 과 gradle 세팅 소스를 보자

 

 

1. 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 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>3.1.0</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>17</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>

 

 

2. Gradle -> build.gradle

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.1.0'
    id 'io.spring.dependency-management' version '1.1.0'
}

group = 'com.enm'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

repositories {
    mavenCentral()
}

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

test {
    useJUnitPlatform()
}

 

바보가 아니라면 이것만 봐도 왜 Gradle을 쓰는지 알 수 있을꺼같다.

 

요즘 레거시 시스템이 아닌이상 maven은 잘 안쓰는 추세기도 하다.

새로 등장한 Gradle 이 빌드 속도도 빠르고, 의존성 설정등 유지보수 측면에서도 뛰어나기에 안 쓸 이유가 없기 때문이다.

 

 

참고&nbsp;https://binco.tistory.com/entry/Maven-VS-Gradle

 

 

 

기존시스템도 아니고 신규 시스템 구축하는데 왠 Maven? ㅋㅋㅋㅋㅋㅋㅋㅋ 

이상한 수행사다. 

(왠지 프로젝트 진행하면서 화나는 포인트가 많아질꺼 같아 걱정이다.)

 

 

참고 :

https://dev-coco.tistory.com/65

https://binco.tistory.com/entry/Maven-VS-Gradle

 

'web > SpringBoot' 카테고리의 다른 글

HttpOnly + Secure Cookies 생성  (0) 2023.09.12
HTTPS(SSL) 적용  (0) 2023.09.11
ErrorContoller 오류처리  (0) 2023.09.06
Global Exception 처리  (0) 2023.09.06
DataJpaTest 중 삽질해결 기록....  (0) 2023.08.31