transfer maven to gradlew

sum

公司目前的工程都是用maven 构建,自己平时也习惯使用maven 来构建项目,本文从个maven的熟悉者的角度,教你如何快熟入门gradle
,所以本文面向的是那些熟悉maven ,想快速入门gradle 的工程师

maven VS gradle

gradle改进点

maven 有哪些问题?

  • xml 语法太烦,不够简洁
  • 不够灵活(没有感觉到)
  • maven 依赖管理有槽点,依赖的多版本管理做得不好?(这个我没有太多想法)
    当然,maven 提出的生命周期还是很容易上手,工程师只要会使用这些生命周期就好,解放工程师
    gradle 针对这些问题,进行优化
  • DSL语法,简洁
  • 一开始使用Apache Ivy 来作为它的依赖管理,后面是自研

gradle maven 特性映射

构建配置文件
gradle maven
build.grade && settingg.gradle pom.xml

来看两个构建config file :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.technologyconversations</groupId>
<artifactId>java-build-tools</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
</plugin>
</plugins>
</build>
</project>

transfer to gradle

1
2
3
4
5
6
7
8
9
10
11
apply plugin: 'maven-compile-plugin'
version = '1.0'
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11' testCompile group: 'org.hamcrest', name: 'hamcrest-all', version: '1.3'
}

command

生命周期命令
  • maven 的生命周期用的命令有:
    1
    2
    3
    4
    5
    6
    mvn clean
    mvn compile
    mvn test
    mvn package
    mvn install
    mvn deploy

常用参数

1
-Dmaven.test.skip=true # skip test

  • gradle 的”生命周期” 是通过task来设定的,gradel 设定了一些常用的task
    1
    2
    3
    4
    5
    6
    gradle clean
    gradle build
    gradle jar
    gradle install
    gradle tasks
    gradle uploadArchives

工程所有的action 都可以通过 gradle tasks来查看

辅助性的命令

由于gradle 灵活的task 模式,使得构建者有很大灵活性来自定义操作

1
gradle task <self-define-taskname>

  • dependency 排查
    1
    2
    mvn dependency:tree
    gralde [:sub-modle-name:] dependencies

gradle 特有的一些概念

  • ./gradlew ,脚本,初次执行脚本时,会下载gradle 的可执行文件到本地,本地安装了gradle ,就可以不使用./gradlew 脚本来执行gradle 命令

gradle 进阶

这个先不展开来说, 大概提几个点