2012-01-19 25 views
1

Sonatype的Maven:完整的參考文獻表示編譯作用域依賴關係在所有類路徑上並與工件一起打包。相關性是否應該與Maven jar神器一起打包?

編譯是默認範圍;如果未提供 作用域,則所有依賴項都是編譯範圍的。編譯依賴關係在所有類路徑中都可用,並且它們是打包的。

雖然我看不到它們是封裝的。 。 。這是否意味着它們應該包含在jar文件中?如果不是,那是什麼意思?

回答

1

你是對的。編譯的作用域依賴不會與輸出jar打包在一起。 (使用JAR插件)。我認爲'包'是指最終產品(二進制可執行文件)。

我遇到了這個stackoverflow線程(How can I create an executable jar with dependencies using Maven?)。在這裏他們打包所有的依賴關係來構建一個可執行的Main類。在這種情況下,您需要打包的可執行文件中的所有編譯時依賴項。 (因爲JAVA延遲加載它不是必須的,但最好有所有的編譯時間依賴)

+2

我不認爲'包'是指最終產品可執行文件,因爲你描述它。我這樣說是因爲如同一本書中所討論的,「提供的」範圍被描述爲一個範圍,在這個範圍中依賴關係沒有打包到WAR工件中。 WAR和JAR都是在包裝階段生產的。 。 。也許答案是Jar包永遠不會將依賴關係放在工件中。這將導致我得出結論:對於JAR來說,編譯和提供的範圍沒有區別。 。 。你對這種說法有何感想;) – chad

+0

我認爲你的論點是有效的。提供的範圍只有在包裝類型是戰爭時纔有意義(也可以有其他包裝類型)。 –

相關問題