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 등을 사용한다.
본인만의 원격저장소를 생성하여 배포해보자.
'프로그래밍 공부 > Gradle' 카테고리의 다른 글
Gradle Ant,maven에서 그레이들 변환, Gradle에서 Ant,maven 사용, 배포 (0) | 2021.09.11 |
---|---|
Gradle 퍼블리싱 압축하기 zip tar jar war ear (0) | 2021.09.09 |
Gradle 테스트 자동화 환경 차이 제어, 패턴을 이용한 테스트, Junit, 병렬 테스트 (0) | 2021.09.08 |
Gradle 의존관계 관리, 환경구성 정의, 저장소 정의 (0) | 2021.09.08 |
Gradle의 파일처리 파일관리 파일참조, 파일복사, 파일삭제 (0) | 2021.09.06 |