做阿里巴巴怎么进公司网站,建盏世家直播,修改WordPress网站,电影网站建设需求分析相信使用Java的同学都用过Maven#xff0c;这是一个非常经典好用的项目构建工具。但是如果你经常使用Maven#xff0c;可能会发现Maven有一些地方用的让人不太舒服#xff1a;Maven的配置文件是XML格式的#xff0c;假如你的项目依赖的包比较多#xff0c;那么XML文件就会… 相信使用Java的同学都用过Maven这是一个非常经典好用的项目构建工具。但是如果你经常使用Maven可能会发现Maven有一些地方用的让人不太舒服Maven的配置文件是XML格式的假如你的项目依赖的包比较多那么XML文件就会变得非常非常长XML文件不太灵活假如你需要在构建过程中添加一些自定义逻辑搞起来非常麻烦Maven非常的稳定但是相对的就是对新版java支持不足哪怕就是为了编译java11也需要更新内置的Maven插件。如果你对Maven的这些缺点也有所感触准备尝试其他的构建工具那么你可以试试gradle这是一个全新的java构建工具解决了Maven的一些痛点。一、安装Gradle最传统的安装方法就是去gradle官网下载二进制包解压然后将路径添加到环境变量中。如果你没什么其他需求可以使用这种安装方式。但是gradle是一个非常新潮的项目每隔几个月就会发布一个新版本这种方式可能跟不上gradle的更新速度。所以我更加推荐使用包管理器来安装gradle。如果你使用linux系统那么不必多说。如果你使用Windows系统我推荐使用scoop包管理器来安装gradle。它安装方便而且使用SHIM目录来管理环境变量在各种工具中配置gradle也很方便。当然如果你完全不喜欢安装这么多乱七八糟的东西那也可以使用gradle。gradle提供了一个名为gradle wrapper的工具可以在没有安装gradle的情况下使用gradle。好吧其实它就是个脚本文件当你运行wrapper脚本的时候如果脚本发现你电脑里没有gradle就会自动替你下载安装一个。现在甚至还出现了Maven wrapper也是个脚本文件可以自动安装Maven。之前相信一些朋友听说过gradle然后尝试使用它结果因为速度太慢最后放弃了。之前我也因为gradle的速度放弃了它一段时间。不过现在使用gradle的话会方便很多。gradle官方在中国开设了CDN使用gradle wrapper的时候下载速度非常快。可以说现在是一个学习使用gradle的好时候。二、使用gradle wrapper这里我使用的IDEA来创建和使用gradle项目。IDEA默认就会使用gradle wrapper来创建项目所以无需安装gradle也可以正常运行。这时候项目结构应该类似下图所示使用Maven的同学应该比较熟悉因为这和Maven的项目结构几乎完全一致。gradle文件夹和gradlew那几个文件就是gradle wrapper的文件而.gradle后缀名的文件正是gradle的配置文件对应于Maven的pom.xml。gradle wrapper的优点之一就是可以自定义下载的gradle的版本如果是团队协作的话这个功能就非常方便简单设置即可统一团队的构建工具版本。这里我就设定成目前最新的gradle 6.4.默认下载安装的是bin版仅包含二进制。如果你使用IDEA的话它会推荐下载all版包含源代码这样IDEA就可以分析源代码提供更加精确的gradle脚本支持。三、依赖管理下面来看看gradle的依赖管理功能这也算是我们使用构建工具的主要目的之一了。这点也是gradle相较maven的优势之一了。相较于maven一大串的XML配置gradle的依赖项仅需一行。dependencies {testImplementation junit:junit:4.13implementation com.google.code.gson:gson:2.8.6
}
这里推荐一下Jetbrains的package search网站是寻找maven和gradle依赖包的最佳网站可以非常轻松的搜索和使用依赖项。gradle依赖的粒度控制相较于Maven也更加精细maven只有compile、provided、test、runtime四种scope而gradle有以下几种scope1.implementation默认的scope。implementation的作用域会让依赖在编译和运行时均包含在内但是不会暴露在类库使用者的编译时。举例如果我们的类库包含了gson那么其他人使用我们的类库时编译时不会出现gson的依赖。2.api和implementation类似都是编译和运行时都可见的依赖。但是api允许我们将自己类库的依赖暴露给我们类库的使用者。3.compileOnly和runtimeOnly这两种顾名思义一种只在编译时可见一种只在运行时可见。而runtimeOnly和Maven的provided比较接近。4.testImplementation这种依赖在测试编译时和运行时可见类似于Maven的test作用域。5.testCompileOnly和testRuntimeOnly这两种类似于compileOnly和runtimeOnly但是作用于测试编译时和运行时。通过简短精悍的依赖配置和多种多样的作用与选择Gradle可以为我们提供比Maven更加优秀的依赖管理功能。四、gradle的任务和插件gradle的配置文件是一个groovy脚本文件在其中我们可以以编程方式自定义一些构建任务。因为使用了编程方式所以这带给了我们极大的灵活性和便捷性。打个比方现在有个需求要在打包出jar的时候顺便看看jar文件的大小。在gradle中仅需在构建脚本中编写几行代码即可。而在Maven中则需要编写Maven插件复杂程度完全不在一个水平。当然Maven发展到现在已经存在了大量的插件提供了各式各样的功能可以使用。但是在灵活性方面还是无法和Gradle相比。而且Gradle也有插件功能现在发展也十分迅猛存在了大量非常好用的插件例如gretty插件。gretty原来是社区插件后来被官方吸收为官方插件可以在Tomcat和jetty服务器上运行web项目比Maven的相关插件功能都强大。虽然gradle可以非常灵活的编写自定义脚本任务但是其实一般情况下我们不需要编写构建脚本利用现有的插件和任务即可完成相关功能。在IDEA里也可以轻松的查看当前gradle项目中有多少任务基本任务如build、test等Maven和Gradle都是相通的。五、配置镜像Maven官方仓库的下载速度非常慢所以一般我们要配置国内的镜像源。gradle在这方面和Maven完全兼容因此只需稍微配置一下镜像源即可使用Maven的镜像。如果你用gradle构建过项目应该就可以在用户目录的.gradle文件夹下看到gradle的相关配置和缓存。之前wrapper下载的gradle也存放在该文件夹下位置是wrapper/dists。而依赖的本地缓存在caches\modules-2\files-2.1文件夹下。目录结构和Maven的本地缓存类似都是包名版本号的方式但是gradle的目录结构最后一层和Maven不同这导致它们无法共用本地缓存。言归正传在gradle中配置下载镜像需要在.gradle文件夹中直接新建一个init.gradle初始化脚本脚本文件内容如下。这样一来gradle下载镜像的时候就会使用这里配置的镜像源下载速度会快很多。再加上gradle wrapper在中国设置了CDN现在使用gradle的速度应该会很快。allprojects {repositories {maven {url https://maven.aliyun.com/repository/public}maven {url https://maven.aliyun.com/repository/jcenter}maven {url https://maven.aliyun.com/repository/spring}maven {url https://maven.aliyun.com/repository/spring-plugin}maven {url https://maven.aliyun.com/repository/gradle-plugin}maven {url https://maven.aliyun.com/repository/google}maven {url https://maven.aliyun.com/repository/grails-core}maven {url https://maven.aliyun.com/repository/apache-snapshots}}
}
当然如果你有代理的话其实我推荐你直接为gradle设置全局代理。因为gradle脚本实在是太灵活了有些脚本中可能依赖了github或者其他地方的远程脚本。这时候上面设置的下载镜像源就不管用了。所以有条件还是干脆直接使用全局代理比较好。设置方式很简单在.gradle文件夹中新建gradle.properties文件内容如下。中间几行即是设置代理的配置项。当然其他几行我也建议你设置一下把gradle运行时的文件编码设置为UTF8增加跨平台兼容性。org.gradle.jvmargs-Xmx4g -XX:MaxPermSize512m -XX:HeapDumpOnOutOfMemoryError -Dfile.encodingUTF-8
systemProp.http.proxyHost127.0.0.1
systemProp.http.proxyPort10800
systemProp.https.proxyHost127.0.0.1
systemProp.https.proxyPort10800
systemProp.file.encodingUTF-8
org.gradle.warning.modeall
六、为什么使用gradle看到这里你应该对gradle有了基本的了解 也可以将其用于你的项目之中。但是如果你Maven已经非常熟悉了可能不太愿意使用gradle因为貌似没有必要。但是既然gradle出现了就说明有很多人对Maven还是有一定的意见。因此在这里我来总结一下gradle相比maven的优势。1.速度gradle使用构建缓存、守护进程等方式提高编译速度。结果就是gradle的编译速度要远超maven平均编译速度比Maven快好几倍而且项目越大这个差距就越明显。2.灵活性gradle要比Maven灵活太多虽然有时候灵活并不是一件好事情。但是大部分情况下灵活一点可以极大的方便我们。Maven死板的XML文件方式做起事情来非常麻烦。很多Maven项目都通过执行外部脚本的方式来完成一些需要灵活性的工作。而在gradle中配置文件就是构建脚本构建脚本就是编程语言groovy编程语言完全可以自给自足无需外部脚本。3.简洁性完成同样的功能gradle脚本的长度要远远短于maven配置文件的长度。虽然很多人都说XML维护起来不麻烦但是我觉得维护一个光是依赖就有几百行的XML文件不见得就比gradle脚本简单。也许是因为我上面说的原因也许有其他原因不得不承认的一件事情就是gradle作为一个新兴的工具已经有了广泛的应用。spring等项目已经从Maven切换到了gradle。开发安卓程序也只支持gradle了。因此不管是否现在需要将项目从maven切换到gradle但是至少学习gradle是一件必要的事情。 最后你在用maven还是gradle呢你觉得那个更好用欢迎评论区留言互动~作者乐百川来源toutiao.com/i6824937779193971207往期推荐
List 集合去重的 3 种方法磊哥最近面试了好多人聊聊我的感受(附面试知识点)关注下方二维码每一天都有干货