원하는 것은 뭐든지
자바에서의 빌드(Build) 그리고 Gradle 본문
About
자바 빌드에 대해 알아보고 빌드 자동화 도구인 Gradle에 대해 알아본다.
목차
본론
빌드란?
개발에서 빌드라는 말은 소스코드와 같은 자원들을 컴파일, 패키징 하여 실행 가능하도록 만드는 과정을 말한다.
일반적으로 컴파일, 링크, 패키징, 테스트, 배포의 순서를 가지고 있다.
- 컴파일
- 사용하는 프로그래밍 언어로 작성된 코드를 컴파일러를 사용해 기계어로 변환한다. 예를 들어 자바는 바이트 코드로, C++은 목적코드로 변환된다.
- 링크
- 컴파일된 파일을 연결하여 실행 파일 또는 라이브러리를 생성한다. 이 과정에서 외부 라이브러리나 다른 코드 파일과의 연결이 이루어진다.
- 패키징
- 실행파일, 라이브러리, 리소스 파일을 하나의 패키지로 묶어 배포 가능한 형태로 만든다.
- 테스트
- 빌드 과정에서 생성된 프로그램, 애플리케이션이 제대로 작동하는지 테스트를 수행한다.
- 배포
- 최종 빌드 결과물을 서버나 배포 환경에 배포하여 실제로 사용할 수 있도록 한다.
자바에서 빌드
자바에서의 빌드과정은 위에서 설명한 과정과 유사하지만 차이점에 대해 설명한다.
- 컴파일
- .java 파일에 작성한 소스코드를 `javac` 컴파일러를 사용하여 바이트코드로 컴파일한다. 컴파일된 코드는 `. class`파일에 저장된다.
- 패키징
- 컴파일된 .class 파일들과 리소스 파일들을 하나의 JAR파일로 패키징 한다.
- JAR파일은 자바 애플리케이션을 배포할 때 사용되고, 실행가능한 JAR 파일은 `MANIFEST.MF`파일에 메인 클래스를 명시한다.
- 빌드도구의 사용
- 자바 개발에서는 빌드 도구를 사용하여 빌드, 테스트, 배포를 자동화할 수 있다.
- Gradle, Maven 등이 있는데 이 도구들은 의존성관리, 소스코드 컴파일, 테스트 실행, JAR파일 생성, 배포 등의 작업을 자동으로 처리한다.
- Gradle은 `build.gradle` , Maven은 `pom.xml` 파일에 의존성을 정의한다.
- 배포
- 최종적으로 빌드된 JAR, WAR 파일을 배포환경에 배포한다.
Gradle이란 무엇인가?
- 가장 최근에 나온 빌드 도구로서 xml을 사용하지 않고 Groovy나 Kotlin 언어로 스크립트를 작성한다.
- 빌드 작업을 병렬로 수행할 수 있어 빌드 시간을 단축할 수 있다.
- 변경된 소스만 컴파일하여 빌드하는 인크리멘탈 빌드기능을 제공한다.
- 안드로이드 스튜디오의 공식 빌드 시스템이다.
build.gradle
Gradle기반의 빌드 스크립트이다.
개발에 필요한 외부 라이브러리들은 dependencies에 작성해 주면 된다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.2'
id 'io.spring.dependency-management' version '1.1.6'
}
group = 'com'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
'개발 > 자바' 카테고리의 다른 글
DTO 와 VO의 차이점 (0) | 2023.10.05 |
---|---|
자바 여러버 사용하기 (0) | 2023.09.20 |
[JAVA] ENUM 클래스 (0) | 2023.03.15 |