2010-03-26 97 views
1

我有一個項目的結構像在Maven項目中組裝模塊資源的正確方法是什麼?

module-a/src/main/java 
module-a/src/main/styles 
module-distribution/src/main/assembly 

模塊分佈取決於模塊一個,他們都共享父POM,幷包括在該父POM模塊。

的想法是有一個裝配佈局像

my-final-assembly/lib 
my-final-assembly/styles 

其中lib目錄包含所有項目工件,包括依賴(即模塊a.jar文件及其依賴罐),和模塊a.jar文件不應該包含它的樣式目錄。樣式目錄應該駐留在my-final-assembly/styles中。

我可以填寫lib目錄很容易包括

<dependencySet> 
    <useProjectArtifact>false</useProjectArtifact> 
    <outputDirectory>lib</outputDirectory> 
</dependencySet> 
在我的彙編文件

。但是,module-a/src/main/styles呢? 我可以

  1. 它包括在模塊-一個工件(它將駐留在模塊a.jar文件)
  2. 不包括它在模塊a.jar文件。

當然,1)和2)對我來說都是無效的。在第一種情況下,我必須以某種方式從我的module-a.jar中提取styles目錄。在第二種情況下,styles目錄根本不會被複制,因爲僅複製工件,而不是整個目標文件夾。

我有最後的手段爲樣式目錄內容創建一個單獨的模塊,並使模塊依賴於它,但對我來說看起來像是一種矯枉過正。雖然在這種情況下調整我的彙編文件以獲得我想要的內容很容易。但是單獨的模塊需要單獨一個字體和xmls模塊?如果這就是你所說的Maven Way,那我會很傷心。

回答

1

不知何故,您必須將樣式置於某個位置,以便能夠將它們包含在「最終裝配」中。我可以想到3種方法:

第一種方法是你所描述的:把樣式放在一個單獨的模塊中,並讓bot模塊-a和模塊分佈依賴於它(實際上,我並不真正理解爲什麼模塊-a對它有依賴性,因爲你沒有使用它們/在模塊中包括它們 - 一個工件,但這是由你自己決定的)。

第二種方法是保持當前結構,但爲模塊a創建中間程序集。這個程序集將包含模塊-a.jar 樣式(或者可能只是樣式)。然後,在模塊分發中,您將拉動該程序集,將其解壓並創建「最終程序集」。

第三種方法與前一種方法類似,不同的是最終裝配將直接從模塊-a創建(它不清楚模塊分佈是否具有其他依賴性而不是模塊-a;如果不是,那麼你可以做一切從模塊-a)。

+0

感謝提示,Pascal! 該項目有一堆依賴關係,module-a不是唯一的,因此我選擇了第二種方法。 我用程序集id「with-styles」打包module-a.zip: module-a-with-styles.zip/lib/module-a。jar, module-a-with-styles.zip/styles 然後在final-assembly.xml中做了一些調整後,我得到了我的預期。 順便說一句,作爲問題的答案,是否會將我的工作解決方案的詳細信息公佈於衆,以便所有人都能看到它?這個評論區域不允許格式不對 – zamza 2010-03-26 22:17:16

+0

@zamza不客氣。關於你的問題,你的實現可能有點特定,但如果你認爲它可以被其他人重用,請不要猶豫。具體與否,它不會傷害。 – 2010-03-26 22:22:40

相關問題