《实战Gradle》学习记录

注意

gradle中单引号'hello world'包围起来的, 就是普通的字符串.
		双引号"my project version is $version"包围起来的, 会解析$version (位于gradle.properties文件中)
			而单引号不会解析$version.

gradle命令

# 查看gradle版本
gradle -v

# 支持指定的task
gradle task名称

# 静默运行指定的task
gradle -q task名称

# 清理
gradle clean

# 列出项目中所有可用的task
gradle -q tasks

# 列出项目中所有可用的task, 包括依赖任务
gradle -q tasks --all

# 在执行时排除一个任务, 选项-x可以实现这个功能
gradle task名称 -x 要排除的task名称

# 在运行时, 提供一个系统参数. 选项-D可以实现这个功能
gradle task名称 -Dmyprop=myvalue

# 执行包装器任务
gradle wrapper

build.gradle文件内容

/* ------- 基本配置 ------- */
// 使用Java插件, 默认会到'src/main/java'目录下查找源代码
apply plugin: 'java'
// 使用war插件(它包含了java插件,所以两个写一个就可以了), 默认会识别'src/main/webapp'目录
apply plugin: 'war'
// 在嵌入式Web容器中运行
apply plugin: 'jetty'

// 定制jetty插件, 配置端口号和项目根路径
jettyRun {
    httpPort = 9090
    contextPath = 'todo'
}

// 指定项目版本号
version = 0.1

// 指定jdk版本兼容性
sourceCompatibility = 1.6

/* 
添加程序启动类, 也就是将Main-Class头添加到JAR文件代码清单中
这样就可以通过java -jar build/libs/todo-app-0.1.jar命令来运行应用
*/
jar {
    manifest {
        attributes 'Main-Class': 'com.manning.gia.todo.ToDoApp'
    }
}


/* ------- 改造遗留项目 ------- */
// 改变默认的项目 目录结构
sourceSets {
    main {
        java {
            /*
            约定的, 默认的源代码目录是在'src/main/java'
            这里修改为'src'目录
            */
            srcDirs = ['src']
        }
    }
    test {
        java {
            /*
            约定的测试源代码目录是在'src/test/java'
            这里修改为'test'目录
            */
            srcDirs = ['test']
        }
    }
}
// 约定的项目输出路径是'build'目录, 这里修改为'out'目录
buildDir = 'out'
/*
改变web应用webapp默认目录 (默认是'src/main/webapp')
用于改造旧项目, 如下所示:
|_ build.gradle
|_ src
|    |_ main
|        |_ java
|_ static
|    |_ css
|_ webfiles
     |_ WEB-INF
         |_ web.xml
*/
webAppDirName = 'webfiles'
war {
    // static目录下的 内容 添加到WAR文件的根目录下
    from 'static'
}


/* ------- 依赖管理 ------- */
// 依赖管理, 定义中心仓库
repositories {
    maven {
        url 'http://maven.aliyun.com/nexus/content/groups/public/'
    }
}

// 添加依赖
dependencies {
    complie group: 'org.apache.commons', name: 'commons-lang3', version: '3.1'
    providedComplie 'javax.servlet:servlet-api:2.5'
    runtime 'javax.servlet:jstl:1.1.2'
}


/* ------- 部署 ------- */
// 配置包装器任务
task wrapper (type : Wrapper) {
    gradleVersion = '3.5'
}
// 定制包装器
task wrapper (type : Wrapper) {
    // 请求的gradle版本
    gradleVersion = '3.5'
    // 获取gradle包装器的URL
    distributionUrl = 'http://myenterprise.com/gradle/dists'
    // 包装器被解压后存放的相对路径
    distributionPath = 'gradle-dists'
}


/* ------- 任务 ------- */
// 设置task的逻辑分组group和任务的作用description
// 方式一
task printVersion (group: 'versioning', description: 'Prints project version.') {
	doLast {
		logger.quiet "Version: $version"
	}
}
// 方式二
task printVersion {
	group = 'versioning'
	description = 'Prints project version'
	
	doLast {
		logger.quiet "Version: $version"
	}
}

// 定义task依赖的方式
task first << {println "first"}
task second << {println "second"}

task printVersion (dependsOn: [second, first]) << {
	logger.quiet "Version: $version"
}

依赖的范围

  Gradle依赖的范围和Maven的依赖的范围很类似,下面就来比较一下:

工具依赖范围编码有效测试有效被打包运行时有效例子
Mavencompileyyylog4j
Maventest-y-junit
Mavenprovidedyy-servlet-api
Mavenruntime--yJDBC Driver
Gradlecompileyyyapache-commons
GradletestCompile-y-junit
GradleprovidedCompileyy-servlet-api
Gradleruntime--yjstl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值