百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

IDEA构建工具必设置项!Maven+Gradle

lipiwang 2024-11-22 17:18 5 浏览 0 评论

IDEA构建工具必设置项!Maven+Gradle

试想一下这个场景,当你辛辛苦苦从github上面把源码clone到本地,然后导入IDEA,pom.xml上右键Import as maven project,接下来就是漫长的等待,够你喝上半天的咖啡,因为众所周知的原因,国内访问maven中心仓库的速度不尽如人意,那怎么办?

两个办法

  • 设置代理
  • 国内镜像
  • 下面是一些SEO优化关键词,不用理会

    IDEA Maven代理设置 Gradle代理设置 Maven国内镜像 Gradle国内镜像

    Maven

    设置代理

    很多文章上来就是在~/.m2/setting.xml中加入代理配置,例如https://www.jianshu.com/p/efa81250682d,核心配置如下

    <proxies>
        <proxy>
          <id>ss</id>
          <active>true</active>
          <protocol>http</protocol>
         <!-- <protocol>socks</protocol> -->
          <!-- <username>代理账号</username> -->
          <!-- <password>代理密码</password> -->
          <host>127.0.0.1</host>
          <port>1080</port>
          <!-- <nonProxyHosts>local.net|some.host.com</nonProxyHosts> -->
        </proxy>
      </proxies>
  • active 标签,true表示当前是激活状态,因为proxoies 标签下面可设置多个proxy标签。
  • 如果你的代理需要账号密码,就要设置。我使用shadowsockts的http代理,所以不用设置。
  • nonProxyHosts标签,用于指定不走代理的地址。使用“|”符号,可以分隔多个地址。例如: www.google.com | www.baidu.com
  • 但是不幸的是,我试了很次依然没有效果,如果上面的可以你就直接用上面的就好,如果不行,试试下面的方法:

    找到Settings > Build Tools > Maven > Importing的VM参数,加上如下参数,如下图所示

    -DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=1080

    国内镜像

    国内镜像就不多解释了,直接配置(修改~/.m2/setting.xml),参考如下配置,<mirrors>之间的部分就是镜像地址

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                          http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository/>
      <interactiveMode/>
      <usePluginRegistry/>
      <offline/>
      <pluginGroups/>
      <servers/>
      <mirrors>
        <mirror>
         <id>aliyunmaven</id>
         <mirrorOf>central</mirrorOf>
         <name>阿里云公共仓库</name>
         <url>https://maven.aliyun.com/repository/central</url>
        </mirror>
        <mirror>
          <id>repo1</id>
          <mirrorOf>central</mirrorOf>
          <name>central repo</name>
          <url>http://repo1.maven.org/maven2/</url>
        </mirror>
        <mirror>
         <id>aliyunmaven</id>
         <mirrorOf>apache snapshots</mirrorOf>
         <name>阿里云阿帕奇仓库</name>
         <url>https://maven.aliyun.com/repository/apache-snapshots</url>
        </mirror>
      </mirrors>
      <proxies/>
      <activeProfiles/>
      <profiles>
        <profile>  
            <repositories>
               <repository>
                    <id>aliyunmaven</id>
                    <name>aliyunmaven</name>
                    <url>https://maven.aliyun.com/repository/public</url>
                    <layout>default</layout>
                    <releases>
                            <enabled>true</enabled>
                    </releases>
                    <snapshots>
                            <enabled>true</enabled>
                    </snapshots>
                </repository>
                <repository>
                    <id>MavenCentral</id>
                    <url>http://repo1.maven.org/maven2/</url>
                </repository>
                <repository>
                    <id>aliyunmavenApache</id>
                    <url>https://maven.aliyun.com/repository/apache-snapshots</url>
                </repository>
            </repositories>             
         </profile>
      </profiles>
    </settings>

    Gradle

    设置代理

    单个项目设置代理,直接在项目根目录中新建gradle.properties配置文件,内容如下

    HTTP还是HTTPS看实际情况选择

    # HTTP
    systemProp.http.proxyHost=127.0.0.1
    systemProp.http.proxyPort=8080
    systemProp.http.proxyUser=userid
    systemProp.http.proxyPassword=password
    systemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost
    
    # HTTPS
    systemProp.https.proxyHost=127.0.0.1
    systemProp.https.proxyPort=8080
    systemProp.https.proxyUser=userid
    systemProp.https.proxyPassword=password
    systemProp.https.nonProxyHosts=*.nonproxyrepos.com|localhost

    全局代理设置在${USER_HOME}/.gradle/目录下创建上面文件即可,${USER_HOME}/.gradle/ 目录默认在用户目录下(区别window/linux)

    国内镜像

    针对单个项目,直接在项目的build.gradle中写入如下内容

    buildscript {
        repositories {
            maven { url 'https://maven.aliyun.com/repository/google/' }
            maven { url 'https://maven.aliyun.com/repository/jcenter/'}
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.2.3'
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }        
    }
    
    allprojects {
        repositories {
            maven { url 'https://maven.aliyun.com/repository/google/' }
            maven { url 'https://maven.aliyun.com/repository/jcenter/'}
        }
    }

    针对全局,在${USER_HOME}/.gradle/下创建init.gradle文件

    allprojects{
        repositories {
            def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/public/'
            def ALIYUN_JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter/'
            def ALIYUN_GOOGLE_URL = 'https://maven.aliyun.com/repository/google/'
            def ALIYUN_GRADLE_PLUGIN_URL = 'https://maven.aliyun.com/repository/gradle-plugin/'
            all { ArtifactRepository repo ->
                if(repo instanceof MavenArtifactRepository){
                    def url = repo.url.toString()
                    if (url.startsWith('https://repo1.maven.org/maven2/')) {
                        project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
                        remove repo
                    }
                    if (url.startsWith('https://jcenter.bintray.com/')) {
                        project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
                        remove repo
                    }
                    if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
                        project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GOOGLE_URL."
                        remove repo
                    }
                    if (url.startsWith('https://plugins.gradle.org/m2/')) {
                        project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GRADLE_PLUGIN_URL."
                        remove repo
                    }
                }
            }
            maven { url ALIYUN_REPOSITORY_URL }
            maven { url ALIYUN_JCENTER_URL }
            maven { url ALIYUN_GOOGLE_URL }
            maven { url ALIYUN_GRADLE_PLUGIN_URL }
        }
    }

    其他构建工具

    目前常用的就是Maven Gradle,用到了其他的再来添加吧...

    参考

  • 将maven源改为国内阿里云镜像
  • 相关推荐

    前端 JavaScript 字符串中提取数字

    varstr="4500元";varnum=parseInt(str);alert(num);//4500如果字符串前面有非数字字符,上面这种方法就不行了:var...

    使用JavaScript如何获取网站网址(js如何获取浏览器信息)

    在做网站开发时,我们有时候会获取当前页面的完整路径。在网页前端如何实现呢?请在网页脚本代码段中粘贴如下代码。functiongetRootPath(){//获取当前网址,...

    java文本对比工具源码8(java比较文本相似度)

    /***ParseatextualrepresentationofpatchesandreturnaListofPatch*objects.*@paramtextline...

    JavaScript实现的9大排序算法(js排序方法)

    笔试面试经常涉及各种算法,本文简要介绍常用的一些算法,并用JavaScript实现。1、插入排序1)算法简介插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通...

    使用函数化的Javascript代码编写方式

    对于Javascript介绍想必大家都耳熟能详啦,基于函数化的编程语言,基于浏览器运行的编程语言,web开发语言,前端开发必备语言,blablabla...Javascript是一个非常灵...

    Js基础31:内置对象(js内置对象是什么意思)

    js里面的对象分成三大类:内置对象ArrayDateMath宿主对象浏览器提供的对象(如bom、dom等等)自定义对象开发人员自己定义的对象内置对象——所谓内置对象,就是JavaScript自...

    js获取上传文件类型以及大小的方法

    前端web上传文件时,需要在上传之前判断一下文件的类型以及文件的大小,HTML为前端的标记语言是无法做到这一点,只能使用javascript动态脚本代码来实现。js获取上传文件大小的方法示例代码:&...

    黑客入门实践:如何绕过前端过滤上传文件

    今天开始,我们就要开始学习具体的漏洞了,但是希望大家学完后,不要轻易"入侵"网站哦,当时测试环境下除外。今天的课程是关于“文件上传漏洞”,据安界网的老师介绍,文件上传漏洞仅次于命令执行...

    Java文件上传细讲(java文件夹上传)

    什么是文件上传?文件上传就是把用户的信息保存起来。为什么需要文件上传?在用户注册的时候,可能需要用户提交照片。那么这张照片就应该要进行保存。免费学习资料获取方式上传组件(工具)为什么我们要使用上传工具...

    鸿蒙上实现“翻译”功能(鸿蒙宴全文翻译)

    本章节我们来制作中文翻译成英文的实例(运行在HarmonyOS上),通过HTTP去配合API进行实现。需求分析如下:文字输入HTTP协议使用文字翻译控件介绍①HTTP数据请求官方文档请求...

    JavaScript从入门到精通(javascript 入门教程)

    前几天,我们学习了JavaScript的入门课程,但是要想做网站,仅仅学会入门是不够的,今后的几天,我将带领大家精通JavaScript,希望大家好好学习!JS内置对象String对象:字符串对象,提...

    第15天|16天搞定前端,javascript语法篇(干货)

    JavaScript是互联网上最流行的脚本语言,这门语言可用于HTML和web,可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。它是一个脚本语言,它是一个轻量级,但功能强大的编程...

    通过js来实现打字效果(js如何输入)

    有时候浏览网页经常会看见一些页面出现一些打字的效果,那么是怎么实现的呢?逻辑确定目标容器,在哪个容器进行输出确定输出内容,当前直接根据目标容器确定输出内容即可需要控制输出频率,因此需要循环输出完毕代码...

    手把手教你学会一键还原混淆js原理

    1.短变量名在以下示例代码中,我们将变量“customerName”替换为“a”:vara="JohnSmith";console.log(a);2.随机变量名在以下示例代码...

    sql中常用的字符串函数详解(sql字符串函数有哪些)

    在日常开发中遇到处理最多的可能字符串要算其中一个了,什么替换啊截取啊大小写转换啊、删除空格啊等等,这些操作我们可以在前端操作,也可以直接在数据库的sql中操作,那么我们来看一下sql中处理字符串的...

    取消回复欢迎 发表评论: