Gradle

配置私服認證

通常訪問公共倉庫配置以下: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}
相關文章
相關標籤/搜索