프로그래밍 공부/Gradle

Gradle 파일 퍼블리싱 Maven publish, Ivy publish, 인터넷 배포

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



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

 

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


파일 퍼블리싱

Gradle에서 퍼블리싱 하는 방법은 크게 두가지가 있다.

1. Maven publish 플러그인

2. Ivy publish 플러그인

 

 

파일 퍼블리싱 순서

 

 

메이븐 퍼블리싱 플러그인

apply plugin: 'maven-publish'

 

- MavenPublication 게시 및 MavenArtifactRepository 저장소에서 기능 수행

- 소프트웨어 컴포넌트(Software Component) : 퍼블리싱을 수행하기 위해 게시하고자 하는 파일을 관리하는 개념

 

소프트웨어 컴포넌트는 아티팩트와 의존관계 관련 정보를 그룹화한 것으로,

소프트웨어 컴포넌트 등록을 통해서 빌드를 수행 시 자동으로 추가할 수 있다.

소프트웨어 컴포넌트에 접근하려면 components.소프트웨어 컴포넌트 명 의 형식으로 지정하여 접근한다.

 

사용방법 예시

publishing 블록을 사용한다.

// publishing 설정
publishing {
    publications {
        //MavenPublication을 사용하도록 mavenJava 모듈 식별명 사용
        mavaenJava(MavenPublication) {
            // java를 소프트웨어 컴포넌트에 등록
            from components.java
        }
    }
}

 

소프트웨어 컴포넌트에 접근하는 방법

bulid.gradle파일

apply plugin:"java"
repositories{
    mavenCentral()
}

dependencies{
    runtime"org.apache.commons:commons-lang3:3.3.1"
}

task exeTask <<{
    // components.소프트웨어 컴포넌트명 형식으로 접근
    for(d in components.java.usages.dependencies) {
        println d
    }
}

 

gradle exeTask 실행결과

 

 

소프트웨어 컴포넌트에 아티팩트를 등록하고

등록된 아티팩트를 소프트웨어 컴포넌트를 통하여 관련정보 출력

// 사용할 플러그인 지정
apply plugin : "java"
applay pugin : "maven-publish"
task sourcejar(type: Jar){
    // 소스 세트 입력 파일 지정
    classifier 'sources'
    from sourceSets.main.allJava
    // 등록된 아티팩트 정보 출력
    for (a in components.java.usages.artifacts){
        pirntln "Software Component artifacts :" + a.file
    }
}

publishing {
    publications {
        mavenJava(MavenPublication){
             from components.java
             // 퍼블리싱할 압축 파일이나 파일 지정
             artifact sourceJar {
                 classifier "sources"
             }
        }
    }
}

 

gradle sourceJar 실행결과

 

 

 

 

 

소프트웨어 컴포넌트를 빌드를통해 모듈에 등록한 후

메이븐 로컬저장소에 퍼블리싱

 

build.gradle

apply plugin:"java"
apply plugin:"maven-publish"

group = "src"
version = 0.1

repositories {
    mavenCentral()
}

dependenceis {
    runtime "org.apache.commons:commons-lang3:3.3.1"
}

publishing{
    publications {
        mavenJava(MavenPublication){
            from conponents.java
        }
    }
}

 

실행하는법

gradle publishmavenJavaPublicationToMavenLocal

결과는 maven local 저장소를 확인해보면 된다.

 

.pom파일이 생성된것을 확인할 수 있다.

.pom파일 내용

 

 


아이비 퍼블리싱 플러그인 Ivy Publish 

maven과 다른 점은 ivyJava 모듈 식별명을 사용한다

// publishing 설정
publishing {
    publications {
        // IvyPublication 을 사용하도록 ivyJava 모듈 식별명 사용
        ivyJava (IvyPublication) {
            // Java를 소프트웨어 컴포넌트에 등록
            from components.java
        }
    }
}

 

아이비 퍼블리싱 플러그인 사용하기

build.gradle

apply plugin:"java"
apply plugin:"ivy-publish" // maven일때와 다른 부분

task sourceJar(type:Jar){
    // 소스 세트 입력 파일 지정
    classifier 'sources'
    from sourceSets.main.allJava
    // 등록된 아티팩트 정보 출력
    for (a in components.java.usages.artifacts){
        println"Software Component artifacts : " + a.file
    }
}

publishing{
    publications {
        ivyJava(IvyPublication){ // maven과 다른부분
            from conponents.java
            artifact sourceJar {
                classifier "sources"
            }
        }
    }
}

 

gradle sourceJar 실행결과

maven publish와 동일한 결과가 나온다

 

 

 

ivy-publish 플러그인을 사용하여 ivy저장소로 퍼블리싱

apply plugin:"java"
// ivy-publish 플러그인 사용
apply plugin:"ivy-publish" 

group = "org.gradle.sample"
version = 0.1

publishing{
    publications {
        // IvyPublication 사용
        ivyJava(IvyPublication){
            from conponents.java
        }
    }
    // ivy 저장소 지정
    repositories {
        ivy {
            // 저장소 위치 지정
            url"$buildDir/repo"
        }
    }
}

maven publish플러그인과 다르게 publishing 블록에서 ivy저장소를 repositories 블록안에 지정

지정된 ivy 저장소 공간으로 빌드 수행 후 수행된 결과가 저장소에 생선된다.

pom파일이 아닌 ivy.xml파일이 생성되어 프로젝트의 메타정보들이 입력되어진다.

 

빌드 실행 명령어

gradle publishIvyjavaPublicationToIvyRepository 결과

repo -> org.gradle.sample -> 8_11(프로젝트명) -> 1.0(프로젝트 버전)

ivy.xml 파일이 생성된것을 확인할 수 있다.

 

ivy-1.0.xml 파일내용

메타정보들이 출력되어있다.

 

ivy.xml파일

동일한 파일이 생성되어있다.

 

이미지의 경로에 .MF 파일도 생성됨

 

 

 

Ivy.xml파일을 변경하거나 추가할 수 있다.


인터넷에 배포하기 (원격저장소 배포)

github, jenkins, JFrog Bintray 등을 사용한다.

 

본인만의 원격저장소를 생성하여 배포해보자.

 

 

 

반응형