소스 코드 컴파일, 패키징, 테스트 실행 등 일련의 작업을 통해 빌드 생성을 자동화하는 기술
주로 자바 프로젝트를 위한 JVM 기반 빌드 자동화 도구
Maven의 특징을 이어 받은 JVM 기반 빌드 자동화 도구
빌드 행동을 설정하기 위한 방식들 (높은 우선순위 순)
--build-cache
)gradle.properties
파일:systemProp.http.proxyHost=somehost.org
)org.gradle.caching=true
)GRADLE_OPTS
)성능을 향상시키기 위한 백그라운드 프로세스 기능
gradle --status
명령어로 데몬의 상태를 확인함반복적인 빌드 시 속도를 향상시키기 위한 캐싱 기능
--build-cache
인자 혹은 org.gradle.caching=true
설정으로 활성화함컴파일 등의 작업을 필요한 부분만 수행하는 기능
java
, java-library
, scala
, org.springframework.boot
implementation
, testImplementation
, runtimeOnly
main
과 test
.
├── a-subproject
│ └── build.gradle
├── settings.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
└── gradlew.bat
Gradle 빌드 스크립트 파일
build.gradle
파일들을 사용함Multi-project 빌드를 위한 설정 파일
include
구문으로 빌드에 포함할 프로젝트들을 선언함settings.gradle
파일을 사용함$ gradlew.bat build
Downloading https://services.gradle.org/distributions/gradle-5.0-all.zip
.....................................................................................
Unzipping C:\Documents and Settings\Claudia\.gradle\wrapper\dists\gradle-5.0-all\ac27o8rbd0ic8ih41or9l32mv\gradle-5.0-all.zip to C:\Documents and Settings\Claudia\.gradle\wrapper\dists\gradle-5.0-al\ac27o8rbd0ic8ih41or9l32mv
Set executable permissions for: C:\Documents and Settings\Claudia\.gradle\wrapper\dists\gradle-5.0-all\ac27o8rbd0ic8ih41or9l32mv\gradle-5.0\bin\gradle
BUILD SUCCESSFUL in 12s
1 actionable task: 1 executed
Gradle 설치 없이 프로젝트의 Gradle 작업을 수행할 수 있도록 하는 파일
gradlew
혹은 gradlew.bat
파일 실행build
, test
등의 Task: 특정 작업 실행--version
: Gradle Wrapper 버전 업데이트공통 작업 컨벤션을 제공하기 위한 기반 Plugin
clean
: 빌드 디렉토리 삭제check
: 테스트 등의 검증 작업 실행assemble
: 배포할 결과물 생성build
: check
와 assemble
실행Project에 Java 애플리케이션 빌드에 필요한 기능을 추가하는 Plugin
main
: 프로젝트의 프로덕션 코드를 위한 Source settest
: 프로젝트의 테스트 코드를 위한 Source setsrc/main/java
: 프로덕션 Java 소스src/main/resources
: 프로덕션 리소스src/test/java
: 테스트 Java 소스src/test/resources
: 테스트 리소스compileJava
: JDK 컴파일러로 프로덕션 자바 소스 컴파일jar
: 메인 소스 셋을 기준으로 프로덕션 JAR 파일 생성test
: JUnit 등의 테스트 프레임워크를 통해 단위 테스트 실행java.sourceCompatibility = JavaVersion.VERSION_11
Java와 관련된 프로퍼티를 설정하기 위해 java
extension을 제공함
sourceCompatibility
: Java 소스 컴파일에 사용할 언어 버전 (기본 값: Gradle JVM의 버전)targetCompatibility
: 생성될 바이트 코드가 대상으로 할 Java 버전 (기본 값: sourceCompatibility
)Java Plugin을 확장하여 Java 라이브러리에 관한 추가 기능을 제공하는 Plugin
api
: 내부 의존성을 컴파일과 런타임 모두에 보이는 API 의존성 정의compile
과 동일implementation
: 내부 의존성을 런타임에서만 보이는 구현 의존성 정의runtime
과 동일compileOnly
: 컴파일에만 사용되는 의존성 정의compileOnlyApi
: 컴파일에만 사용되는 API 의존성 정의runtimeOnly
: 런타임에만 사용되는 의존성 정의testImplementation
: 테스트 의존성 정의testCompileOnly
: 테스트 컴파일에만 사용되는 의존성 정의testRuntimeOnly
: 테스트 런타임에만 사용되는 의존성 정의
깔끔한 정리 감사합니다! gradle 잘 몰라서 기초 살피고 있었는데, 도움 많이 되었어요