Gradle依赖管理 —— 仓库

在编写build.gradle脚本的时候,依赖管理往往涉及到这几个方面:

  • 从哪个仓库拿Artifacts
  • 这些Artifacts如何参与到compile, runtime, testCompile阶段
  • 发布Publish到哪个仓库中,供其他人使用

基于以上理解,会有三个部分的脚本要编写:

  • repositories
  • dependencies
  • publish

但是,在这之前需要注意一件事情,拿到的这些Artifacts需要怎样的编程语言支持。所以,Gradle plugin需要引入到脚本中。

  • apply plugin: ‘java’
  • apply plugin: ‘groovy’
  • apply plugin: ‘scala’

甚至,还需要考虑到有些特殊的结构或者文件被产生出来。比如:

  • apply plugin: ‘web’

如何配置Gradle的仓库repositories呢?

从外部仓库引入

build.gradle脚本中加入(Maven):

repositories {
    mavenCentral()
}

其中,mavenCentral()是个默认的仓库。它的地址是mavenCentral


或者(Bintray):

repositories {
    jcentral()
}

其中,jcentral()是Bintray的默认仓库。它的地址是jcentral


或者(Google):

repositories {
    google()
}

其中,google()是Google的默认仓库。它的地址是google

从本地仓库引入

如果本地有maven仓库:

repositories {
    mavenLocal()
}

这里的仓库路径,默认是在USER_HOME/.m2/repositories/。如果,本地仓库的路径配置有变,那么应该从settings.xml文件中的相关配置中找。

这里有个特殊的情况。如果有些Artifacts既不在本地Maven仓库,也不在远程仓库。可能在平级的目录中,比如:lib或者libs或者javalib,那么flatDir就必须被用到:

repositories {
    flatDir {
        dirs "lib", "libs", "javalib"
    }
}

如果有个Artifact既出现在flatDir中,也出现在某个仓库中,那么Gradle将会把仓库中的那个Artifact提供给Application使用。这是因为拥有meta-data(pom.xml或者ivy.xml)决定了优先被供给。但是,假如本地仓库中的Artifact也有meta-data,那么本地仓库中的会替换远程仓库的。

从远程仓库引入

远程Maven仓库

repositories {
    maven {
        url "http://repo.mycompany.com/repo/maven2"
    }
}

或者(Ivy):

repositories {
    ivy {
        url "http://repo.mycompany.com/repo"
    }
}

或者(Google):

repositories {
    maven {
        url "https://maven.google.com"
        // 或者
        url "https://dl.google.com/dl/android/maven2/"
    }
}

如果,上述仓库找不到,那么需要添加更多的仓库:

repositories {
    maven {
        url "https://repo1.maven.org/maven2"
        artifactUrls "https://repo.mycompany.com/repo1"
        artifactUrls "https://repo.mycompany.com/repo2"
    }
}

如果,远程仓库有密码验证,那么需要添加验证部分:

repositories {
    credential {
        username "user"
        password "password"
    }
    maven {
        url "https://repo1.maven.org/maven2"
        artifactUrls "https://repo.mycompany.com/repo1"
        artifactUrls "https://repo.mycompany.com/repo2"
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值