配置私服認證
通常訪問公共倉庫配置以下:html
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
}
私服有時會要求必須認證才能夠訪問公有倉庫,那以下配置:java
repositories {
maven {
credentials {
username 'username'
password 'password'
}
url 'http://nexus.xxxxxx.com/nexus/content/groups/public' }
}
使用我的帳號
配置gradle的init:spring
vim ~/.gradle/gradle.properties
mavenUser=username
mavenPass=password
倉庫變量引用:apache
repositories {
maven {
credentials {
username "$mavenUser"
password "$mavenPass"
}
url 'http://nexus.xxxxxx.com/nexus/content/groups/public'
}
}
依賴排除
gradle中排除依賴有不少種方式,好比:
在configuration中進行全局依賴排除:
configurations {
compile.exclude group: 'org.gradle.test.excludes', module: 'reports'
}
也能夠在某個依賴內部進行細粒度的依賴排除:
dependencies {
compile("org.gradle.test.excludes:api:1.0"){
exclude module: 'shared'
}
}
排出某個依賴全部的傳遞依賴:
dependencies {
compile("org.gradle.test.excludes:api:1.0"){
transitive = false
可是作細粒度排除時有一個問題,如上寫法,在發佈到maven私服上時,依賴並無被過濾掉。
仔細嘗試過gradle文檔中說過的全部排除方式以後,發現,全局依賴能夠在發佈到maven私服的時候給每一項依賴都加上過濾。
針對單項依賴進行的細粒度依賴排除以下寫法也能夠加上過濾:
compile ("com.alibaba:dubbo:${dubboVersion}") {
exclude group:'org.springframework', module: 'spring'
}
在這裏,用的上傳發布的工具是gradle官方推薦的工具:
deployerJars "org.apache.maven.wagon:wagon-http:2.2"
其內部存在一些bug。目前推薦使用上述寫法。
上傳私服
allprojects {
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'maven'
idea {
module {
downloadSources=true
downloadJavadoc=true
}
}
configurations {
provided
compile.extendsFrom provided
deployerJars
}
uploadArchives {
repositories {
mavenDeployer {
configuration = configurations.deployerJars
snapshotRepository(url: 「xxx repository snapshots") {
authentication(userName: 「username", password: 「password")
}
}
}
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives sourcesJar
archives javadocJar
}
repositories {
maven {
name ‘xxx-repository'
url ‘maven nexus repository'
}
mavenLocal()
}
group 'com.xxx'
version '0.1.0-SNAPSHOT'
sourceCompatibility = 1.7
}
subprojects {
dependencies {
deployerJars "org.apache.maven.wagon:wagon-http:2.2"
}
}
從私服下載sourceJar&docJar
在作到上傳以後,在下載的時候也須要可以自動關聯到source jar,javadoc jar。
下載關聯代碼以下:
選擇idea插件,則配置以下:
idea {
module {
downloadSources=true
downloadJavadoc=true
}
}
選擇eclipse,則配置以下:
eclipse {
classpath {
downloadSources=true
downloadJavadoc=true
}
}
獲取最新版本的jar
關於SNAPSHOT:
通常開發過程當中,版本都是SNAPSHOT版本的。在跨工程引用的時候,有2種辦法控制獲取最新版本的jar。第一種就是不斷的更新版本,經過版本變動來獲取最新版本的jar。另一種就是聲明變化版本,讓gradle每次編譯都去獲取最新時間戳版本的jar。
聲明配置以下:
configurations.all { // check for updates every build resolutionStrategy.cacheChangingModulesFor 0, 'seconds'} dependencies { compile group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true}