2012-07-16 32 views
13

Tôi tạo tệp jar mà không sử dụng tác vụ Gradle Jar (tôi cần sử dụng tác vụ Ant cho tác vụ đó bên trong nhiệm vụ của mình). Làm cách nào để tôi định cấu hình uploadArchives để có thể cài đặt JAR trong kho lưu trữ được chỉ định.Gradle: Cách tải tệp JAR tùy chỉnh lên kho lưu trữ Maven

Tôi đã cố gắng để ghi đè vật mặc định với

uploadArchives { 
    repositories { 
     mavenDeployer { 
      // some Maven configuration 
     } 
    } 
} 

artifacts { 
    archives file: file('bin/result.jar') 
} 

nhưng tôi nhận được một lỗi mà có thể không có 2 hiện vật với cùng một loại và phân loại, có nghĩa là cấu hình này cho biết thêm chứ không phải đó sẽ ghi đè cấu hình.

Trả lời

20

Bạn nói đúng, artifacts việc đóng cửa chỉ có thể thêm hiện vật vào cấu hình đã cho (xem ArtifactHandler API).

Bạn có hai lựa chọn:

1) Thêm một bộ lọc tạo tác như mô tả here (xem ch 45.6.4.1 "Nhiều hiện vật mỗi dự án")... Nếu bạn sử dụng này, hãy thử khai báo cấu hình archives của bạn như:

artifacts { 
    archives file: file('bin/result.jar'), name: 'result', type: 'jar' 
} 

Bằng cách này, bạn có một cái gì đó như thế này trong bộ lọc vật của bạn:

addFilter('result') {artifact, file -> 
    artifact.name == 'result' 
} 

2) Tải lên nó như là một mô-đun maven riêng biệt. Nếu result.jar là bình duy nhất bạn tải lên, đây có thể là giải pháp tốt.

configurations { 
    resultArchives 
} 

uploadResultArchives { 
    repositories { 
    mavenDeployer { 
     repository(url: "same/url/here") 
    } 
    } 
} 

artifacts{ 
    resultArchives file: file('bin/result.jar') 
} 

Hy vọng điều này sẽ hữu ích.

+0

Cảm ơn giải pháp. Sau này làm việc trong trường hợp của tôi như là một say mê. –

+0

Tôi nhận được một lỗi Gradle DSLmethod không tìm thấy 'uploadResultArchive', tôi đã áp dụng maven plugin. Bất kỳ plugin nào khác yêu cầu – sver

+1

@sver, tôi đoán anh ấy có nghĩa là _uploadArchives_ – zaxme

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