2014-10-06 79 views
8

當我使用gradle build構建彈簧引導應用程序(對獨立jar)時,會生成適當的工件。生成的jar包含所有相關的jar,並且是可執行的。Gradle maven-publish不會構建獨立的彈簧引導應用程序

我還配置了Maven的發佈插件如下:

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

現在,當我執行gradle publish,無依賴性更小罐子得到建立和公佈。

在後一種情況下不執行以下步驟。

:myProject:bootRepackage                   
:myProject:assemble 

如何確保在發佈時執行正確的構建步驟?

回答

17

我有點驚訝,從components.java發佈不會觸發Java插件的assemble任務。 Spring Boot的bootRepackage任務設置爲assemble任務的依賴關係,因此您需要使publish運行assemble。嘗試添加以下內容到您的build.gradle

publish { 
    dependsOn assemble 
} 
+0

原因是Java插件只是將'jar'任務的結果添加到組件集合中。這將是Spring Boot插件的職責,將其修改爲重新打包的jar。也就是說,人們可能會爭辯說,發佈的內容實際上應該只是簡單的jar,而重新包裝的jar應該可以在獨特的分類器下發布。 – 2014-10-06 16:40:01

+1

這是一個很好的建議,謝謝。 Spring Boot並沒有將重新打包的jar作爲單獨的工件來處理,而是將當前jar任務的輸出轉換爲適當的位置。我現在想知道是否應該更改,以便在Gradle構建中引用原始工件和重新打包的工件。我已經打開https://github.com/spring-projects/spring-boot/issues/1666。 – 2014-10-06 16:48:48

+0

在重新包裝的jar上分配分類器[已經支持](http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#build-tool-plugins-gradle-repackage -組態)。只需添加'bootRepackage {classifier ='boot'}即可。 – 2014-10-06 16:54:20

相關問題