본문 바로가기
STUDY/GRADLE

[Gradle] GIT Branch 정보 가져오기

by simongs 2020. 5. 5.

 개요

  • 해당 플러그인은 build 시점에 git.properties 파일을 만들어냅니다.
  • build를 수행하는 환경에 따라 File의 인코딩도 변합니다.
  • 프로젝트의 /src/main/resources 폴더에 해당 파일을 생성합니다.

 생성된 git.properties 파일 샘플

#Mon Jan 08 22:58:29 KST 2018
git.commit.id=29034898348cv0e051cc6fb7322b8d55cd939733
git.commit.time=1515347499
git.commit.user.name=SIMONGS
git.commit.id.abbrev=cd939733
git.branch=develop
git.commit.message.short=테스트 SHORT 메시지
git.commit.user.email=chopokmado@gmail.com
git.commit.message.full=테스트 SHORT 메시지

 적용방법

멀티프로젝트 예제 구조

ㄴparent
    ㄴ sample-core <------ git.properties 를 생성하고 싶은 위치
        ㄴ sample-admin
        ㄴ sample-batch

buildscript {
  repositories {
    mavenCentral()
    maven {
      url "https://plugins.gradle.org/m2/" // gradle 플러그인 URL
    }
  }
  dependencies {
    classpath "gradle.plugin.com.gorylenko.gradle-git-properties:gradle-git-properties:2.2.2"  // gradle-git-properties
  }
}

// (CASE 1) 싱글 프로젝트에서 적용시키는 방법
apply plugin: "com.gorylenko.gradle-git-properties"

// (CASE 2) 멀티 프로젝트에서 적용시키는 방법
subprojects { subproject ->
    if (subproject.name.startsWith("sample-core")) {
        apply plugin: "com.gorylenko.gradle-git-properties"
    }
}

▣ GitProperties.java 에 프로퍼티 설정하기

PropertySourcesPlaceholderConfigurer 를 통한 설정
@Configuration
public class CommonConfig {

    @Bean
    public static PropertySourcesPlaceholderConfigurer gitPropertiesPlaceholderConfigurer() {
        PropertySourcesPlaceholderConfigurer propsConfig = new PropertySourcesPlaceholderConfigurer();
        propsConfig.setLocation(new ClassPathResource("git.properties"));
        propsConfig.setIgnoreResourceNotFound(true);
        propsConfig.setIgnoreUnresolvablePlaceholders(true);
        propsConfig.setFileEncoding("UTF-8"); // 파일이 만들어지는 환경에 따라 인코딩을 다르게 해야할 수 있다.
        return propsConfig;
    }
}
GitProperties.java
@Component
public class GitProperties {

    @Value("${git.branch}")
    private String gitBranch;

    @Value("${git.commit.message.short}")
    private String lastCommitMessage;

    @Value("${git.commit.user.email}")
    private String lastCommitUser;

    public String getGitBranch() {
        if (StringUtils.isBlank(gitBranch)) {
            return "develop";
        }
        return StringUtils.contains(gitBranch, "/") ? StringUtils.substringAfterLast(gitBranch, "/") : gitBranch;}
    }
}

 Reference

'STUDY > GRADLE' 카테고리의 다른 글

[Gradle] GRADLE 5 + BOOT 2.x + Lombok 빌드 이슈  (0) 2020.05.03

댓글