Gradle和Maven使用方法总结
文章简介:
1.总结 gradle 和 maven 正确使用方法
2.开箱即用 maven&gradle 同时支持的项目配置。
Gradle 和 Maven 使用起来都比较方便,而 Gradle 使用更灵活,配置更方便。而公司环境一般使用 Maven。因此就有了取舍,是迁移到 Gradle,还是继续使用 Maven?其实不需要纠结,谁说必须取舍的,两个都用起来就是了!!!
说在前面
Gradle 和 Maven 都是项目自动构建工具,编译源代码只是整个过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构建分布、分析代码质量、甚至为不同目标环境提供不同版本,然后部署。整个过程进行自动化操作是很有必要的。
整个过程可以分成以下几个步骤:
- 编译源代码
- 运行单元测试和集成测试
- 执行静态代码分析、生成分析报告
- 创建发布版本
- 部署到目标环境
- 部署传递过程
- 执行冒烟测试和自动功能测试
两者都是项目工具,但是 maven 使用的最多,Gradle 是后起之秀,想 spring 等都是使用 gradle 构建的。Gradle 抛弃了 Maven 的基于 XML 的繁琐配置,采用了领域特定语言 Groovy 的配置,大大简化了构建代码的行数。
比如 maven 要 这么写
|
|
gradle 这么写
|
|
详细的 Gradle 和 Maven 比较看这里讲的很好了。gradle 官方也对两个工具进行了比较。
我们可以使用其中一个,或者两个一起使用!!!这是可行的,当然前提是,有一个人在整个过程中维护相同功能的两份配置。实际上并不难。抽一个周末空余时间,自己把这两个都熟悉了一下,整理了一套 Gradle&Maven 日常开发中常用的包和插件的集合,作为项目的开始。比较通用,所以需要根据公司或个人项目实际情况加入私服的配置,以及你想使用的jar 包,如此简单。如果使用过程中遇到什么问题,请联系我。别忘了,帮我 star 一下。
接下来涉及到的内容:
- maven 正确使用方法
- gradle 正确使用方法
- gradle 项目和 maven 项目相互转化
- 一个项目同时支持 maven 和 gradle 配置:一个好的开始
maven 正确使用方法
maven 版本不相同问题
我们大部分时候使用 IDE 进行项目开发的时候,大部分时候会直接使用 IDE 创建 MAVEN 项目,这是正确的。可是,您有没有发现,大家合作的时候,由于 maven 版本不相同,哪怕是 3.5.1 和 3.5.2 的区别,都会引发一场血案!我的可以正常打开项目,而其他人却会出现问题。除了 IDE 下载包损坏外,就是 maven 的版本不相同。其实通过一些工具,已经可以让这种情况不在发生,那就是Wrapper。请看如下图(图没配错,maven 的 wrapper 和 gradle 的 wrapper 流程上完全相同)
前提条件:
- 项目创建者系统中已经由 maven 的命令
- 其他人没有要求,mvn 可有可无(原因之后说)
具体如何做:
- 项目创建者执行
mvn -N io.takari:maven:wrapper -Dmaven=3.5.3
- 此时,项目目录会生成
mvnw.cmd
和mvnw
,之后的所有操作都是基于此,也就是说,项目开发者不需要由任何依赖,除了 jdk-_!!!
- 此时,项目目录会生成
- 项目创建者执行
mvnw archetype:generate
- 此步是自动生成项目目录结构。同时,项目管理者需要搭建好基础的代码框架。之后可以开发了
- 项目开发者
mvnw.cmd compiler:compile
mvnw.cmd exec:java -Dexec.mainClass="org.exfly.LombokL.LombokLApplication" -q
mvn.cmd clean
mvn.cmd test
- 。。。
注意:
- 当第一次执行
mvnw.cmd
时候,会自动下载对应版本的 Maven,maven 的$HOME/.m2/wrapper/dists/<version>/
下。 - 初网络问题,如果出现错误,依赖包已经下好,只需要到
1
所说的位置去掉后缀.pack,重新运行即可。
使用dependencyManagement集中管理版本依赖
- dependencyManagement这里已经很好的解释如何做。同时可以借鉴 springboot-parent
多模块项目管理方法
- 多模块项目的 POM 重构
- 通过 parent 的方式,将多模块依赖集中管理,
如何更好的使用 maven 进行项目管理 几点建议
- 尽量使用 wapper 多
- 使用dependencyManagement集中管理版本依赖
- bin 下有 mvn 和 mvnDebug(运行 mvn 时开始 debug)
- M2_HOME maven 主程序的安装目录
- ~/.m2 本地包下载位置
- http 代理
- setting.xml 中的 proxies
- MAVEN_OPTS
- 运行 mvn 时候相当于运行 java 命令,MAVEN_OPTS 可以配置为任何 java 的命令参数
- 设置 MAVEN_OPTS 环境变量
- 配置用户范围 settings.xml
- %M2_HOME%/conf/settings.xml 为全局配置文件
- ~/.m2/settings.xml 为用户配置文件
- 不要使用 IDE 内嵌的 Maven,应该配置 IDE 中为自己安装的 maven
- 显示声明所有用到的依赖
我的 maven 常用命令笔记
gradle 正确使用方法
理由同上节,直接说使用方法。可以对照我的笔记查看。
- gradle init –type java-library
- 这里自动生成 gradlew,并创建项目目录结构
- 之后所有命令使用 gradlew 即可
gradle 项目和 maven 项目相互转化
gradle 和 maven 可以相互转化,意味着,我们可以使用 gradle 为主的开发,之后导出为 maven 项目,供生产环境使用。前提,你足够了解 gradle 和 maven。
maven -> gradle
- cd /path/to/mavenproject
- gradle init
- gradle wrapper
gradle -> maven
- cd /path/to/gradleproject
- gradlew install
将项目转换为 maven 和 gradle 项目后,目录结构如下: 之后,我们习惯使用 mavnw 或者 gradlew,都可以。如此,做到了共存。
一个项目同时支持 maven 和 gradle 配置:一个好的开始
抽时间,做了常用 jar 包和插件整合包,一个项目同时支持 maven 和 gradle。
共同的依赖:
- 内容包括: 日志、通用工具库、单元测试、代码质量度量、文档生成等
- jar: slf4j、logback、lombok、guava、junit、mockito
配置中整合的工具:
- 代码质量分析报告工具:pmd、findbugs、checkstyle、jdepend
- 单元测试报告工具、javadoc、依赖管理、项目信息汇总等可视化信息
maven 具体内容
- maven-compiler-plugin、maven-javadoc-plugin、cobertura-maven-plugin、maven-checkstyle-plugin、findbugs-maven-plugin、maven-pmd-plugin、jdepend-maven-plugin、maven-jar-plugin、maven-surefire-plugin、maven-surefire-report-plugin
gradle 具体内容
- java、maven、checkstyle、pmd、findbugs、jdepend、eclipse、idea、javadoc
首先 maven 配置见此文件
其次 gradle 配置见此文件