# Gradle 配置 init.gradle 实现国内第三方镜像或企业内部Maven源

- Link: https://www.xuepaijie.com/html/skill/devops/893.html
- Published: 2017-03-15T16:38:19+08:00
- Author: Admin

自带的Maven源地址是国外的，该Maven源在国内的访问速度是很慢的，除非使用了特别的手段。
一般情况下，我们建议使用国内的第三方开放的Maven源或企业内部自建Maven源。

那么怎么处理就能够使用自定义的Maven源呢？

首先我们认识下init.gradle。

配置init.gradle文件可以实现在build开始之前执行，所以你可以在这个文件配置一些你想
预先加载的操作。

启用init.gradle文件的方法有：

1.在命令行指定文件，例如：gradle –init-script yourdir/init.gradle -q taskName。你
可以多次输入此命令来指定多个init文件

2.把init.gradle文件放到 USER_HOME/.gradle/ 目录下

3.把以.gradle结尾的文件放到 USER_HOME/.gradle/init.d/ 目录下

4.把以.gradle结尾的文件放到 GRADLE_HOME/init.d/ 目录下

如果存在上面的4种方式的2种以上，gradle会按上面的1-4序号依次执行这些文件，如果给定
目录下存在多个init脚本，会按拼音a-z顺序执行这些脚本。

如何改成自定义的Maven源呢？参考我们给予的代码片段吧。

    ```java;
    apply plugin:EnterpriseRepositoryPlugin

    class EnterpriseRepositoryPlugin implements Plugin<Gradle> {

        private static String ENTERPRISE_REPOSITORY_URL = "http://maven.aliyun.com/nexus/content/groups/public/"

        void apply(Gradle gradle) {
            // ONLY USE ENTERPRISE REPO FOR DEPENDENCIES
            gradle.allprojects{ project ->
                project.repositories {

                    // Remove all repositories not pointing to the enterprise repository url
                    all { ArtifactRepository repo ->
                        if (!(repo instanceof MavenArtifactRepository) ||
                              repo.url.toString() != ENTERPRISE_REPOSITORY_URL) {
                            project.logger.lifecycle "Repository ${repo.url} removed. Only $ENTERPRISE_REPOSITORY_URL is allowed"
                            remove repo
                        }
                    }

                    // add the enterprise repository
                    maven {
                        name "STANDARD_ENTERPRISE_REPO"
                        url ENTERPRISE_REPOSITORY_URL
                    }
                }
            }
        }
    }
    ```
