2012-11-20 68 views
0

我有這種依賴性(和其他許多類似這樣):Maven的EAR編譯

<dependency> 
    <groupId>jShrink</groupId> 
    <artifactId>jShrink</artifactId> 
    <version>3.0.2</version> 
    <scope>system</scope> 
    <systemPath>${project.basedir}/../kladr-ear/lib/jShrink-3.0.2.jar</systemPath> 
</dependency> 

因此,如何增加這個JAR到EAR/lib文件夾與Maven而包?

回答

-2

所以我找到了將jar庫放入ear/lib路徑的方法。我已將它們添加爲<jarModule>maven-ear-plugin。在每個<jarModule>中,我還添加了<bundle> - 這個jar將被複制的路徑。

+0

將它們作爲依賴關係添加到POM就足夠了。 – fnt

+0

沒有它不夠,因爲與範圍系統的依賴關係不會被複制到lib目錄。 –

+1

爲什麼人們希望依賴於與EAR一起交付的範圍「系統」?這個範圍的依賴性意味着在運行時提供。 – fnt

1

綜觀現有的Maven scopes,我希望你以紀念這個作爲

<scope>compile</scope> 

並上傳jar文件到你的資料庫(本地或遠程)。 Maven應該給你適當的命令行來執行上傳。

編輯:如下所述,這個範圍是默認,因此你可以省略它。

+0

因此,如果我需要將該項目打包到另一臺計算機上,我需要將這個罐子再次上傳到倉庫中。 –

+0

順便說一句,正如我注意到的,maven添加jar到EAR/LIB文件夾,只有當他們沒有任何範圍時... –

+0

你不需要編譯,它是未指定時的默認值。 –

0

進入EAR的依賴性通常應基於EJB模塊所需的依賴性。如果在編譯範圍內有一個包含庫X的EJB模塊,那麼這將觸發Maven想要將該庫打包到EJB中。耳朵根本不需要管理任何示波器。

如果您沒有任何EJB並且只有WAR,我不會將庫打包到EAR中,而只是將它們作爲WAR的一部分進行部署(因此它們最終放在WEB-INF/lib中)。保持Web依賴關係很好,並且包含每個模塊,即使這意味着您得到重複。

另外編譯的是默認範圍,因此您不需要手動聲明它,除非您正在重寫另一個依賴項的範圍集。