gradle--依赖(四)

4. 依赖

几乎每个Java项目都会用到开源框架。同时,对于具有多个子模块的项目来说,项目之间也会有所依赖。所以,管理项目中对开源框架和其他模块的依赖是每个项目必须面对的问题。同时,Gradle也使用Repository来管理依赖。

 

4.1 Jar包依赖管理

Maven提出了使用Repository来管理Jar包,Ant也提供了使用Ivy来管理jar包。Gradle提供了对所有这些Respository的支持,可以从Gradle的官方文档上了解更详细的信息。

Gradle沿用Maven的依赖管理方法,通过groupId、name和version到配置的Repository里寻找指定的Jar包。同样,它也提供了和Maven一样的构建生命周期,compile、runtime、testCompile和testRuntime分别对应项目不同阶段的依赖。通过如下方式为构建脚本指定依赖:

dependencies {
    compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
    testCompile group:'junit', name: 'junit', version '4.11'
}

这里分别指定group、name以及version,但是Gradle提供了一种更简单的方式来指定依赖:

dependencies {
    compile 'org.hibernate:hibernate-core:3.6.7.Final'
    testCompile 'junit:junit:4.11'
}

这样比Maven使用XML来管理依赖简单多了,但是还可以更简单一点。实际上这里的compile和testCompile是Groovy为Gradle提供的方法,可以为其传入多个参数,所以当compile有多个Jar包依赖的时候,可以同时指定到compile里去,代码如下:

compile(
	       'org.hibernate:hibernate-core:3.6.7.Final',
            'org.springframework:spring-context:3.1.4.RELEASE'
)

另外,当在Respository无法找到Jar包时(如数据库的driver),就可以将这些Jar包放在项目的一个子目录中,然后让项目管理依赖。例如,我们可以在项目的根目录下创建一个lib文件夹,用以存放这些Jar包。使用如下代码可以将其添加到项目依赖中:

dependencies {
    compile(
	       'org.hibernate:hibernate-core:3.6.7.Final',
            'org.springframework:spring-context:3.1.4.RELEASE',
	       fileTree(dir: "${rootProject.projectDir}/lib", include: '*.jar')
)
}

4.2 子项目之间的依赖

对于多模块的项目,项目中的某些模块需要依赖于其他模块,前面提到在初始化阶段,Gradle为每个模块都创建了一个Project对象,并且可以通过模块的名字引用到该对象。在配置模块之间的依赖时,使用这种方式可以告诉Gradle当前模块依赖了哪些子模块。例如,在我们的项目中,cis-war会依赖core子项目,就可以在cis-war的构建脚本中加上如下代码:

dependencies {
    compile(
	       'org.hibernate:hibernate-core:3.6.7.Final',
             project(':core')
)
}

通过project(':core')来引用core子项目,在构建cis-war时,Gradle会把core加到ClassPath中。

4.3 构建脚本的依赖

除了项目需要依赖之外,构建脚本本身也可以有自己的依赖。当使用一个非Gradle官方提供的插件时,就需要在构建脚本里指定其依赖,当然还需要指定该插件的Repository。在Gradle中,使用buildscript块为构建脚本配置依赖。

比如在项目中使用cucumber-JVM作为项目BDD工具,而Gradle官方没有提供它的插件,好在开源社区有人提供cucumber的插件。在构建脚本中添加如下代码:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "gradle-cucumber-plugin:gradle-cucumber-plugin:0.2"
    }
}
apply plugin: com.excella.gradle.cucumber.CucumberPlugin

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值