build.gadle

SeokHwan An·2023년 4월 13일
0

java

목록 보기
8/10

자동차 경주 미션을 스프링(웹)으로 옴기는 과정에서 build.gradle 파일을 처음으로 이용하게 되었고 여기서 dependenciesimplementation , testImplementation , runtimeOnly 등 다양한 용어들이 있었고 이를 이해하고 쓰는 것이 앞으로 스프링을 하는데 있어서 필요하다고 느꼈습니다. 그래서 이번 포스팅에서는 gradle에서 build.gradle을 다루려고 합니다.

gradle 이란

gradle은 간단하게 말하면 build 도구 입니다.

build란?
소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 결과를 의미합니다.

즉, 실행가능한 소프트웨어 산출물을 만드는 일련의 과정을 의미합니다. gradle은 이와 같이 소프트웨어 산출물을 만드는 것에도 도움을 주고 프로젝트 생성, 테스트 빌드, 지속적인 라이브러리 추가 및 버전 동기화 등에 도움을 주는 도구입니다.

build.gradle이란

bulid.gradle은 파일에 빌드정보를 정의하여 프로젝트에서 사용하는 환경 설정, 빌드방법, 라이브러리 정보 등을 기술하여 빌드 및 프로젝트의 관리 환경을 정리한 파일입니다.

build.gradle에는 plugins , repositories, dependencies 등으로 구성되어 있습니다. 이들의 각각의 역할은 다음과 같습니다.

plugins

plugins는 프로젝트에서 필요한 요소들의 task를 제공해줍니다. 예를 들면 다음과 같습니다.

apply plugin : 'java'

java를 plugin에 추가하면 java 프로젝트에서 필요한 compliejava, classes, test, jar 등의 task를 제공해주는 것입니다.

repositories

repositories에서는 필요한 라이브러리들을 저장해두는 저장소를 선언하는 것입니다. 여기서 말하는 저장소는 각종 프로그램들이 저장되는 위치라고 보면 좋을 것 같습니다.

repositories {
		mavenCetral()
}

저장소의 종류로는 크게 mavenCentral(), jcenter() 등이 있습니다.

dependencies

dependencies에서는 프로젝트에 필요한 라이브러리들의 의존성을 관리하는 할 수 있습니다. 의존성을 설정할 때에는 implementation, api, compileOnly, testImplementation 등 다양한 옵션들이 있습니다.

초록색 부분은 사용자가 선언할 수 있는 옵션이고 이 옵션들의 특징들은 다음과 같습니다.

dependencies {

		implementation 'org.springframework.boot:spring-boot-starter-web'
		testImplementation 'org.springframework.boot:spring-boot-starter-test'
		runtimeOnly 'com.h2database:h2'
		...
}

API

  • 의존 라이브러리 수정시에 해당 모듈을 의존하고 있는 모든 모듈아 recompile 됩니다.
  • 즉 B가 A에 의존하고 C가 B에 의존한다고 할 때 A가 수정이 되면 B와 C 모두 recomplie이 됩니다.

implementation

  • 의존 라이브러리 수정시에 해당 모듈을 직접적으로 의존하는 라이브러리까지만 recompile 됩니다.
  • 직접적으로 의존한다는 의미는 B → A에 의존하고 C → B 에 의존한다고 할 때 B는 A에 직접적으로 의존하는 것이고 C는 A에 간접적으로 의존한다는 것입니다.

complieOnly

  • 컴파일 시에만 빌드하고 런타임 시점에는 필요하지 않는 라이브러리를 설정하는 옵션입니다.
  • 즉, complieClasspath에 저장되는 라이브러리입니다.

runtimeOnly

  • runtime 시에만 필요한 리이브러리를 설정하는 옵션입니다.
  • 즉, runtimeClassPath에 저장되는 라이브러리입니다.

testImplementation, testCompileOnly, testRuntimeOnly 와 같이 앞에 test가 붙은 옵션들이 있는데 이는 test시를 의미하고 앞서 설명한 방식과 같이 동작합니다.


참고자료

https://www.egovframe.go.kr/wiki/doku.phpid=egovframework:dev3.6:dep:build_tool:gradle
https://docs.gradle.org/current/userguide/java_library_plugin.html

0개의 댓글