Gradle 실전__자동 교체 프로파일

8165 단어 gradle

Gradle 실전__자동 교체 프로파일


프로젝트 개발 과정에서 일반적으로 프로그램은 개발-테스트-온라인 세 단계에 세 가지 서로 다른 환경에 배치된다. 예를 들어 데이터베이스에 연결된 서버 IP와 계정 비밀번호가 다르고 호출된 외부 서비스는 서로 다른 서버를 가리킨다.서로 다른 환경에서 서로 다른 프로필을 사용하는 문제에 대해 주로 두 가지 해결 방안이 있을 수 있다.

자리 표시자 대체


먼저 자원 폴더 만들기
mkdir src\main\resources

리소스 경로에서 jdbc를 만듭니다.properties 파일
[email protected]@
[email protected]@
[email protected]@

이어서 Groovy의 문법을 이용하여 프로젝트 폴더에 config를 만듭니다.groovy 프로필, 앞에서 만든 jdbc에 대응합니다.properties 파일, 개발/테스트/생산 세 환경의 jdbc 매개 변수 설정
environments {
    dev {
        jdbc {
            url = 'dev_ip'
            user = 'dev_user'
            password = 'dev_pwd'
        }
    }

    test {
        jdbc {
            url = 'test_ip'
            user = 'test_user'
            password = 'test_pwd'
        }
    }

    prd {
        jdbc {
            url = 'prd_ip'
            user = 'prd_user'
            password = 'prd_pwd'
        }
    }
}

Gradle은 스크립트를 실행할 때 -P가 매개 변수를 전송하는 방식으로 서로 다른 환경을 구분할 수 있기 때문에 우리는build에 있습니다.gradle에 ext 속성 블록을 추가하여 전송된 매개 변수로부터 미리 설정된 프로필 속성을 변경합니다. 여기에 전송된 env 매개 변수를 통해 현재 구축할 환경을 결정한다고 가정하십시오.
ext {
    profile = project['env']
}

또한 프로필에 따라 앞에 설정된 config를 읽을 수 있는 함수를 사용자 정의합니다.groovy 파일
def loadGroovyConfig(){
    def configFile = file('config.groovy')
    new ConfigSlurper(profile).parse(configFile.toURL()).toProperties()
}

이어서 프로세스 Resources task를 바꾸어 자원 폴더의 프로필을 config에 따라 변경합니다.groovy 파일의 내용으로 자리 표시자 바꾸기
processResources {
    from(sourceSets.main.resources.srcDirs) {
        filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: loadGroovyConfig())
    }
} 
war {
        filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: loadGroovyConfig())
}

구성 스크립트를 실행할 때 env 파라미터를 전송합니다
gradle clean build -Penv=dev

실행에 성공하면build\resources\main 이 경로에서 이미 교체된 jdbc를 볼 수 있습니다.properties 파일,jar 패키지에 포장됩니다.
jdbc.url=dev_ip
jdbc.user=dev_user
jdbc.password=dev_pwd

자원 폴더 경로 변경


프로젝트에 있는 프로필이properties 파일을 제외하고 xml 파일이 있다고 가정하면 우선config 폴더에 서로 다른 환경의 다른 형식의 프로필 경로를 설정합니다
mkdir config\properties\dev
mkdir config\properties\test
mkdir config\properties\prd
mkdir config\xml\dev
mkdir config\xml\test
mkdir config\xml\prd

다양한 환경의 프로파일을 해당 폴더 아래에 배치합니다.
[gradle_sample]
├---[.gradle]
│   ├--- 
│
├---[build]
│   ├--- 
│
├---[config]
│   ├---[properties]
│   │   ├---[dev]
│   │   │   ├---jdbc.properties
│   │   │
│   │   ├---[prd]
│   │   │   ├---jdbc.properties
│   │   │
│   │   ├---[test]
│   │       ├---jdbc.properties
│   │
│   ├---[xml]
│   │   ├---[dev]
│   │   │   ├---applicationContext.xml
│   │   │
│   │   ├---[prd]
│   │   │   ├---applicationContext.xml
│   │   │
│   │   ├---[test]
│   │       ├---applicationContext.xml
│
├---[gradle]
│   ├--- 
│
├---build.gradle---gradlew---gradlew.bat---settings.gradle

이어서 build를 수정합니다.gradle 안에 있는sourceSets 속성 블록
sourceSets {
    main {
        resources {
            srcDir "config/properties/${profile}", "config/xml/${profile}"
        }
    }
}

마지막으로 구성 스크립트를 실행할 때 env 매개 변수에 대응하는 config 경로에서build\resources\main에 있는 jdbc로 복사되는 것을 볼 수 있습니다.properties 파일 및 applicationContext.xml 파일

좋은 웹페이지 즐겨찾기