# build.gradle # 환경구성 configurations { conf1 } // 변경성 모듈: 의존관계 모듈은 계속 바뀌는 경우가 있다. // 특수한 모듈을 사용할 경우 그레이들은 해당 버전을 해결한 결과를 24시간 캐시한다. // 아래는 캐시 기간을 설정한다. configurations.conf1.resolutionStrategy.cacheDynamicVersionsFor 1, 'minutes' // conf1 환경 동적 버전 캐시 간격 configurations.conf1.resolutionStrategy.cacheChangingMoulesFor 5, 'hours' // conf1 변경성 모듈 캐시 간격 // 의존관계 정의 dependencies { // conf1환경 구성에 libs/sample-lib.jar을 의존관계로 지정한다. conf1 files("libs/sample-lib.jar") } // 기능을 showDeps를 실행하면 프로젝트가 의존하는 JAR파일 경로가 표시된다. // gradle showDeps task showDeps << { configurations.conf1.each { println it.absolutePath } }
gradle에서 지원하는 의존관계 지정 방법
- 외부모듈
인터넷의 저장소(예: maven, jcenter)에서 파일을 내려받는다. 저장소 정의를 따로 해야 한다.
repositories { mavenCenteral() } dependencies { conf1 'org.slf4j:slf4j-api:1.7.5' // conf1 group: 'org.slf4j', name: 'slf4j-api', version: '1.7.5' // conf1 'org.slf4j:slf4j-api:1.7.+' // 1.7대 버전중 최신 버전 // conf1 'commons-cli:commons-cli:latest.integration' // 전체 최신 버전 // conf1 'junit:junit:latest.release' /// 안정 버전중 최신 버전 }
repositories { # maven maven { // POM 파일은 이 URL에서 가져온다. url "http://company-repositories-2.example.com/maven" // JAR파일 위치 artifactUrls "http://company-repositories-2.example.com/maven/jars" // 또 다른 JAR파일 위치 artifactUrls "http://company-repositories-2.example.com/maven/jars2" // 계정 credentials { username 'user' password 'password' } } maven { url "http://company-repositories-2.example.com/maven2" credentials { username repositoryUser password repositoryPass } // ~/.gradle/gradle.properties // repositoryUser=username // repositoryPass=password } # maver local mavenCentral() # jcenter jcenter() # ivy ivy { // 저장소 위치 url "http://example.com/ivy-repo" // 저장소 구조 layout "maven" // 계정 credentials { username 'user' password 'password' } } #file flatDir { // libs/doc-repo 지정 dirs "libs", "doc-repo" } }
- 파일
dependencies { conf1 files("libs/sample-lib.jar") // 모든 jar파일이 의존관계 대상이 된다. // conf1 fileTree(dir: "libs", include: "**/*.jar") }
- 프로젝트
특정 프로젝트에서 다른 프로젝트의 결과물을 참조한다(멀티 프로텍즈 사용).
dependencies { compile project(':shared') }
- Gradle API
현재 사용 중인 API가 포함된 라이브러리 파일 의존관계(직접 그레이들의 플러그인이나 태스크를 신규로 작성할 때 사용한다).
dependencies { conf1 gradleApi() }
- Local Groovy
현재 사용중인 Groovy(그레이들에 내장된) 의존관계(그레이들 API 의존관계와 같이 플러그인이나 태스크를 직접 신규로 작성할 대 사용한다).
dependencies { conf1 localGroovy() }
경합
- Newest 전략 Default
버전 경합이 발생하면 가장 최신 버전의 의존관계를 사용한다.
- Fail 전략
버전 경합이 발생하면 예외를 발행해서 빌드 실패를 유도한다.
configurations { conf1 testConf1.extendsFrom conf1 // testConf1은 conf1의 의존관계도 포함 } configurations.testConf1 { resolutionStrategy { failOnVersionConflict() // Fail 전략 도입 } /* // resolutionStrategy, solutionStrategy 2개 모두 사용한지는 모르겠다. solutionStrategy { failOnVersionConflict() // Fail 전략 도입 force 'org.hamcrest:hamcrest-core:1.3' // testConf1에서 Hamcrest 요구시 반드시 1.3 사용 // 경합 버전과 상관없는 1.2를 지정할 수 있다. } */ } dependencies { conf1 group: 'org.ccodehaus.groovy', name: 'groovy-all', version: '2.3.1' /* conf1 group: 'org.ccodehaus.groovy', name: 'groovy-all', version: '2.3.1' { force = true // 버전 경합 시 반드시 의존관계를 사용한다. } */ testConf1 group: 'org.spockframework', name: 'spock-core', version: '0.7-groovy-2.0' { exclude module: 'groovy-all' // groovy-all은 무시한다. (전이적 의존관계 제외) } } // 같은 모듈에 여러 버전이 강제 지정되면 처음 설정이 사용된다.
반응형
'lang' 카테고리의 다른 글
Golang windows path (0) | 2019.01.15 |
---|---|
GetText 로컬라이즈 방법, ko.po, ko.mo (0) | 2016.12.30 |
Gradle, Groovy, Scala Install (0) | 2016.11.27 |
더 나은 프로그래머가 될 수 있는 7팁! (0) | 2016.01.14 |
AutoHotKey (0) | 2007.09.11 |