當我們開發程是會使用third-party或是函式庫,這些jar之間版本相依不同會造成錯誤,我們可以利用Gradle來管理這些jar,讓我們開發程式更容易管理參照不同版本的jar檔。
- 相依環境設定
Maven和Ivy都有相依管理的機制,然而Gralde是使用Ivy API的相依管理的函式,但是也加入一些額外的功能。ralde
(1) 版本庫(Repositories)
版本庫裡面定義函式模組之間的路徑方式,Gradle可以去定義如何存取方式、版本等等,例如使用HTTP、SSH或是file system或是其他協定來存取程式。它定義很多的環境可以使用或是可依照你需求去定義環境。Gradle是繼承Maven或是Ivy的方式來管理相依性。
版本類型 | 方法 | 說明 |
---|---|---|
Maven repository | 使用Maven方式去存取遠端版本庫 | |
Maven central repository | mavenCentral() | 使用Maven方式從Maven官方版本庫去抓取程式 |
Maven local repository | mavenLocal() | 使用Maven方式從自己本機端抓取版本庫,如果你先在本機定義Maven的版本庫 |
Ivy repository | 使用Ivy方式去抓取本機端或是遠端 | |
Flat directory repository | flatDir() | 直接抓取本機端或是遠端 |
案例一、從Maven官方抓取檔案
repositories {
mavenLocal()
mavenCentral()
}
案例二、自訂版本庫抓取的方式
repositories {
maven {
// Name is optional. If not set url property is used
name = 'Main Maven repository'
url = 'http://20.1.10.50/spring'
artifactUrls ''http://20.1.10.51/spring'
artifactUrls 'http://20.1.10.51/spring/snapshot-jar'
}
mavenRepo(name: 'Snapshot repository', url: '20.1.10.50/spring')
}
案例三、需要驗證才可以讀取版本庫
repositories {
maven(name: 'Secured repository') {
credentials {
username = 'username'
password = 'password'
}
url = 'http://20.1.10.50/spring'
artifactUrls ''http://20.1.10.51/spring'
artifactUrls 'http://20.1.10.51/spring/snapshot-jar'
}
}
或是定義gradle.properties參數檔
repositories {maven(name: 'Secured repository') {
credentials {
// $USER_HOME/.gradle/gradle.properties
username = usernameSecuredRepo
password = passwordSecuredRepo
}
url = 'http://20.1.10.50/spring'
artifactUrls ''http://20.1.10.51/spring'
artifactUrls 'http://20.1.10.51/spring/snapshot-jar'
}
}
案例四: 、自訂規則抓取,開發jsp需要本機的tomcat的servlet-jar和jsp-api檔,利用gradle來抓取jar檔。
需要用到flatDir的方法,它可以當作arguments或closure使用,下面是檔案命名的樣式,根據這些樣事才做讀取
• [artifact]-[version].[ext]
• [artifact]-[version]-[classifier].[ext]
• [artifact].[ext]
• [artifact]-[classifier].[ext]
apply plugin: 'java'
repositories{
flatDir{
dirs 'C:\\Program Files\\Apache Software Foundation\\Tomcat 7.0\\lib'
}
}
dependencies {
compile group: 'org.springframework', name: 'servlet-api'
compile group: 'org.springframework', name: 'jsp-api'
}
留言
張貼留言