2016-03-18 34 views
6

Tôi đang cố gắng thay thế tất cả phụ thuộc -SNAPSHOT bằng một dự án phụ cục bộ. nó hoạt động tốt, nhưng tôi có một vấn đề: tôi không thể xác định cấu hình dự án mà tôi muốn sử dụng (phải mất default, kéo dài runtime, và tôi không muốn điều đó):Thay thế phụ thuộc Gradle với cấu hình dự án

configurations.all { 
    resolutionStrategy.dependencySubstitution { 
     all { dependency -> 
      if (!dependency.requested.version.endsWith('SNAPSHOT')) 
       return 
      def isRootProject = rootProject.name.equals(dependency.requested.module) 
      def matching = rootProject.subprojects.find { 
       it.name.equals(dependency.requested.module) 
      } 
      if (isRootProject) 
       dependency.useTarget rootProject 
      else if (matching) 
       // The specified syntax with path: and configuration: does not work. How can I do ? 
       dependency.useTarget project(path: ":" + dependency.requested.module, configuration: 'compile') 
      else 
       println 'Keep SNAPSHOT: ' + dependency.requested.module; 
     } 
    } 
} 

tôi biết tại sao nó không hoạt động, tài liệu khá rõ ràng: https://docs.gradle.org/current/javadoc/org/gradle/api/artifacts/DependencySubstitutions.html#project%28java.lang.String%29 nó không hỗ trợ tên cấu hình.

Có cách giải quyết nào cho giới hạn này không?

Trả lời

0

Trong settings.gradle tập tin của bạn, bạn có thể làm một cái gì đó dọc theo những đường:

def myDeps = ['my-dependency', 'my-dependency-2'] 
for (String projectName : myDeps) { 
    if (new File(rootDir, '../' + projectName).exists()) { 
    def path = '../' + projectName 
    def mod = 'my.company:' + projectName 
    System.out.println("Adding composite build for project: " + projectName + " using path: " + path + " replacing module: " + mod); 
    includeBuild(path) { 
     dependencySubstitution { 
     substitute module(mod) with project(':') 
     } 
    } 
    } else { 
    System.out.println("Skipping composite build for project: " + projectName); 
    } 
} 

Nếu bạn ưa thích, bạn có thể làm như chúng ta làm và không sử dụng một danh sách tĩnh của phụ thuộc. Thay vào đó, bạn có thể tự động khám phá các dự án hiện tại. Điều này yêu cầu công ty của bạn tuân theo một mẫu cấu hình tĩnh trong mỗi phụ thuộc vì bạn phải phân tích cú pháp các tệp theo cách thủ công.

Các vấn đề liên quan