自从Google推出Android的集成开发环境(IDE)– Android Studio,默认集成了Gradle来进行对Android项目生命周期的管理。那我们也需要从原来的Ant转成Gradle。
对于开发工程师来说,像Gradle这样的工具,第一体验是对依赖的管理。团队里面有不少原来是使用Maven的同学,会有这样的问题:“maven的依赖管理除了最基本的坐标体系(groupId、artifactId、version、packaging)以外,还有一个scope的概念。那作为继承了maven的依赖体系的gradle,它的依赖范围又有哪些?”
那我们来看看Gradle的依赖范围(dependent scope到底有哪些)。
war插件使用的依赖范围
providedCompile
war插件提供的范围类型:与compile作用类似,但不会被添加到最终的war包中这是由于编译、测试阶段代码需要依赖此类jar包,而运行阶段容器已经提供了相应的支持,所以无需将这些文件打入到war包中了;例如Servlet API就是一个很明显的例子.
providedRuntime
同providedCompile类似,也是war插件提供的范围类型。它的范围和jar插件的runtime基本一样,。
相关说明可以看看Gradle官方文档的第26章第4节 The War Plugin
java插件使用的依赖范围
compile
编译范围依赖在所有的classpath中可用,同时它们也会被打包。
runtime
runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC驱动实现。
testCompile
测试期编译需要的附加依赖
testRuntime
测试期编译需要的附加依赖
archives
项目构件时会使用的依赖范围
default
配置默认依赖范围,用在这个项目上一个项目依赖的默认配置。包含本项目在运行时所需的构件和依赖。
相关说明可以查看Gradle官方文档的第23章第5节 The Java Plugin
其他插件的依赖范围基本上也就是这两个插件的子集了,了解了上述的依赖范围也就等于了解Gradle所有的依赖范围了。