2014-10-06 21 views
8

Khi tôi xây dựng một ứng dụng khởi động mùa xuân (vào một bình độc lập) sử dụng gradle build, các tạo phẩm thích hợp được tạo ra. Bình kết quả chứa tất cả các lọ phụ thuộc và có thể thực thi được.Gradle maven-publish không xây dựng ứng dụng khởi động mùa xuân độc lập

Tôi cũng đã cấu hình các plugin maven-xuất bản như sau:

publishing { 
    publications { 
     mavenJava(MavenPublication) { 
     from components.java 
     } 
    } 
} 

Bây giờ khi tôi thực hiện gradle publish, một lọ nhỏ hơn nhiều mà không phụ thuộc được xây dựng và công bố.

Các bước sau không được thực hiện trong trường hợp sau.

:myProject:bootRepackage                   
:myProject:assemble 

Làm cách nào để đảm bảo các bước xây dựng chính xác được thực thi khi xuất bản?

Trả lời

17

Tôi hơi ngạc nhiên khi xuất bản từ components.java không kích hoạt tác vụ assemble của plugin Java. Nhiệm vụ bootRepackage của Spring Boot được thiết lập dưới dạng phụ thuộc của nhiệm vụ assemble, do đó bạn cần phải thực hiện publish để chạy assemble. Hãy thử thêm các mục sau vào số build.gradle:

publish { 
    dependsOn assemble 
} 
+0

Lý do là plugin Java chỉ thêm kết quả của tác vụ 'jar' vào bộ sưu tập thành phần. Nó sẽ là trách nhiệm của các plugin Spring Boot để sửa đổi này để được đóng gói jar. Điều đó nói rằng, người ta có thể lập luận rằng những gì được công bố trên thực tế chỉ là cái lọ đơn giản và cái lọ được đóng gói lại có lẽ nên được xuất bản theo một phân loại duy nhất. –

+1

Đó là một gợi ý tốt, cảm ơn. Thay vì xử lý các lọ đóng gói như một tạo tác riêng biệt, Spring Boot hiện đang chuyển đổi đầu ra từ nhiệm vụ jar tại chỗ. Bây giờ tôi tự hỏi liệu điều đó cũng nên được thay đổi sao cho cả tạo phẩm gốc và tạo tác đóng gói lại có thể được nhắc đến trong bản dựng Gradle. Tôi đã mở https://github.com/spring-projects/spring-boot/issues/1666. –

+0

Chỉ định một trình phân loại trên bình đóng gói lại [đã được hỗ trợ] (http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#build-tool-plugins-gradle-repackage -cấu hình). Chỉ cần thêm 'bootRepackage {classifier = 'boot'}. –

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