2013-02-17 45 views
0

我有一個單獨的java項目,其中包含3個不同的類,每個類都有一個main()。 我有一個針對整個項目的單個pom.xml文件。Maven3:如何從1個項目創建3個罐子

我希望Maven爲每個具有依賴關係的類創建一個jar。

我該怎麼做?

回答

0

你真的不應該那樣做。請閱讀this,也鏈接到another SO帖子。

+0

感謝您的警告 - 我會嘗試看看我是否可以將項目拆分爲3個小項目。 – Shvalb 2013-02-18 06:25:43

2

如果你有三個主要的類,每個都是一個單獨的應用程序,那麼很可能你應該有四個jar包:一個用於每個主類,另一個用於它們之間共享的代碼。 Maven與「每個模塊中的一件神器」的概念非常緊密地聯繫在一起,如果你試圖違背這一點,你將走向一條黑暗而危險的道路。在Maven中表達此結構的自然方式有五個或六個模塊:

  1. 您的項目的根模塊聚合了所有其他模塊。這不會是一個罐子生產模塊。它的包裝將是「pom」。
  2. (可選)一個「父」子模塊,所有工件生成模塊都從中繼承而來。您可以使用此模塊來建立通用的依賴版本,設置所有模塊所需的存儲庫等。這也將打包設置爲「pom」。這是可選的,因爲項目根目錄下的聚合模塊也可以填充這個角色,但是就像在代碼中一樣,分離關注點是很好的。這個主題由"POM Best Practices" in the Sonatype book覆蓋。
  3. 一個子模塊,包含您的三個主要類之間共享的所有代碼。

和4-6:每個主類的子模塊以及特定於該主類/應用程序的支持代碼和配置。

在文件系統上,該解決方案將類似於:

<project folder> 
    - pom.xml 
    - parent-module 
    - pom.xml 
    - common 
    - pom.xml 
    - app1 
    - pom.xml 
    - app2 
    - pom.xml 
    - app3 
    - pom.xml 

然後你會使用類似的assembly pluginappassembler創建具有適當的配置,圖書館和啓動腳本都一起打包發行。

+0

好的,我會盡力做到的!感謝您的詳細解釋! – Shvalb 2013-02-18 06:02:45