프로그래밍 공부/Gradle

Gradle 퍼블리싱 압축하기 zip tar jar war ear

Wonuk 2021. 9. 9. 20:36
반응형
Gradle의 모든 포스팅은 유튜브 프리렉을 기반으로 작성되었습니다.



링크 : https://www.youtube.com/watch?v=s-XZ5B15ZJ0&list=PL7mmuO705dG2pdxCYCCJeAgOeuQN1seZz

 

강의의 버전이 옛버전 이기 때문에 이론적인 부분만 학습하는것이 좋습니다.


압축하기 zip tar jar

 

1. zip파일

zip task를 사용한다

task exeTask(type : Zip){
    ...
}

 

실습을 위한 임의의 프로젝트 생성

 

build.gradle파일에 상단 이미지의 스크립트 작성

baseName  :  ziptask에서 제공해주는 하나의 속성

into("script") : 스크립트라는 디렉터리를 생성하고

from("src") : 스크립트 하위에 src 디렉터리의 파일들을 포함하여 압축파일 생성

includeEmptyDirs = true  :  true로 지정하면 빈 디렉터리 포함, false이면 빈 디렉터리 제외하고 압축

includeEmptyDirs 기본값은 true이다.

 

 

gradle exeTask2 실행결과

Gradle.Zip파일 생성됨

그 내부에 script디렉터리 그 하위에 src디렉터리에 있는 파일인 GradleHtml.html과 emptyDir 디렉터리 생성

 

GradleHtml.html 파일만 포함된것은

from("src"){
    exclude "*.js", "*.xml"
}

해당 구문에서 제외하였기 때문이다.

 

 

includeEmptyDirs = false 로 수정 후 gradle exeTask2로 zip파일 생성

empryDir 디렉터리가 제외되고 생성된것을 확인할 수 있다.

 

 

스크립트 수정 into블럭 추가

into블럭은 없어도되고 여러개를 만들어도 된다.

 

gradle exeTask2 실행결과

 

 

파일생성 시 파일명을 변경할 수 있다

rename 이용 'Gradle*'을 'Script'로 변경

 

gradle exeTask4 실행결과

파일명이 모두 Script로 변경된것을 확인할 수 있다.

 

 

 

파일생성 시 파일 내용을 변경할 수 있다.

html, js, xml 파일들에

Gradle이란 내용이 있으면 Change Gradle로 변경

 

 

Basename이 뿐만 아니라 archiveName을 통하여 zip파일 이름 생성

file명 부분에 file,Gradle을 붙일 수 있다.

 

빌드 수행 시 속성정보 출력 가능

gradle exeTask7 실행결과

> Configuration project :

destinationDir : D:\workspace\경로\NewZip

baseName : Gradle

version : 1_0

archivePath : D:\workspace\경로\NewZip\Gradle-file-1_0-script.zip

archivePath 경로를 확인하고 비교해보면 된다.

 

 

zip파일 압축형식 지정하기

entryCompression = ZipEntryCompression.DEFALTED
entryCompression = ZipEntryCompression.STORED

DEFALTED : 압축을 진행하고 zip파일을 생성

STORED : 압축을 지정하지 않고 zip파일로만 생성

? 무슨말인가

 


2. tar파일

Tar task를 이용하여 만든다.

zip파일 만드는 방법과 유사하다

압축을 지정하는 부분이 zip과 다르게

compression 속성을 이용한다. BZIP2, NONE, GZIP 등

NONE : 압축을 지정하지 않고 단순하게 tar파일 만듬

task exeTask9(type: Tar) {
    // 속성
    baseName="Gradle"
    appendix="file"
    classifier ="script"
    version ="1_0"
    
    from"src"
    
    includeEmptyDirs = true
    
    // 압축방식 - zip 압축 파일 생성때와 다름
    compression = Compression.BZIP2
    // Compression.NONE
    // Compression.GZIP
}

 

gradle exeTask9 실행결과


3 jar파일

tar, zip파일과 동일한 형식의 스크립트 구조를 가지고 있다.

jar task는 zip task를 상속하여 구현되었다.

차이점 : manifest 블럭을 사용한다

manifeset : 프로젝트의 메타정보를 세팅하는 부분을 담당

attributes를 보면 Gradle로 빌드수행, Implementation-Version은 프로젝트의 버전으로 설정

version = 'jar 1.0'
task exeTask10(type: jar) {
    baseName="Gradle"
    appendix="file"
    classifier="scirpt"
    version = "1_0"
    
    from"src"
    
    uncludeEmptyDirs = true
    
    manifest{
        attributes("Built-By":"Gradle", "Implementation-Version":project.version)
    }
    
    entryCompression = ZipEntryCompression.STORED
}

 

gralde exeTask10 실행결과

 

manifest블록으로 지정한 부분이

META-INF 디렉터리로 생성되어진다.

그 하위에 MANIFEST.MF 파일이 생성되어있다.


Gradle은 압축파일을 만들 수 있는 형식들을 제공하고 있다

이러한 아카이브 형식을 통해서 다른 프로젝트나 시스템에서 참조하거나 사용할 수 있도록

특정위치에 배포할 수 있는 퍼블리싱을 할 수 있다.

3. war파일

4. ear파일

강의가 잘못 올라와있어서 따로 확인해보자

 

 

 

 

 

반응형