maven,gradle的一些小tips

2017 Feb 04 See all posts


1.全局替换龟速的repo1.maven.org

好处显而易见——不用挨个修改项目build.gradle,如果git fork 很多项目的时候就有用了:)

USER_HOME/.gradle/ 下建立init.gradle

内容如下,在公司换成公司私服maven.xxxx.net:

allprojects{
    repositories {
        def REPOSITORY_URL = 'http://maven.xxxx.net/nexus/content/groups/public/'
        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/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
                    remove repo
                }
            }
        }
        maven {
            url REPOSITORY_URL
        }
    }
}

在家替换成快一点的,如阿里云:

allprojects{
    repositories {
        def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
        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/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
                    remove repo
                }
            }
        }
        maven {
            url REPOSITORY_URL
        }
    }
}

2.打印gradle项目依赖树

maven项目的依赖树相当简单,用:

mvn dependency:tree

对于gradle,如果gradle项目没有子项目,用如下命令:

./gradlew dependencies

如果包含很多子项目,root依赖树就是一个空架子没有什么鸟用。要显示所有子项目的依赖树,可以在build.gradle里面加入一个子任务,起个名字如allDeps:

subprojects {
    task allDeps(type: DependencyReportTask) {}
}

执行这个task就可以打印出所有子项目的依赖树

./gradlew allDeps

Back to top