2015年1月24日

Gradle(5) 相依管理-抓取版本庫設定

當我們開發程是會使用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')
}

說明: 本案例Maven版本庫和實際jar檔放置的位置不同,因為本例url只有定義metadata的描述檔,所以需要額外定義jar檔的位置artifactUrls 。


案例三、需要驗證才可以讀取版本庫

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'
}

image


沒有留言:

張貼留言