Gradle简介及与Maven项目的互相转化

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 Gradle简介及与Maven项目的互相转化,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

简单介绍

下一代Maven。Gradle安装和Maven的安装类似,下载文件,解压设置GRADLE_HOME即可。

project & task

build.gradle类似于pom.xml,一个示例build.gradle文件:

// 声明插件
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'
// 指定mainClass
mainClassName = 'hello.HelloWorld'
// 指定仓库
repositories {
    mavenLocal()
    mavenCentral()
}
// 指定构建物及版本
jar {
    baseName = 'gs-gradle'
    version =  '0.1.0'
}
// 指定依赖, 类似Maven GAV
dependencies {
    compile "joda-time:joda-time:2.2"
}
// wrapper
task wrapper(type: Wrapper) {
    gradleVersion = '1.11'
}

Gradle 里的几乎任何东西都是基于两个基础概念:project & task。Gradle 中所有执行的事件都是借由 Task 执行的。对于一个Gradle工程,根目录执行:gradle tasks -q-q表示忽略gradle本身的log信息,加上这个参数可以屏蔽很多无关的输出。
通常会给task附带一些执行动作,称之为Action。
也可以附带一个闭包配置,称之为Configuration,闭包中不仅可用做赋值操作,也可以执行一些自动执行的配置。
Task依赖。

task xxx << {
}

这样的语法等价于

task xxx
xxx.dolast {
}

关于project:
目录:
重要文件:
setting.gradle文件

一个父工程 project 可以包含多个子工程 child-project,一般一个工程一个 build.gradle 文件。父工程的 build.gradle 统一管理子工程的build.gradle。

Gradle Wrapper

Gradle wrapper automatically generates several files for you that helps to allow people to build your code without needing to install Gradle ahead of time, which is useful especially when needing to do continuous integration testing.
By checking in the gradlew and gradlew.bat files into your source code repository, other people on Unix and Windows platforms do not need to go through the process of manually downloading Gradle or installing Android Studio.

Gradle的封装。有了Gradle wrapper,即便机器上没有安装Gradle,也可执行Gradle的构建工作。

build.gradle里加入类似如下task:

task createWrapper(type: Wrapper) {
    gradleVersion = '1.1.1'
}

生成gradle wrapper时指定项目所需要用的gradle版本,这样当别人用gradle wrapper时,然后执行该task: gradle createWrapper,就会在项目工程生成以下的文件:

Project-name/
  gradlew
  gradlew.bat
  gradle/wrapper/
    gradle-wrapper.jar
    gradle-wrapper.properties

这些文件即构成gradle wrapper。这些文件需要上传到版本控制工具的server端(如GitLab)。生成这些文件的操作只需要做一次即可。

使用gradle wrapper时,直接在项目根目录下直接执行gradlewgradle wrapper简写), 方式和gradle一模一样,如通过“。执行gradlew命令时,gradlew会委托gradle命令来做相应的事情,gradlew只是一个壳。wrapper会检查当前机器是否已经安装对应版本的gradle,如果安装,gradlew就会委托gradle执行用户输入的命令。如果未安装,则自动从Gradle repository下载并安装在本地~/.gradle/wrapper目录。也可以在配置文件中指定想要下载的server来替代默认的Gradle repo。

Gradle会自动为新建的工程添加wrapper。也就是你就不必自己再去创建gradle wrapper,直接在命令行或者你的编译脚本中使用就好。
常用命令:

gradlew -v // 版本号
gradlew clean // 清除build文件夹
gradlew build // 检查依赖并编译打包
gradlew tasks // 查看所有任务
gradlew assembleDebug // 编译并打Debug包
gradlew assembleRelease // 编译并打Release的包
gradlew installRelease // Release模式打包并安装
gradlew uninstallRelease // 卸载Release模式包

gradlew build,把debug、release环境的包都打出来,如果正式发布只需要打Release的包。

Gardle v.s. Maven

优势

  • 基于 groovy 的简洁语法;
  • groovy task 比 maven plugin 灵活方便;

互相转化

gradle –> maven

把gradle转成maven项目,前提是gradle项目目录结构保持跟maven一样的约定,即/src/main/java
build.gradle中增加以下内容(group,version可自行修改,artifactId默认为目录名称)

apply plugin: 'java'
apply plugin: 'maven'

group = 'com.johnny'
version = '1.7'
sourceCompatibility = 1.8

执行gradle install,成功后将在build\poms目录下生成pom-default.xml文件,复制到根目录下,改名成pom.xml即可。通过修改build.gradle也可以直接在根目录下生成pom.xml

task writeNewPom << {
    pom {
        project {
            inceptionYear '2018'
            licenses {
                license {
                }
            }
        }
    }.writeTo("$buildDir/pom.xml")
}

maven –> gradle

安装gradle 2.0以上的版本,在maven根目录下运行:gradle init --type pom

参考

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142379.html

(1)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!