Gradle是趋势,极简入门Gradle编译

最近由于工作的原因,从github上查看了一下Spring 5.0、ElasticSearch、Kafka的源码,不经意间发现它们的编译都是采用gradle而不是maven,gradle更是Android工程的默认编译方式。虽然项目的编译在项目的开发中只占据一小部分,但是很多程序员却经常抱怨,大部分时间都花去搞环境了,代码还没来得及写。而环境问题往往就是jar包的依赖冲突,某个类或者方法找不到等。基于现在Gradle的流行趋势,所以了解Gradle十分必要。本文用一个简单的列子,带你入门Gradle编译。

maven工程的编译常用的也就是这三点:1,如何配置maven仓库;2,如何加入依赖;3,用集成开发工具如何编译。Gradle和maven类似,常用的也就是这三个功能。下面就以Spring boot的gradle工程为例说明。

maven工程在pom.xml文件中进行依赖的管理,而gradle工程则在build.gradle中进行依赖的管理。如下是spring boot添加了Spring web、Mybaits、Junit的依赖的build.gradle的文件。

buildscript {

ext {//ext 相当于maven中的properties属性,其以key-value的形式定义属性      springBootVersion = '2.1.2.RELEASE' }

repositories { mavenCentral() }

dependencies {

classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")

    }

}

apply plugin: 'java' // 导入java 插件,Java plugin是Gradle核心API的一部分,Java plugin插件提供了一系列的任务支持构建、编译、测试Java项目。

apply plugin: 'org.springframework.boot'

apply plugin: 'io.spring.dependency-management'

group = 'com.example' //目标jar包坐标

version = '0.0.1-SNAPSHOT'

sourceCompatibility = '1.8'  //编译使用的jdk版本

repositories {mavenCentral()}

dependencies {

    implementation 'org.springframework.boot:spring-boot-starter-web'

    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.0'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'

}

    上面的代码片段中,对repositories声明了两次?为什么要申明两次,buildscript代码块中的声明与下半部分声明有什么不同?

其实答案非常简单。buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。而在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源。

mavenCentral()则表示从中央仓库获取相关依赖,如果要使用国内镜像,如阿里云。只需要将mavenCentral()改为 maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }即可。

另外从build.gradle中看到dependencies 有classpath和implementation两种方式,其区别在于classpath(),一般是添加 buildscript 本身需要运行的东西。而implementation则是工程需要依赖的第三方jar文件等。所以如果要应用一个新的jar包,只需要在maven仓库中找到jar对应的坐标,然后以implementation 的方式添加到dependencies {}即可。

最后将工程打包成jar包,只需要在intellig idea中选择Gradle assemble任务进行构建既可以在工程工作目录下获取编译好的jar包。如下图所示:

6295401-dc67876da1fe1156.png
assemble gradle工程

猜你喜欢

转载自blog.csdn.net/weixin_34026484/article/details/87252634