2010-09-22 54 views
5

我正在開發基於Spring(MVC),Hibernate,PostgreSQL(使用Maven)的Web項目。現在我試圖讓一位新客戶在應用程序的多個部分中需要一些差異。我已經閱讀了Sonatype的Maven權威指南,以獲得關於多模塊Maven項目的感受,但是我的一個最重要的問題還沒有在那裏得到回答:我如何在幾個模塊/項目上共享公共視圖組件並將它們集成在一起在我想要建立的客戶上?服務層非常清晰,但我無法弄清楚在構建特定客戶模塊(然後取決於公共模塊)時如何共享jsp/jspf文件並將其與自定義文件合併。爲兩個客戶端開發Java Web應用程序項目

你會如何避免只是簡單地克隆常用的代碼?

+0

感謝您的回答!特別是Maven的依賴插件似乎很有用。我已經使用Maven WAR插件和它的覆蓋圖來介紹另一種解決方案。然後你可以添加對另一場戰爭的依賴,並重新使用那些部分(例如普通戰爭)。遠程資源插件似乎主要用於許可證分發,但也可能完成這項工作。 – velaia 2010-09-22 07:46:04

+0

您應該將這些註釋添加到您所指的答案中或編輯您的原始問題。另外:StackOverflow版本的「感謝您的答案」是點擊向上箭頭,althogh口頭表示感謝也感謝:-) – 2010-09-22 07:55:34

回答

3

您可以把常用的部件庫中的項目和使用dependency:unpackdependency:unpack-dependencies

如需要解壓它們你的項目佈局將是這樣的:

root 
|____ common-lib (jar, contains common java code) 
|____ common-gui (jar, contains only non-java stuff like js, jsp, css etc) 
|____ client1 (war) 
|____ client2 (war) 

客戶端1和客戶端2將各有一個普通compile依賴於共同-lib下,但只有一個provided依賴於通用的GUI(如果你使用dependency:unpack它不必是項目依賴的話)

現在你會添加如下代碼到客戶端項目:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>unpack-common-gui-elements</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>unpack</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
        <artifactItem> 
         <groupId>com.yourcompany</groupId> 
         <artifactId>common-gui</artifactId> 
         <version>${project.version}</version> 
         <type>jar</type> 
         <!-- war assembly directory --> 
         <outputDirectory> 
          ${project.build.directory}/${project.build.finalName} 
         </outputDirectory> 
         <includes>**/*.jsp,**/*.css,**/*.js</includes> 
        </artifactItem> 
       </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

這樣,你可以重複使用您的組件,但你總是可以自己選擇你發佈的組件客戶。

+0

這是另一種方式,也可以是有用的,所以+1。它讓我想起了[如何在Maven中跨項目共享資源](http://www.sonatype.com/people/2008/04/how-to-share-resources-across-projects-in-maven/)。 – 2010-09-22 13:32:12

4

我無法弄清楚在構建特定的客戶模塊(這取決於公共模塊)時如何共享jsp/jspf文件並將它們與自定義文件合併。

這看起來像是一個很好的用例Overlays

+0

我同意(+1)... – 2010-09-22 09:38:39