gradle和maven的区别, gradle和maven有什么区别?不知道小伙伴们今天来看看边肖的分享吧!
1.基本配置信息的差异:
Maven使用。pom文件,基于XML,gradle使用。gradle文件,基于Groovy,gradle去掉了maven中需要修复的groupId、artfactId、package等基本参数。
用Apply plugin: java、apply plugin: war来表示打包方式,还提供了一些sourceCompatibility、version等实用标签。
2、依赖管理的区别:
Gradle的jar包管理既支持maven下的Repository模式,也支持Ant的Ivy模式。因为maven的Repository已经很成熟了,所以Gradle兼容Repository非常方便。
Define the expert's repository:
mavenLocal() :maven本地库
MavenRepo urls:自定义库路径
Compile、runtime、testCompile和testRuntime分别对应项目不同阶段的依赖关系。它还简化了maven的配置命令。
Maven:
dependency
groupIdjunit/groupId
artifactIdjunit/artifactId
version4.7/version
scopetest/scope
/dependency
Gradle:
dependencies { testCompile group:junit, name: junit, version 4.11}
或者
dependencies { testCompile junit:junit:4.11 }
如果需要引用lib目录中的jar包,maven需要用scope和systemPath标记每个依赖项,或者在插件中单独添加编译路径。格雷尔只需要加上
Compile fileTree (directory: libs, including: *. Can), in multiple paths:
jarTree=fileTree(dir: libs, include: *.jar)
rootTree=new File(rootProject.rootDir, libs).getAbsolutePath()
jarTree +=fileTree(dir: rootTree, include: *.jar)
compile jarTree
在依赖相关的命令行方面,gradle与maven相似,maven常用的分析依赖命令包括:
Mvn correlation: analyze and view dependencies;
Mvn依赖关系:查看项目的直接和传递依赖关系的树;
Mvn Help: Effective -pom View Effective pom
使用gradle中的gradle dependencies查看项目中的包的依赖关系。添加-配置以查看指定阶段的依赖关系。
您还可以使用-dependency来查看指定jar的依赖项。
3、多项目管理的差异:
在实践中,经常需要管理一个以上的项目。maven使用了依赖、继承和组合的概念,在父模块中指定了自己的子模块,并准备了一些每个子模块共有的资源,比如插件、配置信息等等。
通过将打包的模块与实现特定功能的模块分开来管理多个项目。Gradle在这方面已经讲得越来越清楚了,也很容易学会gradle的多项目管理。在eclipse中安装Gradle插件后,
创建一个新的Gradle项目并选择flat-java-multiproject。生成的项目是多项目管理的一个例子。
Gradle通过settings.gradle文件指定项目的子项目。在构造的初始化阶段,
Gradle将根据settings.gradle文件判断构造中包含哪些子项目,并为每个子项目初始化一个project对象。
在构建脚本中通过project(‘:sub-project-name’)来引用子项目对应的Project对象。关于多项目配置有非常多,因此就简述一下常用的配置共享以及配置独享。
Allprojects属性,返回该Project对象以及其所有子项目。
subprojects属性,返回该Project所有子项目。
project(‘:sub-project-name’)来设置对应的子项目的配置。
configure(subprojects.findAll {it.name.contains(XXX)})来找符合要求的子项目。
在子项目的build.gradle文件里添加自己独有的配置。
4、任务机制区别:
Maven相对于ant相比仅仅通过plugin提供任务机制,相比而言自由度小而且很难扩展,每定义一个功能都需要写一个插件,Ant中使用tagret标签的echo来指定命令,
gradle使用groovy语言,自带task概念,与ant使用的build文件更加接近。一个Task表示一个逻辑上的执行单元。
Gradle编写task的方式有很多,网上也能很容易搜索到相关的例子,在此简述有关task的一些实用命令以及自己一个常用的task:
Task listJars(description: Display compile jars.) {
configurations.compile.each { File file - println file.name }
gradle和maven的区别,以上就是本文为您收集整理的gradle和maven的区别最新内容,希望能帮到您!更多相关内容欢迎关注。