2017-09-06 193 views
0

我正在開發一個android項目。我們正在使用DependencyResoultionStrategy來交換一些依賴版本。代碼如下所示:使用maven部署程序的gradle依賴關係解析策略

resolutionStrategy.eachDependency { DependencyResolveDetails details -> 
    final version = getVersionForDependency(project, details.requested.group, details.requested.name) 
    if (version != null) { 
     details.useVersion(version) 
    } 
} 

因此,例如,在項目要求的依賴group:name:1.1.2但交換這樣的依賴group:name:1.2.0使用。這很好地工作,項目是建立在正確的依賴(第二個)。

我們還有一個publish任務,該任務將項目部署到本地maven存儲庫。我們使用Maven插件爲此,代碼如下所示:

apply plugin: 'maven' 

task publish(dependsOn: uploadArchives) 

uploadArchives { 
    configurations { 
     deployerFTP 
    } 
    repositories { 
     mavenDeployer { 
      configuration = configurations.deployerFTP 
      repository(URL) { 
       authentication(USERNAME, PASSWORD) 
      } 
     } 
    } 
    dependencies { 
     deployerFTP "org.apache.maven.wagon:wagon-ftp:2.4" 
    } 
} 

是,如果我發佈的庫,在生成.pom文件,依賴group:name:1.1.2進入的問題,這實際上是使用不是一個。我如何改變這種行爲,所以pom包含正確的依賴關係?

回答

0

我已經找到了答案,只需添加以下代碼塊:

mavenDeployer { 
    // ... 
    pom.whenConfigured { pom -> 
     pom.dependencies = pom.dependencies.collect { dep -> 
      def version = getVersionForDependency(project, dep.groupId, dep.artifactId) 
      if (version != null) { 
       dep.version = version 
      } 
      return dep 
     } 
    } 
}