맨위로가기

Gradle

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Gradle은 컴파일, 검증, 의존성 해결, 테스트 실행, 소스 코드 생성, 패키징 및 게시 등 빌드 프로세스의 모든 단계를 지원하는 오픈 소스 빌드 자동화 시스템이다. 아파치 Groovy의 "G"를 따서 이름이 붙여졌으며, 관례 우선 방식을 통해 짧은 설정 파일로 빌드 단계를 설명할 수 있다. 플러그인을 사용하여 설정 및 태스크를 통합할 수 있으며, 안드로이드 스튜디오와 같은 제품에 번들로 포함되어 배포된다. Gradle은 Ant와 통합되어 Ant 빌드 파일을 스크립트로 사용할 수 있다.

더 읽어볼만한 페이지

  • 컴파일 도구 - Libtool
    Libtool은 다양한 유닉스 계열 운영 체제에서 정적 및 동적 라이브러리 생성을 관리하고, 운영 체제별 차이로 인한 소프트웨어 이식 문제를 해결하기 위해 GNU 빌드 시스템에서 사용되는 도구이다.
  • 컴파일 도구 - GNU 빌드 시스템
    GNU 빌드 시스템은 Autoconf, Automake, Libtool 등의 오토툴과 GNU make 등으로 구성되어 다양한 UNIX 시스템에서 소프트웨어 빌드 및 설치를 지원하지만, 복잡성과 이식성에 대한 비판도 존재한다.
  • 자바 개발 도구 - GNU 컴파일러 모음
    GNU 컴파일러 모음(GCC)은 리처드 스톨먼이 1987년 처음 출시한 자유 소프트웨어 컴파일러 시스템으로, C, C++, Fortran, Ada, Go 등 다양한 프로그래밍 언어를 지원하며 여러 명령어 집합 아키텍처와 플랫폼에서 널리 사용된다.
  • 자바 개발 도구 - J 샤프
    J#은 마이크로소프트에서 개발한 .NET Framework 기반의 프로그래밍 언어로, 자바와 유사한 문법을 가지며 기존 자바 코드의 .NET 플랫폼 이전 및 .NET 언어와의 상호 운용성을 지원했으나 현재는 개발이 중단되었다.
  • 빌드 자동화 - GNU 빌드 시스템
    GNU 빌드 시스템은 Autoconf, Automake, Libtool 등의 오토툴과 GNU make 등으로 구성되어 다양한 UNIX 시스템에서 소프트웨어 빌드 및 설치를 지원하지만, 복잡성과 이식성에 대한 비판도 존재한다.
  • 빌드 자동화 - MSBuild
    MSBuild는 마이크로소프트에서 개발한 빌드 자동화 도구로서, 프로젝트 파일에 기술된 대상을 실행하여 빌드 과정을 자동화하며, Team Foundation 빌드와 연동하여 팀 빌드 환경을 구성하는 데 사용된다.
Gradle - [IT 관련 정보]에 관한 문서
기본 정보
이름Gradle
종류빌드 자동화 도구
라이선스아파치 라이선스 2.0
웹사이트Gradle 공식 웹사이트
개발
개발자Hans Dockter, Adam Murdoch, Szczepan Faber, Peter Niederwieser, Luke Daley, Rene Gröschke, Daz DeBoer, Steve Appling
최초 릴리스2007년
안정화 버전8.6
안정화 버전 출시일2024년 2월 2일
프로그래밍 언어Java, Groovy, Kotlin

2. 역사

Gradle은 2008년에 처음 출시되었으며, 2012년에 1.0 버전이 나왔다. 이후 지속적으로 발전하여 2023년에는 8.0 버전까지 출시되었다.[6][7]

2. 1. 이름의 유래

창립자이자 CEO인 한스 독터(Hans Dockter)는 원래 프로젝트 이름을 "Cradle"로 하려 했다고 말했다. 하지만 이름을 더 독창적이고 덜 "축소적인" 느낌으로 만들기 위해, Groovy의 "G"를 따서 "Gradle"이라는 이름을 선택했다.[5]

2. 2. 주요 버전

주요 버전
버전날짜
0.12008년 4월 21일[6]
1.02012년 6월 12일[7]
2.02014년 7월 1일
3.02016년 8월 15일
4.02017년 6월 14일
5.02018년 11월 26일
6.02019년 11월 8일
7.02021년 4월 9일
8.02023년 2월 13일


3. 특징

Gradle은 컴파일, 검증, 의존성 해결, 테스트 실행, 소스 코드 생성, 패키징 및 게시를 포함한 빌드 프로세스의 모든 단계를 지원한다.

Gradle은 관례 우선 접근 방식을 따르기 때문에 이러한 모든 빌드 단계를 짧은 설정 파일로 설명할 수 있다. 관례에는 프로젝트의 폴더 구조, 표준 태스크 및 해당 순서, 의존성 저장소가 포함된다. 그러나 필요한 경우 프로젝트 설정으로 모든 관례를 재정의할 수 있다.[8]

플러그인은 Gradle의 핵심 구성 요소이다. 플러그인을 사용하면 일련의 설정 및 태스크를 프로젝트에 통합할 수 있으며 중앙 플러그인 저장소 또는 단일 프로젝트용으로 사용자 지정 개발된 플러그인을 포함할 수 있다.

4. 배포

안드로이드 스튜디오와 같은 제품에는 Gradle이 번들로 포함되어 제공되지만, 별도로 다운로드받을 수도 있다. Gradle 래퍼는 Gradle을 호출하는 권장 방법이다. 필요한 경우 선언된 버전의 Gradle을 미리 다운로드할 수 있다.

5. 자바 프로젝트 예제

메이븐의 디렉터리 구조는 자바 소스와 리소스에 사용된다고 가정한다. 이 디렉터리들은 '''src/main/java''', '''src/main/resources''', '''src/test/java''', '''src/test/resources'''이다.

'''build.gradle''' 파일의 내용은 다음과 같다.



apply plugin: 'java'



'''gradle build'''를 실행하면 다음과 같이 출력된다.



> gradle build

:compileJava

:processResources

:classes

:jar

:assemble

:compileTestJava

:processTestResources

:testClasses

:test

:check

:build

BUILD SUCCESSFUL



Gradle은 컴파일, 검증, 의존성 해결, 테스트 실행, 소스 코드 생성, 패키징 및 게시를 포함한 빌드 프로세스의 모든 단계를 지원한다.[8] Gradle은 관례 우선 접근 방식을 따르기 때문에 이러한 모든 빌드 단계를 짧은 설정 파일로 설명할 수 있다.[8] 관례에는 프로젝트의 폴더 구조, 표준 태스크 및 해당 순서, 의존성 저장소가 포함된다.[8] 그러나 필요한 경우 프로젝트 설정으로 모든 관례를 재정의할 수 있다.[8]

Java 소스와 리소스에 Maven 디렉토리 구조가 사용되는 경우를 가정한다. Maven 디렉토리 구조는 각각 '''src/main/java''', '''src/main/resources''', '''src/test/java''', '''src/test/resources'''이다.

'''build.gradle''' 파일의 내용은 다음과 같다.

```groovy

plugins {

java

}

```

'''gradlew build'''를 실행하면 다음과 같이 출력된다.

```console

> gradlew build

:compileJava

:processResources

:classes

:jar

:assemble

:compileTestJava

:processTestResources

:testClasses

:test

:check

:build

BUILD SUCCESSFUL

```

Java 플러그인은 모든 작업의 입출력 간의 종속 관계의 방향 비순환 그래프 내 작업으로 예상되는 Maven 라이프사이클을 다수 에뮬레이트한다. 이 간단한 경우 '''build''' 작업은 '''check''' 작업과 '''assemble''' 작업에 종속되어 있으며, 마찬가지로 '''check''' 작업은 '''test''' 작업에, '''assemble''' 작업은 '''jar''' 작업에 종속되어 있다.

Maven의 관례를 따르지 않는 프로젝트를 위해 Gradle은 디렉토리 구조를 설정할 수 있다. 다음은 소스 파일이 Maven의 관례인 '''src/main/java'''가 아닌 '''src/java'''에 포함된 프로젝트를 지원하기 위한 예이다.

'''build.gradle'''

```groovy

apply plugin: 'java'

sourceSets.main.java.srcDirs = ['src/java']

6. Ant 마이그레이션 예제







```

`gradle ant.target`를 실행하면 다음과 같은 결과를 얻을 수 있다.

```console

> gradle ant.target

:ant.target

[ant:echo] Running ant.target!

BUILD SUCCESSFUL

참조

[1] 웹사이트 Gradle User Manual https://docs.gradle.[...] 2020-11-14
[2] 웹사이트 Getting Started With Gradle https://www.petrikai[...] 2016-03-26
[3] 웹사이트 What is Gradle? https://docs.gradle.[...]
[4] 웹사이트 Our Story https://gradle.com/o[...] 2021-10-15
[5] 웹사이트 Why is gradle called gradle? https://discuss.grad[...] 2011-12-20
[6] 웹사이트 Index of /gradle http://dist.codehaus[...] 2008-05-12
[7] 웹사이트 Gradle {{!}} Releases https://gradle.org/r[...] 2021-10-15
[8] 웹사이트 Building Java & JVM projects https://docs.gradle.[...] 2023-06-24
[9] 웹사이트 Gradle Wrapper Reference https://docs.gradle.[...] 2024-03-04
[10] 웹사이트 Releases https://gradle.org/r[...] Gradle.org 2024-02-25
[11] 웹사이트 Getting Started With Gradle http://www.petrikain[...] 2016-03-26
[12] 웹사이트 Introducing Incremental Build Support https://blog.gradle.[...] 2019-04-30
[13] 웹사이트 Getting Started · Building Java Projects with Gradle https://spring.io/gu[...] 2016-03-26



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com