Gradle实用整理
📅 2012-12-11 | 🖱️
🔖 gradle
使用账号密码访问受保护的maven仓库 #
当nexus中禁用了匿名用户(Anonymous)对仓库的访问时,我们需要在构建脚本中指定访问仓库的账号和密码。
1repositories {
2 maven {
3 url "http://192.168.1.10:8081/nexus/content/repositories/releases/"
4 credentials {
5 username 'user'
6 password 'password'
7 }
8 }
9}
上门的配置虽然能达到目的,但是用户名和密码是明文写到构建脚本中的,构建脚本需要被提交到版本管理系统中,这显然是不安全的,而且不支持针对每个开发人员使用不同的用户和密码。
更进一步,我们可以将用户名密码写到GRADLE_USER_HOME\gradle.properties
中:
1mavenUser=user
2mavenPwd=password
此时在构建脚本中引用上面配置的属性:
1repositories {
2 maven {
3 url "http://192.168.1.10:8081/nexus/content/repositories/releases/"
4 credentials {
5 username "$mavenUser"
6 password "$mavenPwd"
7 }
8 }
9}
通过上面的配置,将用户名和密码分离到了每个用户自己的GRADLE_USER_HOME\gradle.properties
中,这样用户名和密码已经不再需要提交到版本系统,同时每个开发人员可以设置使用自己的用户名和密码。
但不完美的是,用户名和密码还是明文配置的。
Gradle发布构建jar到maven仓库 #
maven-publish插件 #
参考官方文档Chapter 36. Maven Publishing (new)
1apply plugin: 'maven-publish'
2
3task sourceJar(type: Jar) {
4 from sourceSets.main.allJava
5}
6
7publishing {
8 repositories {
9 maven {
10 if(project.version.endsWith('-SNAPSHOT')) {
11 url "http://192.168.1.10:8081/nexus/content/repositories/snapshots/"
12 }else {
13 url "http://192.168.1.10:8081/nexus/content/repositories/releases/"
14 }
15 credentials {
16 username "${mavenUser}"
17 password "${mavenPwd}"
18 }
19 }
20 }
21 publications {
22 mavenJava(MavenPublication) {
23 from components.java
24 artifact sourceJar {
25 classifier "sources"
26 }
27 }
28 }
29}
maven插件
#
参考官方文档。
1apply plugin: 'maven'
2
3uploadArchives {
4 repositories {
5 mavenDeployer {
6 repository(url: "http://192.168.1.10:8081/nexus/content/repositories/releases/") {
7 authentication(userName: "$mavenUser", password: "$mavenPwd")
8 }
9 }
10 }
11}
Snapshot Dependency #
1configurations.all {
2 resolutionStrategy.cacheChangingModulesFor 60, 'seconds'
3}
4
5dependencies {
6 compile('com.xx:xxx:1.0.0-SNAPSHOT') {
7 changing = true
8 }
9}