簡體   English   中英

如何用 jar 替換 gradle 模塊依賴項?

[英]How do I replace a gradle module dependency with a jar?

我有一個多項目構建,並且一個或多個子項目依賴於損壞的模塊。 我想用對本地 JAR 文件的依賴來替換模塊依賴。

我已經嘗試了以下(我並不真正期望工作),但除此之外我有點不知所措:

configurations.all {
    resolutionStrategy {
        failOnVersionConflict()

        eachDependency { DependencyResolveDetails details ->
            if (details.requested.group == "com.android.support" && details.requested.name == "support-v4") {
                details.useTarget("lib/android-support-v4-fixed.jar")
            }
        }
    }
}

如何將子項目中的模塊依賴替換為對文件(即 JAR)的依賴?

最后,我瀏覽了大量文檔,並且能夠非常簡單地實現我想要的。

configurations.all {
    exclude group: 'com.android.support', module: 'support-v4'
}

dependencies {
    compile files('libs/support-v4.jar')
}

以上將排除所有模塊的 maven 依賴項(適用於庫等),在這種情況下,我們排除了 Android 支持庫。 然后我簡單地添加我自己的支持庫(帶有幾個錯誤修復)作為常規 jar 依賴項。

您可以通過添加這樣的本地存儲庫來做到這一點:

configure(allprojects) {
    repositories {                                                                                                         
      maven {
          url "../repo"  // this is relative to subproject, so assumes all subprojects are in the same folder
      }
      
      // ... other repositories

}

固定的 jar 應該使用 mvn 文件夾結構放入 repo 目錄。 對於您的情況,應將兩個文件添加到repo/com/android/support/support-v4/r6-fixed

support-v4-r6-fixed.jar
support-v4-r6-fixed.pom

注意:文件應該命名為<artifactId>-<version>.<ext>並且這應該匹配 pom 中的值。

pom 應該是一個有效的 pom 元,內容類似於(使用現有的 pom 為損壞的版本創建它)

<?xml version="1.0" encoding="UTF-8"?>                                                                                                                                 
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.android.support</groupId>
      <artifactId>support-v4</artifactId>
      <version>r6-fixed</version>
    </project>

如果您想在 kotlin gradle 構建文件中使用Roman Konoval 的超棒解決方案,您需要將路徑指定為 URI,例如:

configure(allprojects) {
  repositories {                                                                                                         
    maven {
      url = uri("../repo")  // this is relative to subproject, so assumes all subprojects are in the same folder
   }
  
   // ... other repositories
}

創建一個 FlatDir 存儲庫並將您的 jar 放在那里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM