Gradle - build.gradle常用用法

最近一直在用Gradle来构建java应用,但是对于Gradle文件的写法不是很了解,一直都是跟度娘进行沟通。现在正好总结一下项目中用到的一些用法。

1. 引入插件包

一个项目中只放置一个build.gradle,build.gradle可以理解为一个Project框架,提供了对一个项目的基本配置。如果需要执行更过的task,比如对java进行编译、打包、部署、移动等操作,就需要引入相应的插件,或者自己写脚本。一般情况下,都是引入插件,然后再指定自己的task,这样减少很多的代码量,提高效率。

apply from: 'dependency.gradle'  // 加载本地插件

apply plugin: 'java'             // 加载java插件
apply plugin: 'eclipse'
apply plugin: 'base' 

加载了相应的插件后,在gradle task中就会显示插件提供的方法。

一般java项目都会加载 java , base 两个插件,我用的是eclipse,所以也将eclipse插件引进来了。

2. 设置工程 source 目录

// 设置sourceSets,只是project的属性
sourceSets {
    // 设置main source, 打包需要用到的资源
    main {
        java{
            srcDirs = ['src/main/java']
        }

        resources {
            srcDirs = ["src/main/resources", "config"]  // 我在这里多加了一个 config 包
        }
    }
    // 设置test source, 单元测试所需的资源
    test {

        java{
            srcDirs = ['src/test/java']
        }

        resources {
            srcDirs = ['src/test/resources']
        }
    }
}

一般java项目的默认source都跟上面相同,只是我多加了一个source包:config。

** 一定要记住哦,source路径 是不计算在 package包路径中的。

3. Project中常用的属性配置

version = 1.0                                 // 项目版本(全局的)
sourceCompatibility = 1.8                     // source使用的jdk版本
targetCompatibility = 1.8                     // 编译时使用的jdk版本
compileJava.options.encoding = 'UTF-8'        // 
compileTestJava.options.encoding = 'UTF-8'    //

4. 打jar包并复制

// 定义一个task, 继承自 jar task, 并依赖于 compileJava task
task assembleProject1Jar(type: Jar, dependsOn:[compileJava]) {
    onlyIf { !sourceSets.main.allSource.files.isEmpty() }
    // 打包后的jar基本名
    baseName 'project1'
    // version
    version ''
    
    // 选择编译后的class进行打包
    from ('build/classes/java/main/')
    include (['priv/allen/common/entity/*.class',
              'priv/allen/common/controller/*.class',
              'priv/allen/common/service/*.class',
              'priv/allen/common/dao/*.class']) 
    
    // 打包后的操作
    doLast {
    	copy {
    		from('build/libs') {
				include baseName + version + '.jar'
			}
            // 将打好的jar包复制到 workspace 中的另一个工程下
			into('../Project2/lib')
    	}
    }       		      
}

5. 在task执行后做一些操作

clean.doLast {
    if (file('target').exists()) {
        file('target').deleteDir()        
    } 
}

如果需要在 clean 操作后面添加一些额外的操作,可以采用 doLast 语法。

6. gradle中的常用属性可以写在gradle.properties中

一个gradle文件中的属性有很多,比如 jdk版本,编码类型,dependency 版本。如果都放在 build.gradle 中势必不好管理哦(经验哦),那么gradle默认提供了一个 gradle.properties 文件。用这个文件来管理所有的属性在合适不过了,下面就来试试哦!

gradle.properties:

jdkVersion= 1.8
encodingType= UTF-8
configFile = config.gradle

## --- group id, artifact id, version   ----- 
GroupId = priv.allen.sso
projectVersion = 1.0

springBootVersion = 2.0.3.RELEASE

我们将一些常用的属性都定义在了上面这个文件中,那么在gradle脚本中就可以直接使用了,看代码:

build.gradle:

apply from: "${configFile}"    // 引用了另一个配置文件
apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'base'
apply plugin: 'eclipse'
apply plugin: 'maven'
apply plugin: 'maven-publish'

sourceCompatibility = jdkVersion
targetCompatibility = jdkVersion
compileJava.options.encoding = encodingType
compileTestJava.options.encoding = encodingType
group = GroupId
version = projectVersion

buildscript {
    repositories {
        mavenCentral()
    }
	
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        //classpath 'org.springframework:springloaded:1.2.7.RELEASE'
    }
}

简单不,在 gradle.properties 文件定义的所有属性(常量),就可以拿来用哦,引用变量值的用法: ${varName} 。

注意哦,这个文件中的第一行还有一种用法,引用了一个外部配置文件:config.gradle (这个名字可以随便起,这是我们自己定义的)。必须在gradle文件中使用 apply from 语法引入进来才可以使用,我们在这个文件中放置了一些 ext 变量,以便支持不同的环境(windows, linux等),每一个环境对应一个config文件,需要的时候切换。

config.gradle(我这里是随便写了个例子):

ext{
    nameList =[
		"bom",
		"detail",
		"feeding",
		"component",
		"dataprocess",
		"parse",
		"roduct_config_setting",
		"product_setting",
		"product_uph_setting",
		"vendor",
		"workorder",
		"sap"
	]

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值