본문 바로가기
교재 실습/자바 웹 개발 워크북

129. Gradle 빌드 파일 분석 (2)

by Jint 2022. 10. 12.

3. jar 작업과 제어 속성 - jar {}

jar 작업은 Java 플러그인에 속해 있으며 .jar 파일을 생성하는 일을 한다. 다음의 속성값을 조정하면 jar 파일 이름이나 .jar 파일 안에 넣어야 할 것과 넣지 말아야 할 것 등을 조정할 수 있다.

jar 작업의 주요 속성 이름과 설명을 나타낸 표이다.

속성 이름 설명
archiveName JAR 파일 이름. 지정하지 않으면 다음의 규칙에 따라 생성된다.
[baseName]-[appendix]-[version]-[classifier].[extension]
baseName JAR 파일의 기본 이름
appendix JAR 파일명에서 appendix 부분에 놓일 이름
version JAR 파일명에서 version 부분에 놓일 이름
지정하지 않는다면 프로젝트의 기본 속성인 version 값이 사용된다.
classifier JAR 파일명에서 classifier 부분에 놓일 이름
extension JAR 파일명에서 extension 부분에 놓일 이름
지정하지 않는다면 'jar'가 사용된다.
excludes JAR 파일 생성 시 제외할 파일에 대해 ANT 스타일로 패턴을 지정(ANT는 ant.apache.org에서 제공하는 빌드 도구이다.)
예) ['**/*.txt'] → 폴더에 상관없이 확장자가 txt인 파일은 제외
includes JAR 파일 생성 시 포함할 파일에 대해 ANT 스타일로 패턴을 지정(ANT는 ant.apache.org에서 제공하는 빌드 도구이다.)
예) ['conf/*.xml'] → conf 폴더에 있는 xml 파일은 포함
manifest MANIFEST.MF 파일에 들어갈 속성=값 정보를 설정.
(이 파일은 JAR 파일 안에 META-INF 폴더에 있다.)

 

- build.gradle 코드 분석

jar {
    manifest {
        attributes 'Implementation-Title': 'Gradle Quickstart', 
                   'Implementation-Version': version
    }
}

앞의 코드는 jar 작업을 수행할 때 MANIFEST.MF 파일에 들어갈 속성을 지정하고 있다. 빌드 수행 후, 생성된 JAR 파일을 풀어 보면 MENIFEST.MF 파일의 내용이 다음과 같다.

JAR 파일 : META-INF/MANIFEST.MF
Manifest-Version: 1.0
Implementation-Title: Gradle Quickstart
Implementation-Version: 1.0

 

4. 의존 라이브러리를 가져올 저장소 설정 - repositories {}

프로젝트에서 사용할 의존 라이브러리를 가져오려면 먼저, 의존 라이브러리들이 보관되어 있는 저장소(repository)를 설정해야 한다. repositories 블록을 이용하면 의존 라이브러리를 가져올 저장소를 설정할 수 있다.

다음 표는 저장소를 지정하기 위해 호출할 수 있는 주요 메서드 목록이다. repositories 블록에서 사용하기를 원하는 저장소에 대한 메서드를 호출하면 된다.

메서드 이름 설명
flatDir() 로컬 폴더를 저장소로 지정
ivy() Apache Ivy 서버를 저장소로 지정
jcenter() Bintray의 jcenter 서버를 저장소로 지정
mavenCentral() Maven 중앙 서버를 저장소로 지정. 서버의 기본 URL은 http://repo1.maven.org/maven2/ 이다.
mavenLocal() Maven 로컬 임시 보관소를 저장소로 지정

 

- build.gradle 코드 분석

repositories {
    mavenCentral()
}

우리의 프로젝트에서는 의존 라이브러리를 찾기 위한 저장소로 메이븐(Maven) 중앙 서버를 지정하였다.

 

5. 프로젝트에서 사용할 의존 라이브러리 지정 - dependencies {}

프로젝트에서 사용할 의존 라이브러리에 대한 정보는 dependencies 블록을 사용하여 설정한다. 문법은 다음과 같다.

dependencies {
    [설정 이름] [의존 라이브러리 정보]
}

 

- 의존 설정 이름

'의존 설정 이름(dependency configuration name)'은 의존 라이브러리가 사용될 시점이다. 다음은 Java 플러그인에 정의되어 있는 의존 설정 이름과 이 설정을 사용하는 작업에 대해 정리한 표이다.

설정 이름 작업 설명
compile compileJava compile 이름으로 등록한 라이브러리는 compileJava 작업을 수행할 때 사용된다.
runtime   runtime 이름으로 등록한 라이브러리는 실행 시에 사용된다.
testCompile compileTestJava testCompile 이름으로 등록한 라이브러리는 compileTestJava 작업을 수행할 때 사용된다. compileTestJava 작업은 compileJava 작업을 포함하고 있으므로, compile 이름으로 등록한 라이브러리는 제외하고 등록한다.
testRuntime test testRuntime 이름으로 등록한 라이브러리는 test 작업을 수행할 때 사용된다. test 작업은 compileTestJava와 compileJava 작업을 포함하고 있으므로 이 작업들과 관련된 라이브러리는 제외하고 등록한다.
providedCompile   compile과 같다. 다만 .war 파일에는 포함되지 않는다.
providedRuntime   runtime과 같다. 다만 .war 파일에는 포함되지 않는다.

 

- 의존 라이브러리 정보

외부 의존 라이브러리를 사용하는 것으로 가정하고 설명한다. 라이브러리 정보는 다음 표기법에 따라 지정한다. 둘 중에서 편한 방법을 사용하면 된다.

표기법 1.
[설정이름] 'group:name:version:classifier'

표기법 2.
[설정이름] group: '그룹명', name: '라이브러리 이름', version: '라이브러리 버전', classifier: '분류 접미사'

라이브러리 정보에서 'name' 항목은 필수이다. 나머지는 선택 사항이다.

 

- build.gradle 코드 분석

dependencies {
    compile 'org.springframework:spring-context:4.0.3.RELEASE'
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    testCompile group: 'junit', name: 'junit', version: '4.+'
}

이번 절에서는 스프링 프레임워크가 제공하는 기능 중에서 IoC 컨테이너를 사용할 것이다. IoC 컨테이너를 사용하려면 'spring-context' 라이브러리가 있어야 한다. 이 라이브러리를 가져오기 위해 compile 이름으로 등록하였다.

나머지 'commons-collections'와 'junit' 라이브러리는 프로젝트를 생성할 때 예제 소스를 위해 등록된 것이다. 나중에 쓸 수도 있을 것 같아서 지우지 않았다. JUnit 라이브러리는 테스트용이라서 설정 이름을 testCompile로 지정하였다.

 

참고도서 : https://freelec.co.kr/book/1674/

 

[열혈강의] 자바 웹 개발 워크북

[열혈강의] 자바 웹 개발 워크북

freelec.co.kr

댓글