2017-03-31 41 views
0

1)我在Maven的Eclipse中的pom.xml項目中包含了一個Spring Context依賴項。在Maven中,我的最終構建和安裝的.JAR中包含了依賴項二進制文件嗎?

2)我跑項目上的「安裝」階段,並妥善建成,該項目被安裝到我的本地庫的.m2

3)當我拉開我的.JAR,我只看到我的單我創建的自定義類。

這帶來了兩個問題:

1)外部的依賴類只在您的最終建成罐子如果從它一類的類中物理實例包括在內?

2)爲什麼,當我進口SpringContextAnnotationConfig類到類,並實例化它的一個實例,並安裝我的項目,我還是隻看到了我的自定義類,當我拉開我的.JAR。這是不尋常的嗎?或者,SpringContextAnnotationConfig現在剛剛寫入.class二進制文件,因此當我將.jar部署到另一個JVM時,它在我的定製構建的.class二進制文件中擁有它的所有依賴關係?

感謝

SOLUTION

的問題是,我期待行家爲一個JAR輸出做同樣的,因爲它會爲一場戰爭。當使用webapp archetype生成WAR文件時,Maven自動將所需的依賴項jar打包到WEB-INF目錄中。

我基本上試圖瞭解遠程全新服務器上的容器如何運行我的類,而無需依賴項二進制文件。我試圖運行一個用於生成JAR文件的maven,而這個文件並沒有包含我的依賴關係。但是,當我運行maven install來構建一個WAR文件時,我的依賴關係已經準備好部署了。

+0

1)是和2)除非你真的創建了一個可執行的jar或war文件,這些庫將不會被包含。它只是註冊依賴關係,但只包含在打包的.war或.jar中。 – rptmat57

+0

jar將僅爲您的代碼庫創建。因爲外部依賴關係本身不需要再創建。你可以使用zip壓縮包。運行時將所有依賴關係添加到classpath – jos

回答

2
  1. 不,它們從不包含(除非你使用了一個特殊的插件)。

  2. 請1.

如果你作爲一個依賴添加此神器一些其他的項目,它的依賴(和它們的依賴等)將被自動添加(這是可控的,這樣你就可以例如排除它們或更改版本)。但它們取自pom.xml,而不取自.jar本身。這也允許不下載相同的庫很多次。

對於建設脂肪罐,見例如How can I create an executable JAR with dependencies using Maven?。特別是春季你可能想要Spring Boot

相關問題