Gradle nexus 解決開發機器不連網沒法下載gradle插件問題

在用gradle時常規配置以下(D:\gradle-4.9\init.d\init.gradle文件,沒有這個文件時自建):html

  

ext {
    nexus = 'http://192.168.127.128:8081/repository/maven-public/'
    username = 'admin'
    password = 'admin123'
}

allprojects{
  repositories {
    all { ArtifactRepository repo ->
      if(repo instanceof MavenArtifactRepository){
        def url = repo.url.toString()
        if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/') || !url.startsWith(nexus)) {
          project.logger.lifecycle "Repository ${repo.url} replaced by ${nexus}."
          remove repo
        }
      }
    }
    maven {
      url nexus
    }
  }
}

 

在這種配置下,僅僅是項目中要用到的構件是從配置的nexus下載的。可是gradle自身的插件依然要從https://plugins.gradle.org/m2/下載。有時開發者機器是沒法鏈接到互聯網的,只有nexus機器能鏈接互聯網,並不能訪問這個https://plugins.gradle.org/m2/地址,也就沒法下載gradle自身依賴的插件,就會報錯。因此咱們但願開發者的機器下載gradle插件時,也能從nexus下載。此時應在init.gradle中添加以下內容:前端

ext {
    nexus = 'http://192.168.127.128:8081/repository/maven-public/'
    username = 'admin'
    password = 'admin123'
}

allprojects{
  repositories {
    all { ArtifactRepository repo ->
      if(repo instanceof MavenArtifactRepository){
        def url = repo.url.toString()
        if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/') || !url.startsWith(nexus)) {
          project.logger.lifecycle "Repository ${repo.url} replaced by ${nexus}."
          remove repo
        }
      }
    }
    maven {
      url nexus
    }
  }
}

settingsEvaluated { settings ->
    settings.pluginManagement {
        resolutionStrategy {
            
        }
        repositories {
            maven {
              url nexus
            }
        }
    }
}

gradle文件解讀:java

setting.gradleapp

一、pluginManagement(非必需)

做用:插件庫管理
Tips:放在配置文件最前端maven

pluginManagement {
    repositories {
        //這個就是默認的插件庫,通常可不配置,除非有更好更快的插件庫 gradlePluginPortal() } }

二、settingsEvaluated(非必需)

做用:settings.gradle初始化完成的回調函數,用於作些初始化工做ide

gradle.settingsEvaluated {
    println "settings初始化完成" }

三、projectsLoaded(非必需)

做用:全部項目載入完成回調函數函數

gradle.projectsLoaded {
    Gradle gradle ->
        println "子項目初始化完成"+gradle }

四、自定義初始化方法(非必需)

//建立自定義方法 def customInit(){ println"start init" //作本身想要作的初始化 println"end init" } //settings.gradle加載的時候,會執行這個方法 customInit()

五、rootProject.name(必需)

做用配置項目名稱學習

rootProject.name = 'test-core'

六、include(重要)

做用:配置多個項目gradle

include ':app',':core'

注意:ui

  gradle學習方法就是,多看gradle文檔,多思考,適當學groovy。本文參考的文檔是:https://docs.gradle.org/current/userguide/plugins.html#sec:script_plugins

相關文章
相關標籤/搜索