빌드 툴 : 정형화 된 작업을 자동화 하기 위한 소프트웨어
빌드
1. 소스 코드( .java)를 컴팰해서 클래스 파일(.class)를 생성한다.
2. 코딩 규약에 맞게 작성했는지 확인한다.
3. 코드를 정적으로 해석한다.
4. 테스트를 하고 테스트 결과나 커버리지 측정 결과를 리포트로 출력한다.
5. javsdoc과 같은 문서를 작성한다.
6. 클래스 파일과 리소스 파일을 패키지이해서 압축 파일을 만든다.(.jar 과 .war 파일)
7. 압출파일을 테스트 환경이나 스테이징 환경에 배포한다.
8. 압축 파일을 저장소에 등록한다.
그래들 특징
빌드스크립트 생산성이 높다 : 규칙 기반 빌드 접근법을 사용한다. 규칙예외사항은 스크립트를 추가할 수 있어 유연하게 대응할 수 있다.
빌드 순서를 제어하기 쉽다 : 그레들의 빌드 순서는 테스크 의존관계에 따라 정해진다. (메이븐과 앤드의 중간단계)
멀티 프로젝트에 대응한다.
컴포넌트로 만들기 쉽다. : 빌드 스크립트에서 메서드나 클래스 추출 / 빌드 스크립트의 분할과 재사용
/ 프로젝트에서만 사용할 수 있는 확장 모듈 / 여러 프로젝트에서
범용적으로 사용할 수 있는 라이브러리
별도로 설치할 필요가 없다. : 그래들 래퍼 태스크를 실행해서 부트스트랩을 생성하기만 하면 된다.
그래들의 설치
JDK 6이상 필요하다
Gvm 설치
gvm
$ gvm install gradle
$ gvm install gradle <version>
$ gvm list gradle
1. 자바 프로젝트
build.gradlew
=============================================================
진행 프로젝트 빌드 스크립트 전문
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'
mainClassName = 'VerticleManager'
def defaultEncoding = 'UTF-8'
compileJava.options.encodind = defaultEncoding; // 소스 세트 main을 컴파일 할때 적용하는 인코딩 지정
sourceCompatibility = 1.8 // java jdk 버전 설정 컴파일할때 생성하는 클래스 파일의 jdk버전설정은 targetCompatibility 이다.
def vertxVersion = '3.5.3'
//의존 관계 해결위치로 매이븐 저장소 사용
repositories {
mavenCentral();
}
dependencies {
compile "io.vertx:vertx-core:${vertxVersion}"
compile "org.slf4j:slf4j-api:1.7.25"
compile "io.vertx:vertx-hazelcast:${vertxVersion}"
}
sourceSets {
main {
java {
srcDirs = ['src/main/java']
}
resources {
srcDirs = ['src/main/resources']
}
}
}
//기타 설정들 예시
//jar {
baseName : 'example'
appendix = 'bin'
}
//compileJava{
options.fork = true
}
=============================================================
그레들의 핵심 기능
- 전형적인 반복 작업을 자동화하기 위한 구조
- 자동화된 처리를 실행하기 위한 부품
자동화 대상이 되는 구체적인 작업들은 모드 플로그인으로 구현되어 있으며 핵심기능과 분리되어 있다.
apply plugin: 'java'
>>그레들에게 자바 프로젝트를 빌드할 때 반드시 팔요한 java 플러그인 사용한다는 선언문
자바 플러그인이란 자바 빌드에 필요한 테스크 설정을 단순화하는 규칙, 그것을 구현하기 위한 속성 및 소스 세트가 패키지로 구성된 빌드 기능 컴포넌트이다.
-Source set
빌드 스크립트에 자유롭게 추가할수있으며 컴파일 대상인 자바 코드와 리소스를 세트로 지정 할 수 있다.
컴파일 출력 경로를 지정할 수 있다.
자바 플러그인에는 이미 main과 test 두가지 소스 세트가 정의되어 있다. 따라서 프로덕션 코드의 단위 테스트 코드 이렇게 두 가지 소스 세트만으로 대응 가능한 자바 프로젝트라면 다른 소스 세트를 추가하지 않아도 된다.
- task
자바 플러그인이 제공하는 테스크는
1 .complie.Java : 프로덕션 코드를 컴파일 한다. 대상 소스세트 main의 java. srcDirs 속성에서 지정한 디렉터리에 있는 코드 중 확장자가 .java 인 파일이다.
2. processResources : 프로덕션 코드의 리소스르르 클래스 패스에 복사한다. compileJava 디렉터리중 .java를 제외한 모든 파일
3. classes : 1.2번 실행
4.. compileTest.java
5. processTestResources
6 etc : testClasses / jar/ javadoc / test/ clean/ clean<tastname>.assemble/ build/ uploadArchives /check / buildNeeded / buildDependents
=============================================================
현재 진행중인 프로젝트 task 출력
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar
:startScripts UP-TO-DATE
:distTar
:distZip
:assemble
:compileTestJava NO-SOURCE
:processTestResources NO-SOURCE
:testClasses UP-TO-DATE
:test NO-SOURCE
:check UP-TO-DATE
:build
=============================================================
-규칙
프로덕션 코드 파일은 src/main/java 디렉터리 아래 둔다.
프로덕션 리소스 파일은 src/main/resources에 아래 둔다.
-속성
태스크를 제어하거나 규칙을 구현하기 위해 속성을 제공한다.
https://docs.gradle.org/current/userguide/java_plugin.html
$ gradlew build: task 실행
$ gradlew run: 프로젝트가 실행
$ gradlew clean: 빌드 결과물을 삭제함