【问题标题】:How to prioritize mavenLocal over artifactory repo in gradle?如何在 gradle 中优先考虑 mavenLocal 而不是工件存储库?
【发布时间】:2017-10-03 09:10:24
【问题描述】:

我有多模块项目,我正在使用工件来解析自定义库: 父项目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 发布到工件,然后从那里获取。但在某些情况下,我想从mavenLocal() repo 获取我的自定义库。我有下一个子项目build.gradle

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    compile 'my-custom-library'
}

但正如我所见,它仍然是从人工制品中解决的。我可以以某种方式优先考虑mavenLocal() 吗?

【问题讨论】:

  • 您在 maven local 中拥有的库应该是 artifactory 中使用的库的副本。如果它们不同,您应该使用不同的版本。

标签: gradle artifactory


【解决方案1】:

存储库优先级将是它们被添加到RepositoryHandler的顺序

我猜是在应用插件时添加了工件存储库,因此您可以将其延迟

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

或许

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

【讨论】:

    【解决方案2】:

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

    dependencies {
        compile project(':shared')
    }
    

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

    【讨论】:

      【解决方案3】:

      更改存储库的声明顺序,从

      repositories {
          mavenCentral()
          mavenLocal()
      }
      

      repositories {
          mavenLocal()
          mavenCentral()
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-17
        • 1970-01-01
        相关资源
        最近更新 更多