使用账号密码访问受保护的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
}
}