Gradle 依赖管理



Gradle 和 Maven 一样可以实现依赖管理,不过 Maven 是使用 xml 文件来管理依赖,Gradle 是使用 gradle 文件(实际上为groovy脚本)来管理依赖,这使得配置过程更加灵活简便,Gradle可以使用 Maven 中央仓库,也可以使用 Apache-Ivy 仓库及其他私有库;



一个简单的依赖脚本如下:

build.gradle 

 

 
   
 
          
        
 
        

             1 
           
 
          
apply plugin: 'java'   //添加java插件 
         

             2 
           
 
          
sourceCompatibility = 1.8    //插件版本 
         

             3 
           
 
          
 
         

             4 
           
 
          
//添加仓库 
         

             5 
           
 
          
repositories { 
         

             6 
           
 
          
mavenCentral() 
         

             7 
           
 
          
} 
         

             8 
           
 
          
 
         

             9 
           
 
          
//添加依赖 
         

             10 
           
 
          
dependencies { 
         

             11 
           
 
          
compile group: 'commons-collections', name: 'commons-collections', version: '3.2' 
         

             12 
           
 
          
compile group: 'org.apache.commons', name: 'commons-io', version: '1.3.2' 
         

             13 
           
 
          
testCompile group: 'junit', name: 'junit', version: '4.12' 
         

             14 
           
 
          
} 
         

             15 
           
 
          
 

  如果是在IDEA下使用的依赖脚本,在添加了新的依赖后,只要点击右边Gradle面板的更新按钮,就可以自动下载依赖库,不用命令行手动运行脚本; 

 

 

 
添加/更换仓库
 
 
 
 
 
 使用 Maven 中央仓库 

 

  使用 maven 中央仓库的配置如下: 

 

 
   
       

            1 
          
 
         
repositories { 
        

            2 
          
 
         
mavenCentral() 
        

            3 
          
 
         
} 
 
 
 
 
 使用 Maven 第三方仓库 

 

  可以通过以下添加第三方 Maven 仓库; 

 

 
   
       

            1 
          
 
         
repositories { 
        

            2 
          
 
         
maven { url "第三方maven仓库的URL地址" } 
        

            3 
          
 
         
} 
在国内不开 VPN 直接使用 Maven中央仓库下载依赖包的速度是很慢的,可以使用国内的阿里云 maven 仓库提高下载速度,如下: 
 
 

 
    
        

             1 
           
 
          
repositories { 
         

             2 
           
 
          
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/' } 
         

             3 
           
 
          
} 

 
使用本地 Maven 仓库
 
在本地安装配置了Maven之后,默认情况下,本地的Maven仓库位于【 USER_HOME/.m2/repository】 目录下,当然也可以自己修改本地 maven 仓库地址; 
使用本地仓库配置如下:
 

 
   
       

            1 
          
 
         
repositories { 
        

            2 
          
 
         
mavenLocal() 
        

            3 
          
 
         
} 

 

 
添加依赖
 
 
 添加外部依赖 

 

  添加外部依赖的配置都包含在一个 dependencies 节点中,外部依赖包含 "group","name","version" 几个属性,其中"name"属性为必填属性,"group","version" 为可选属性,配置格式如下: 

 

 
   
       

            1 
          
 
         
dependencies { 
        

            2 
          
 
         
compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final' 
        

            3 
          
 
         
} 

  也可以使用以下更加简短的配置方式: 
 
 

 
    
        

             1 
           
 
          
dependencies { 
         

             2 
           
 
          
compile 'org.hibernate:hibernate-core:3.6.7.Final' 
         

             3 
           
 
          
} 
 
 
 

  其中"complie" 为依赖配置,使用不同的插件有不同的依赖的配置,以Java插件为例,包含以下可选的依赖配置 

 
compile
编译范围依赖在所有的 classpath 中可用,同时它们也会被打包
runtime
runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如在编译的时候只需要 JDBC API JAR,而只有在运行的时候才需要 JDBC 驱动实现
testCompile
测试期编译需要的附加依赖
testRuntime
测试运行期需要 
 

  不同的依赖配置要根据需求进行选择,如以下一个示例: 

 

 
   
       

            1 
          
 
         
dependencies { 
        

            2 
          
 
         
compile 'org.apache.commons:commons-io:1.3.2'     //commons-io,编译期需要 
        

            3 
          
 
         
runtime 'mysql:mysql-connector-java:8.0.7-dmr'    //mysql-jdbc驱动,运行期需要 
        

            4 
          
 
         
testCompile 'junit:junit:4.12'                    //junit,测试时编译期需要 
        

            5 
          
 
         
} 
 
 
 
 
 添加本地 Jar 包依赖 

 

  当外部仓库不存在一些类库是,可以本地手动导入jar包,可以工程根目录下创建一个 lib 目录用于存放本地类库,将需要加载的 jar 包都放置在该 jar 包中,配置如下: 

 

 
   
       

            1 
          
 
         
dependencies { 
        

            2 
          
 
         
compile files('lib/FileUtils.jar') 
        

            3 
          
 
         
} 

  当然也可以将 lib 下的 jar 包批量导入,不同手动一个个包导入,如下: 

 

 
  

            1 
          
 
         
dependencies { 
        

            2 
          
 
         
compile fileTree(dir:'lib',include:['*.jar']) 
        

            3 
          
 
         
}