-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle
142 lines (109 loc) · 3.1 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
import com.phenix.plugin.TestTask
plugins {
id 'java'
id 'application'
id 'idea'
// 自定义插件
id 'phenix'
// 该插件会将生成的Java文件放置在build/generated/sources/annotationProcesssor/java/main下并会被idea所识别
id 'net.ltgt.apt-idea' version "0.21"
}
//配置Gradle栏run, project 入口
mainClassName = 'com.phenix.test.Main'
ext {
mGroup = 'com-phenix-annapt'
mVersion = '1.0-SNAPSHOT'
//指定Task任务组
mPluginGroup = "plugin-phenix"
// 其他module引用 rootProject.mGroup 、rootProject.mVersion
}
group 'com-phenix-annapt'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
implementation files('libs/aspectjrt.jar')
implementation project(':ann')
annotationProcessor project(':apt')
}
compileJava {
options.compilerArgs << '-Adebug'
}
clean.doLast { task ->
// clean-up directory when necessary
boolean isDeleted = deleteOutDir(project)
println " the out directory path is ${project.projectDir} , deleted?${isDeleted}"
project.subprojects { p ->
isDeleted = deleteOutDir(p)
println " the out directory path is ${p.projectDir} , deleted?${isDeleted}"
}
}
/**
* 删除out输出文件
* @param project 主工程或module
* @return boolean 是否成功
*/
private boolean deleteOutDir(project) {
String outDir = project.projectDir.getPath() + File.separator + 'out'
boolean result = false
try {
File f = file(outDir)
result = f.deleteDir()
} catch (e) {
e.printStackTrace()
}
return result
}
/**allprojects是对所有project的配置,包括Root Project。而subprojects是对所有Child Project的配置。
* 测试一下allprojects的范围
* 可以看到task(hello)遍历顺序是:allprojects > subprojects > Child Project
*
* D:\develop\workspace-intellij\ann-apt>gradlew -q hello
* ann::version --> 1.0-SNAPSHOT <> group --> com-phenix-annapt
* apt::version --> 1.0-SNAPSHOT <> group --> com-phenix-annapt
* project name is ann-apt
* project name is ann
* here is subprojects
* —— I'm the ann project
* project name is aop
* here is subprojects
* —— I'm the aop project
* project name is apt
* here is subprojects
* —— I'm the apt project
*/
allprojects {
//指定编译的编码
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
tasks.create('hello') {
group = rootProject.ext.mPluginGroup
description = 'Produces a greeting'
doLast {
task ->
println "project name is ${task.project.name}"
}
}
}
subprojects {
hello.doLast {
println "here is subprojects"
}
}
tasks.register("testGreeting", TestTask) {
// 指定Gradle栏任务组
group = mPluginGroup
description = 'Produces a world greeting'
//传入参数
message = 'Hello'
recipient = 'World'
}
//自定义extensions
extPhenix {
name = 'extPhenix 覆盖参数name'
desc = 'extPhenix 覆盖参数desc'
}