1주차 미션을 IntelliJ 에서 Gradle 을 사용하여 진행하고, 프로그램 요구 사항에도 build.gradle 은 변경하지 말라는 내용이 있기에 gradle 에 대해 알고 넘어가고자한다.
개념
- Gradle은 오픈 소스 빌드 자동화 도구로서, 소프트웨어 프로젝트의 빌드, 테스트, 배포 및 관리를 위한 강력한 플랫폼입니다. Gradle은 Groovy 또는 Kotlin을 사용하여 프로젝트의 빌드 스크립트를 작성할 수 있으며, 이러한 스크립트를 사용하여 프로젝트를 자동화하고 다양한 작업을 수행할 수 있습니다. JUnit 및 TestNG와 같은 테스트 프레임워크와 통합할 수 있습니다.
주요 특징 및 역할
- 빌드 자동화: Gradle은 프로젝트를 빌드하는 모든 과정을 자동화하는 데 사용됩니다. 이를 통해 빌드, 컴파일, 패키징, 테스트, 문서 생성 및 배포와 같은 작업을 자동으로 수행할 수 있습니다.
.- 선언적 빌드 스크립트: Gradle은 Groovy 또는 Kotlin과 같은 DSL(Domain Specific Language)을 사용하여 빌드 스크립트를 작성합니다. 이러한 스크립트는 프로젝트의 빌드 구성, 종속성 및 작업 흐름을 선언적으로 정의합니다.
.- 플러그인 지원: Gradle은 다양한 플러그인을 지원하며, 이러한 플러그인을 사용하여 특정 작업을 수행하거나 프로젝트를 확장할 수 있습니다. 예를 들어, Java 프로젝트의 경우 java 플러그인을 사용하여 Java 컴파일 및 테스트를 지원할 수 있습니다.
.- 멀티 프로젝트 빌드: Gradle은 여러 하위 프로젝트를 포함하는 멀티 프로젝트 구조를 지원합니다. 이를 통해 대규모 프로젝트를 모듈화하고 관리할 수 있습니다.
.- 종속성 관리: Gradle은 프로젝트의 종속성을 정의하고 관리하는 기능을 제공합니다. 이를 통해 외부 라이브러리 및 모듈을 쉽게 사용하고 관리할 수 있습니다.
.- 유연성과 확장성: Gradle은 매우 유연하며 다양한 프로젝트 유형과 환경에 적응할 수 있습니다. 또한 사용자 정의 작업 및 플러그인을 작성하여 빌드 프로세스를 확장할 수 있습니다.
개념
- 오픈 소스 빌드 자동화 도구는 소프트웨어 개발 프로젝트에서 소스 코드를 컴파일하고, 테스트하고, 패키징하며, 배포하는 작업을 자동화하기 위해 사용되는 도구입니다.
종류
1. Gradle: Gradle은 Groovy 또는 Kotlin 스크립트 언어를 사용하여 프로젝트 빌드를 구성하고 관리하는 데 사용되는 강력한 빌드 도구입니다. Gradle은 많은 언어와 프레임워크에 대한 플러그인을 지원하며, JUnit 및 TestNG와 같은 테스트 프레임워크와 통합할 수 있습니다.
2. Apache Maven: Apache Maven은 XML 기반의 프로젝트 관리 및 빌드 도구로, 프로젝트 객체 모델(POM)을 사용하여 프로젝트를 구성합니다. Maven은 중앙 저장소를 통해 종속성을 관리하며, 프로젝트 라이프사이클을 정의하고 빌드 과정을 자동화합니다.
3. Ant: Apache Ant는 XML 기반의 빌드 스크립트 언어를 사용하여 빌드 작업을 정의하는 데 사용됩니다. Ant는 자바 프로젝트와 더불어 다양한 프로젝트 유형을 지원하며, 사용자 지정 태스크를 작성할 수 있는 유연성을 제공합니다.
4. CMake: CMake는 C, C++, 및 다른 언어로 작성된 프로젝트를 빌드하기 위한 크로스 플랫폼 빌드 시스템입니다. CMakeLists.txt 파일을 사용하여 프로젝트를 구성하고 빌드 스크립트를 생성합니다.
5. SBT (Scala Build Tool): SBT는 스칼라 프로젝트를 빌드하기 위한 도구로, 스칼라 언어로 작성된 프로젝트와 그 밖의 Java 프로젝트를 지원합니다.
- build.gradle 파일은 Gradle 빌드 도구를 사용하여 Java, Kotlin, Groovy 및 다른 프로그래밍 언어로 작성된 프로젝트의 설정 및 빌드 스크립트를 정의하는 파일입니다. Gradle은 프로젝트의 빌드 프로세스를 자동화하고 관리하기 위해 사용되며, build.gradle 파일은 이러한 설정 및 작업을 지정하는 데 사용됩니다.
주요 역할
- 프로젝트 설정: build.gradle 파일은 프로젝트의 기본 설정을 정의합니다. 이 설정에는 프로젝트 이름, 그룹 ID, 버전 등이 포함됩니다. 이 정보는 프로젝트를 식별하고 라이브러리를 사용하거나 배포할 때 유용합니다.
.- 종속성 관리: 프로젝트가 다른 라이브러리, 모듈 또는 프로젝트에 의존하는 경우, build.gradle 파일에서 이러한 종속성을 선언하고 관리합니다. Gradle은 종속 라이브러리를 자동으로 다운로드하고 프로젝트의 클래스패스에 추가합니다.
.- 빌드 작업 정의: build.gradle 파일에서는 프로젝트 빌드에 필요한 작업을 정의합니다. 이 작업에는 컴파일, 테스트, 패키징, 배포 등이 포함됩니다. 빌드 스크립트를 통해 이러한 작업의 순서와 설정을 지정할 수 있습니다.
.- 플러그인 설정: Gradle 플러그인은 특정 작업 또는 확장 기능을 제공하는 데 사용됩니다. build.gradle 파일에서 플러그인을 활성화하고 구성할 수 있으며, 이를 통해 프로젝트의 빌드 프로세스를 확장하고 사용자 정의할 수 있습니다.
.- 빌드 환경 설정: build.gradle 파일을 사용하여 빌드 환경을 설정하고, 컴파일러 옵션, 테스트 설정 및 다양한 빌드 옵션을 지정할 수 있습니다.
.
- build.gradle 파일은 Gradle 빌드 도구를 사용하여 프로젝트를 구성하고 관리하는 핵심 구성 파일입니다. 이 파일을 작성하여 프로젝트의 빌드 프로세스를 정의하고, 필요한 작업을 자동화하며, 종속성을 관리할 수 있습니다.
plugins {
id 'java'
}
group 'woowacourse-projects'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.woowacourse-projects:mission-utils:1.1.0'
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
test {
useJUnitPlatform()
}
위 build.gradle 설명
1. plugins: 이 섹션에서는 사용할 플러그인을 정의합니다. 여기서는 java 플러그인을 사용하고 있으며, 이 플러그인은 Java 프로젝트를 관리하고 Java 빌드를 설정하는 데 필요합니다.
2. group 및 version: 프로젝트의 그룹 ID와 버전을 정의합니다. 이 정보는 프로젝트를 식별하고, 라이브러리를 사용하거나 배포할 때 유용합니다.
3. repositories: 이 섹션에서는 프로젝트에서 사용할 저장소를 설정합니다. 여기서는 Maven 중앙 저장소 (mavenCentral())와 JitPack 저장소를 사용하고 있습니다. 저장소는 종속성을 해결할 때 사용됩니다.
4. dependencies: 이 섹션에서는 프로젝트가 의존하는 라이브러리를 정의합니다. 여기서는 JitPack 저장소에서 com.github.woowacourse-projects:mission-utils:1.1.0 라이브러리를 사용하고 있습니다. 이 라이브러리는 프로젝트의 컴파일 경로에 추가됩니다.
5. java: Java 관련 설정을 정의하는 섹션입니다. 여기에서는 Java 버전을 17로 설정하고 있습니다.
6. test: 테스트 관련 설정을 정의하는 섹션입니다. JUnit 5 플랫폼을 사용하여 테스트를 실행하도록 설정되어 있습니다.
- JUnit 5 플랫폼(JUnit Platform)은 JUnit 5 프레임워크의 핵심 구성 요소 중 하나로, 다양한 테스트 엔진과 테스트 러너를 지원하며 테스트 실행과 테스트 결과 보고를 관리합니다. JUnit 5 플랫폼은 이전 버전인 JUnit 4와 비교하여 확장성과 유연성이 향상되었으며, 다양한 프로그래밍 언어와 테스트 프레임워크와 통합할 수 있도록 설계되었습니다.
참고 : ChatGPT