STUDY/GRADLE
[Gradle] GIT Branch 정보 가져오기
simongs
2020. 5. 5. 07:21
▣ 개요
- 해당 플러그인은 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;}
}
}