Gradle nexus 解决开发机器不连网无法下载gradle插件问题

在用gradle时常规配置如下(D:\gradle-4.9\init.d\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
    }
  }
}

 

在这种配置下,仅仅是项目中要用到的构件是从配置的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文件解读:

setting.gradle

1、pluginManagement(非必需)

作用:插件库管理
Tips:放在配置文件最前端

pluginManagement {
    repositories {
        //这个就是默认的插件库,一般可不配置,除非有更好更快的插件库
        gradlePluginPortal()
    }
}
2、settingsEvaluated(非必需)

作用:settings.gradle初始化完成的回调函数,用于做些初始化工作

gradle.settingsEvaluated {
    println "settings初始化完成"
}
3、projectsLoaded(非必需)

作用:所有项目载入完成回调函数

gradle.projectsLoaded {
    Gradle gradle ->
        println "子项目初始化完成"+gradle
}
4、自定义初始化方法(非必需)
//创建自定义方法
def customInit(){ println"start init" //做自己想要做的初始化 println"end init" } //settings.gradle加载的时候,会执行这个方法 customInit()
5、rootProject.name(必需)

作用配置项目名称

rootProject.name = 'test-core'
6、include(重要)

作用:配置多个项目

include ':app',':core'

注意:

  gradle学习方法就是,多看gradle文档,多思考,适当学groovy。本文参考的文档是:https://docs.gradle.org/current/userguide/plugins.html#sec:script_plugins

转载于:https://www.cnblogs.com/dingyingsi/p/9401498.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值