代码之家  ›  专栏  ›  技术社区  ›  PCL

使用Nexus工件库的多项目gradle构建

  •  1
  • PCL  · 技术社区  · 7 年前

    考虑以下多项目渐变构建,其中ProjectA依赖于ProjectB,ProjectB依赖于ProjectC。依赖项在表单中指定 compile project(':ProjectX') 。这需要签出每个项目,以便构建(比如)ProjectA。

    我想使用Sonatype Nexus之类的工件回购来简化开发人员的构建,这样,如果他们只在ProjectA上工作,那么他们就不需要签出依赖的项目,并且可以从Nexus中检索它们。类似地,如果您正在处理依赖项目,并且它们是在本地签出的,那么我希望它们是构建的,而不是从Nexus检索的。

    总之,依赖项解决策略是:如果项目依赖项已签出,则在本地构建,否则从Nexus检索

    我怎样才能在gradle做到这一点?

    1 回复  |  直到 7 年前
        1
  •  1
  •   PCL    7 年前

    我通过从 compile project(':ProjectX') compile "my-group:ProjectX:version" ,并使用以下依赖项替换解决策略:

    configurations.all {
        resolutionStrategy.dependencySubstitution.all { DependencySubstitution dependency ->
            if (dependency.requested instanceof ModuleComponentSelector && dependency.requested.group == "my-group") {
                def proj = "${dependency.requested.module}"
                if (new File(rootDir, '../' + proj).exists()) {
                    dependency.useTarget findProject(":${proj}")
                }
            }
        }
    }