序言
基于官网整理下Gradle的使用.使用过maven的话会很容易掌握,多用一段时间就熟悉了.
另外很多的参数信息配置都是基于插件的,你引用不同的插件就会有不同的参数设置.其实最多的工作量就是根据插件来配置参数信息cuiyaonan2000@163.com
官网地址:https://www.w3cschool.cn/gradle/3miy1htt.html
gradle的构建过程中的几个关键词:
- project : gradle的目标结果就是project,project在java中对应jar,war
- task: task即字面意思任务,构建project为jar即为一个task
- plugin: 即task的实际执行者.插件就是 Gradle 的扩展,简而言之就是为你添加一些非常有用的默认配置。Gradle 自带了很多插件,并且你也可以很容易的编写和分享自己的插件.
-
运行 gradle 必须将 GRADLE_HOME/bin 加入到你的 PATH 环境变量中。
- Gradle 运行时的 JVM 参数可以通过 GRADLE_OPTS 或 JAVA_OPTS 来设置.这些参数将会同时生效。 JAVA_OPTS 设置的参数将会同其它 JAVA 应用共享,一个典型的例子是可以在 JAVA_OPTS 中设置代理和 GRADLE_OPTS 设置内存参数。同时这些参数也可以在 gradle 或者 gradlew 脚本文件的开头进行设置。
- gradle -v 用来验证是否配置环境是否成功
java插件即包含了多个任务,常用的任务如下:
- build: 相当于maven的package.
- clean: 删除 build 目录以及所有构建完成的文件。
- assemble: 编译并打包 jar 文件,但不会执行单元测试。一些其他插件可能会增强这个任务的功能。例如,如果采用了 War 插件,这个任务便会为你的项目打出 War 包。
- check: 编译并测试代码。一些其他插件也可能会增强这个任务的功能。例如,如果采用了 Code-quality 插件,这个任务会额外执行 Checkstyle。
- uploadArchives : 用于上传jar,根据配置将打好的jar上传到本地仓库,或者远程仓库
build是多个任务的串序执行如下所示:
Output of gradle build
> gradle build
:compileJava
:processResources
:classes
:jar
:assemble
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build
BUILD SUCCESSFUL
Total time: 1 secs
同时java插件的构建默认的打包目录如下所示:
Gradle 默认会从 src/main/java
搜寻打包源码,在 src/test/java
下搜寻测试源码。并且 src/main/resources
下的所有文件按都会被打包,所有 src/test/resources
下的文件 都会被添加到类路径用以执行测试。所有文件都输出到 build 下,打包的文件输出到 build/libs 下。
project
+build
+src/main/java
+src/main/resources
+src/test/java
+src/test/resources
build.gradle
//引用java插件
apply plugin: 'java'
//需要打包 War 文件,需要在脚本中使用 War plugin:
apply plugin: 'war'
//引用eclipse插件
apply plugin: 'eclipse'
//设置java插件的的jdk版本
sourceCompatibility = 1.5
//如下的是为java插件设置一些属性到manifest中
version = '1.0'
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version
}
}
//设置jar包和插件拉取的仓库,如下的是默认maven的中央仓库
repositories {
//默认maven的中央仓库
mavenCentral()
//引用私有的maven仓库
maven {
url "http://repo.mycompany.com/maven2"
}
//设置本地的仓库
ivy { // URL can refer to a local directory
url "../local-repo"
}
}
//这里添加工程需要的jar和对应的版本.
dependencies {
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
testCompile group: 'junit', name: 'junit', version: '4.+'
//如下标识引入Hibernate-core.3.6.7.final.jar
compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
//同时也可以简写成如下的格式
compile 'org.hibernate:hibernate-core:3.6.7.Final'
}
//这里是系统属性,具体怎么用还带继续查看
test {
systemProperties 'property': 'value'
}
//将该工程发布到本地的仓库
uploadArchives {
repositories {
flatDir {
dirs 'repos'
}
}
}
//将该工程发布到ivh仓库
uploadArchives {
repositories {
ivy {
credentials {
username "username"
password "pw"
}
url "http://repo.mycompany.com"
}
}
}
//将该工程发布到maven仓库
//发布到 Maven 仓库你需要 Maven 插件的支持
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file://localhost/tmp/myRepo/")
}
}
}
//如果该工程是个工程集合,子工程可以的一些共有信息可以写在父级工程的 build.gradle
//如下表示子工程的内容设置地方
subprojects {
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
repositories {
mavenCentral()
}
dependencies {
testCompile 'junit:junit:4.11'
}
version = '1.0'
jar {
manifest.attributes provider: 'gradle'
}
}
dependencies 应用的jar包可选择作用生效的阶段
- compile: 编译范围依赖在所有的 classpath 中可用,同时它们也会被打包
- runtime: runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要 JDBC API JAR,而只有在运行的时候才需要 JDBC 驱动实现
- testCompile: 测试期编译需要的附加依赖
- testRuntime: 测试运行期需要
该文件主要用于构建多个包的层级设置,即标识该工程中包含了多个少个子工程.
//标识该目录下有4个工程分别是 shared,api,service:webservice,service:shared
include "shared", "api", "services:webservice", "services:shared"