그린컴퓨터아카데미 - Final Project
팀명 : 미정
주제 : 소개팅 사이트 (Heart Link)
팀장 : Eunsik
팀원 : Jaein, Ahtae, Jongsun
파이널 프로젝트를 시작하기에 앞서, 세미 프로젝트에서는 Maven을 사용했습니다. 그 이유는 스프링부트가 아닌 서블릿을 활용했기 때문입니다. 수업에서는 이클립스를 사용했지만, 현업에서는 인텔리제이를 자주 사용하므로 세미 프로젝트 이후에는 스프링프레임워크를 공부를 했지만 더 나아가 스프링부트를 사용하기로 했습니다.. 그래서 이번 프로젝트에서는 Maven 대신 Gradle을 사용하기로 결정했습니다. 설정 및 계획이 끝나기전에 Maven과 Gradle에 대해 공부를 진행해 정리를 해보겠습니다!
빌드 관리 도구(Build Tool) 란?
Maven 과 Gradle은 모두 빌드 관리 도구입니다.
빌드 관리 도구는 빌드와 관리도구로 나누어짐.
빌드란 ?
빌드(Build)는 소프트웨어 개발에서 소스 코드를 실행 가능한 프로그램으로 변환하는 과정을 말합니다.
이 과정에는 여러 단계가 포함될 수 있습니다.
메이븐 Maven 이란?
Maven은 Java기반의 프로젝트 관리 및 빌드 자동화 도구이며,
Ant의 대안으로 만들어짐.
• 메이븐의 중요 기능
프로젝트 빌드 관리
의존성 관리
다양한 플러그인 지원
표준화된 프로젝트 구조
빌드 라이프사이클
• 메이븐의 구성 요소
POM (Project Object Model)
리포지토리
플러그인
Maven의 주요 이점
자동화: 빌드와 의존성 관리를 자동으로 처리하여 개발자의 작업 부담을 줄입니다.
일관성: 표준화된 프로젝트 구조와 빌드 라이프사이클을 통해 일관된 개발 환경을 제공합니다.
의존성 해결: 중앙 리포지토리에서 라이브러리를 자동으로 다운로드하여 의존성 문제를 줄입니다.
Gradle 이란?
Gradle은 현대적인 빌드 자동화 도구로, 다양한 프로그래밍 언어와 플랫폼을 지원합니다. 주로 Java 프로젝트에서 사용되지만, Kotlin, Groovy, Scala, C/C++, Python 등 다양한 언어와 환경에서도 활용할 수 있습니다. Gradle은 빠르고 유연하며, 강력한 기능을 제공하여 복잡한 빌드 프로세스를 간소화하고 자동화하는 데 도움을 줍니다.
• Gradle 의 중요 기능
성능
유연한 빌드 스크립트
다양한 언어 및 플랫폼 지원
의존성 관리
플러그인 기반 아키텍처
멀티 프로젝트 빌드 지원
• Gradle 의 중요 구성 요소
빌드 스크립트
태스크
의존성
플러그인
Maven vs. Gradle 주요 차이점
1. 구성 방식
- Maven: XML 기반의 pom.xml 파일을 사용하여 프로젝트 설정을 정의합니다. XML 파일은 설정이 명확하지만 길어질 수 있습니다.
- Gradle: Groovy 또는 Kotlin DSL을 사용하는 build.gradle 파일을 통해 구성합니다. 코드 기반의 구성은 더 직관 적이고 읽기 쉽습니다.
2. 성능
- Maven: 전체 빌드가 필요할 때마다 모든 작업을 실행합니다.
- Gradle: 증분 빌드, 병렬 실행, 캐시 기능을 통해 빌드 속도를 크게 향상시킬 수 있습니다. 변경된 부분만 처리 하여 빌드 시간을 단축합니다.
3. 유연성
- Maven: 표준화된 빌드 프로세스를 제공하지만, 구성 변경이 어려울 수 있습니다.
- Gradle: 빌드 스크립트가 유연하여 복잡한 빌드 요구 사항을 처리할 수 있으며, 커스터마이징이 용이합니다.
4. 의존성 관리
- Maven: 중앙 저장소에서 의존성을 관리하며, XML 설정을 통해 의존성을 정의합니다.
- Gradle: Maven 중앙 저장소와 함께 다른 저장소를 지원하며, DSL을 통해
의존성 정의가 더 간결하고 유연합니다.
5. 플러그인 시스템
- Maven: 플러그인 시스템이 있지만, 설정이 상대적으로 제한적일 수 있습니다.
- Gradle: 플러그인 시스템이 강력하며, 다양한 서드파티 플러그인과 커스터마이징이 가능합니다.
6. 멀티 프로젝트 지원
- Maven: 멀티 모듈 프로젝트를 지원하지만 설정이 복잡할 수 있습니다.
- Gradle: 멀티 프로젝트 빌드를 지원하며, 구조와 의존성 관리를 쉽게 설정할 수 있습니다.
Maven과 Gradle의 차이점에 대해 정리하고 공부를 진행하였다!
좀더 공부를 진행해야겠다.
'Project > 국비-FinalProject' 카테고리의 다른 글
[Final Project] 회원가입/로그인 추가, 공지사항 페이지 구현 (0) | 2024.08.06 |
---|---|
[Final Project] 템플릿 선정 및 수정 / 회원가입,로그인 프론트 구현 (0) | 2024.07.31 |
[Final Project] 팀 프로젝트 협업 툴 / 팀원별 기능 (0) | 2024.07.30 |
[Final Project] 페르소나, Usecase Diagram, ERD (0) | 2024.07.24 |