如何在gradle中优先考虑mavenLocal over artifactory repo?

时间:2017-10-03 09:10:24

标签: gradle artifactory

我有多模块项目,我使用artifactory来解析自定义库: 父项目的build.gradle

...
subporjects {
   ...
    apply plugin: "com.jfrog.artifactory"

    artifactory {
        resolve {
            contextUrl = ext.getProperty('ARTIFACTORY_URL')
            repoKey = ext.getProperty('ARTIFACTORY_REPO_NAME')
            username = ext.getProperty('ARTIFACTORY_USERNAME')
            password = ext.getProperty('ARTIFACTORY_PASSWORD')
        }
    }
}

按预期工作,我的库通过gradle artifactoryPublish发布到artifactory,然后从那里获取它。但在某些情况下,我想从mavenLocal() repo获取我的自定义库。我有下一个子项目build.gradle

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    compile 'my-custom-library'
}

但是我可以看到它仍然是从神器中解决的。我可以以某种方式优先mavenLocal()吗?

3 个答案:

答案 0 :(得分:0)

存储库优先级将是它们添加到RepositoryHandler

的顺序

我猜测在应用插件时会添加神器存储库,因此您可以通过

来延迟
afterEvaluate {
    subprojects {
        apply plugin: "com.jfrog.artifactory"
        // etc
    }
}    

或者

evaluationDependsOnChildren()
subprojects {
    apply plugin: "com.jfrog.artifactory"
    // etc
}

答案 1 :(得分:0)

如果您只想依赖另一个子项目中的一个子项目,则应使用project表示法声明依赖项:

dependencies {
    compile project(':shared')
}

https://docs.gradle.org/current/userguide/multi_project_builds.html#sec:project_jar_dependencies

答案 2 :(得分:0)

更改声明存储库的顺序
repositories {
    mavenCentral()
    mavenLocal()
}

repositories {
    mavenLocal()
    mavenCentral()
}