Spring Boot와 빌드 도구가 각각 존재하는 이유가 무엇일까?
빌드 도구를 사용하지 않고 빌드하려면 라이브러리를 다운 받고 컴파일하고 테스트하고 실행파일로 만들고 여러가지 일을 수동으로 해야한다고 합니다. 그래서 프로젝트를 빌드하기 까지의 일련의 과정을 자동화 해주는 도구를 사용하는 것입니다.
그리고 빌드 도구와 프레임워크는 서로 다른 책임과 목적을 가지기 때문입니다. 개발자는 Spring Boot를 사용하여 개발을 진행하고, 빌드 도구는 이를 더욱 효율적으로 빌드하고 관리하는 역할을 담당합니다. 이러한 역할 분담으로 인해 개발과 배포를 더욱 효율적으로 수행할 수 있게 됩니다.
gradle의 역할
1. 빌드 자동화
Gradle은 빌드를 자동화하여 개발자가 수동으로 반복적인 빌드 작업을 수행할 필요 없이 더 빠르고 효율적으로 개발할 수 있도록 합니다. 개발자는 빌드 스크립트를 작성하여 프로젝트를 빌드하는 방법을 지정하고, Gradle은 이 스크립트에 따라 빌드를 자동으로 수행합니다.
2. 의존성 관리
Gradle은 프로젝트가 필요로 하는 외부 라이브러리나 모듈들의 의존성을 관리합니다. 라이브러리들의 버전 관리와 필요한 라이브러리들의 자동 다운로드를 지원하여 개발자가 프로젝트 의존성을 관리하는 데 도움을 줍니다.
3. 멀티 프로젝트 지원
Gradle은 여러 개의 서브 프로젝트로 구성된 멀티 프로젝트 빌드를 지원합니다. 이를 통해 큰 규모의 프로젝트를 여러 개의 작은 모듈로 나누어 개발과 관리를 용이하게 할 수 있습니다.
4. 플러그인 지원
Gradle은 다양한 플러그인을 제공하거나 외부 플러그인을 사용하여 빌드 환경을 확장할 수 있습니다. 플러그인은 추가 기능이나 태스크를 제공하여 빌드 스크립트를 더욱 강력하게 만들어줍니다.
5. 다양한 언어 지원
Gradle은 Java뿐만 아니라 Kotlin, Groovy 등 다양한 언어를 사용하여 빌드 스크립트를 작성할 수 있습니다. 특히 Kotlin을 사용하면 더욱 간결하고 가독성이 높은 빌드 스크립트를 작성할 수 있습니다.
6. 유연성
Gradle은 개발자가 빌드 스크립트를 통해 빌드 과정을 세밀하게 제어할 수 있도록 유연성을 제공합니다. 또한 커스텀 태스크를 작성하여 빌드 스크립트를 확장할 수 있습니다.
gradle로 spring boot 프로젝트 생성 시 생기는 파일들
1. build.gradle
Gradle 빌드 스크립트 파일로서, 프로젝트의 빌드 및 의존성 관리를 정의합니다. 이 파일에서는 프로젝트의 플러그인, 의존성, 컴파일 옵션, 리소스 처리 등 빌드에 필요한 모든 구성을 정의합니다. 프로젝트의 주요 설정과 빌드 로직은 여기에 작성됩니다.
2. gradle.properties
Gradle 프로퍼티를 정의하는 파일입니다. 여기에는 빌드에 사용되는 환경 변수, 시스템 프로퍼티, 그리고 사용자 정의 프로퍼티 등이 포함될 수 있습니다.
3. settings.gradle
멀티 프로젝트 빌드에서 사용되며, 루트 프로젝트와 하위 프로젝트의 구성 정보를 정의합니다. 여러 개의 서브 프로젝트가 있는 경우 각 프로젝트 디렉토리와 이름이 여기에 명시됩니다.
4. gradlew, gradlew.bat, gradle/
이 세 가지 파일과 폴더는 Gradle Wrapper를 사용하는 경우에 생성됩니다. Gradle Wrapper는 프로젝트에 Gradle을 내장시켜 빌드 시스템을 설치하지 않고도 Gradle을 실행할 수 있게 해줍니다. gradlew는 Unix 계열 시스템용 실행 스크립트이고, gradlew.bat는 Windows용 실행 스크립트입니다. gradle/ 폴더에는 Gradle Wrapper에 필요한 파일들이 위치합니다.
5. build/
Gradle 빌드 결과물이 생성되는 디렉토리입니다. 여기에는 컴파일된 클래스 파일, 리소스 파일, JAR 파일, WAR 파일 등이 포함됩니다. 또한 빌드 중 생성되는 임시 파일들도 여기에 저장됩니다.
'spring' 카테고리의 다른 글
동시에 재고 감소 요청이 들어왔을 때의 문제와 해결 방법 (0) | 2023.08.24 |
---|---|
nestjs 맛보기 그리고 spring boot (0) | 2023.08.08 |
github action + s3 + code deploy + docker + nginx 사용해서 배포하기 (0) | 2023.07.30 |
예외처리를 구조적이고 한 눈에 파악할 수 있게끔 커스텀 (0) | 2023.07.29 |