-
Notifications
You must be signed in to change notification settings - Fork 118
/
build.gradle
148 lines (118 loc) · 4.18 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
141
142
143
144
145
146
147
/*
gradle 主文件
*/
//
// 引入jar包定义
// 这个文件中定义的jar包可以直接在子项目中使用,不需要再次使用 apply from 这个语句
//
apply from: 'dependency.gradle'
allprojects {
//apply plugin: 'license'
repositories {
maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
// mavenCentral()
}
}
subprojects { subproj ->
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'eclipse'
// 用于发布 jar 包到相应服务器
apply plugin: 'maven'
// 由于根下屏蔽了 java 插件,所以把这些方法定义转移到各个子项目下读取
apply from: "https://gist.githubusercontent.com/someok/43d4ea94ea9db7e760a3108aae870913/raw/0d9a6f2e95815646e202e0244f58a34b89d00f98/utils.gradle"
group = project_group
sourceCompatibility = project_jdk
targetCompatibility = project_jdk
jar {
excludes = ['**/rebel.xml', '**/.keep']
doFirst {
// 生成jar 包的时候按此规则生成 manifest 文件
manifest = defaultManifest([
project: subproj,
projectVendor: project_vendor
])
}
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from 'build/docs/javadoc'
doFirst {
manifest = defaultManifest({ subproj })
}
}
task sourcesJar(type: Jar) {
classifier = 'sources'
from sourceSets.main.allSource
doFirst {
manifest = defaultManifest({ subproj })
}
}
// 编码改为 UTF-8, 否则编译源码的时候会出错
// 当然,这个需要根据自己的 java 源码的编码进行调整
[compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
//
artifacts {
archives jar
// archives javadocJar
archives sourcesJar
}
configurations {
deployerJars
//
// 所有需要忽略的包定义在此
//
all*.exclude group: 'commons-httpclient'
all*.exclude group: 'commons-logging'
all*.exclude group: 'commons-beanutils', module: 'commons-beanutils'
}
dependencies {
// 用于上传自己项目的jar 包到中心 maven 库
deployerJars "org.apache.maven.wagon:wagon-ssh:2.2"
//
// 通用依赖
//
compile(
libraries.'logback-classic',
libraries.'jcl-over-slf4j',
libraries.'log4j-over-slf4j',
)
//
// 引入根目录和各子项目下的libs中的jar包
//
ext.jarTree = fileTree(dir: 'libs', include: '**/*.jar')
ext.rootProjectLibs = new File(rootProject.rootDir, 'libs').getAbsolutePath()
ext.jarTree += fileTree(dir: rootProjectLibs, include: '**/*.jar')
compile jarTree
//
// 测试依赖
//
testCompile(
libraries.'junit',
libraries.'spring-test',
libraries.'assertj',
libraries.'mockito-core',
)
}
// 上传 jar 包到自己的 maven 服务器
//
uploadArchives {
repositories.mavenDeployer {
//beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
configuration = configurations.deployerJars
repository(
// 这儿需要注意,后面的地址是服务器地址,需要写全,是个大坑啊
// 另外初次执行的时候最好带上 --info 参数,会提示保存 ssh 验证信息的
// 这时候需要输入 yes
//
// 更详细说明参见我的 blog: http://my.oschina.net/someok/blog/374562
url: //"file://d:/Develop/MyProjects/repos/"
"scp://repos.example.com:22/home/maven/repos/release"
)
{
// If these are not defined assemble needlessly fails for unrelated tasks, hence, defaultBlank.
authentication(userName: "maven", password: "maven")
}
}
}
}