目录

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 要 这么写

1
2
3
4
5
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-core</artifactId>
	<version>${spring.version}</version>
</dependency>

gradle 这么写

1
compile('org.springframework:spring-core:2.5.6')

详细的 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 流程上完全相同)

/media/img/Java/gradle_maven/wrapper-workflow.png

前提条件

  • 项目创建者系统中已经由 maven 的命令
  • 其他人没有要求,mvn 可有可无(原因之后说)

具体如何做:

  • 项目创建者执行 mvn -N io.takari:maven:wrapper -Dmaven=3.5.3
    • 此时,项目目录会生成mvnw.cmdmvnw,之后的所有操作都是基于此,也就是说,项目开发者不需要由任何依赖,除了 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
    • 。。。

注意:

  1. 当第一次执行mvnw.cmd时候,会自动下载对应版本的 Maven,maven 的$HOME/.m2/wrapper/dists/<version>/下。
  2. 初网络问题,如果出现错误,依赖包已经下好,只需要到1所说的位置去掉后缀.pack,重新运行即可。

使用dependencyManagement集中管理版本依赖

多模块项目管理方法

如何更好的使用 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 常用命令笔记

我的 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 项目后,目录结构如下: /media/img/Java/gradle_maven/dir_frame.png 之后,我们习惯使用 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 配置见此文件

资料汇总