Gradle实用整理

2012-12-11 阅读: Gradle

使用账号密码访问受保护的maven仓库

当nexus中禁用了匿名用户(Anonymous)对仓库的访问时,我们需要在构建脚本中指定访问仓库的账号和密码。

repositories {
    maven {
       url "http://192.168.1.10:8081/nexus/content/repositories/releases/"
       credentials {
       		username 'user'
       		password 'password'
       }
    }
}

上门的配置虽然能达到目的,但是用户名和密码是明文写到构建脚本中的,构建脚本需要被提交到版本管理系统中,这显然是不安全的,而且不支持针对每个开发人员使用不同的用户和密码。 更进一步,我们可以将用户名密码写到GRADLE_USER_HOME\gradle.properties中:

mavenUser=user
mavenPwd=password

此时在构建脚本中引用上面配置的属性:

repositories {
    maven {
       url "http://192.168.1.10:8081/nexus/content/repositories/releases/"
       credentials {
       		username "$mavenUser"
	       	password "$mavenPwd"
       }
    }
}

通过上面的配置,将用户名和密码分离到了每个用户自己的GRADLE_USER_HOME\gradle.properties中,这样用户名和密码已经不再需要提交到版本系统,同时每个开发人员可以设置使用自己的用户名和密码。 但不完美的是,用户名和密码还是明文配置的。

Gradle发布构建jar到maven仓库

maven-publish插件

参考官方文档Chapter 36. Maven Publishing (new)

apply plugin: 'maven-publish'

task sourceJar(type: Jar) {
    from sourceSets.main.allJava
}

publishing {
    repositories {
        maven {
            if(project.version.endsWith('-SNAPSHOT')) {
	            url "http://192.168.1.10:8081/nexus/content/repositories/snapshots/"
	        }else {
	        	url "http://192.168.1.10:8081/nexus/content/repositories/releases/"
	        }
            credentials {
	       		username "${mavenUser}"
	       		password "${mavenPwd}"
	       }
        }
    }
    publications {
        mavenJava(MavenPublication) {
            from components.java
            artifact sourceJar {
                classifier "sources"
            }
        }
    }
}

maven插件

参考官方文档

apply plugin: 'maven'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://192.168.1.10:8081/nexus/content/repositories/releases/") {
            	authentication(userName: "$mavenUser", password: "$mavenPwd")
        	}
        }
    }
}

Snapshot Dependency

configurations.all {
    resolutionStrategy.cacheChangingModulesFor 60, 'seconds'
}

dependencies {
	compile('com.xx:xxx:1.0.0-SNAPSHOT') {
		changing = true
	}
}
标题:Gradle实用整理
本文链接:https://blog.frognew.com/2012/12/gradle-utils.html
转载请注明出处。

目录