2012-07-02 68 views
5

首先,我從C#開始回到Java,所以,如果我的術語或哲學不太一致,請致歉。軟件包與java中的項目分離

下面是背景:我們已經有越來越多的爲網絡編寫的內部支持工具。他們在前端使用HTML5/AJAX /其他流行語,後端使用Java。這些工具利用了一個輕量級的內部框架,因此它們可以共享一個用於安全性和其他配置的管理界面。每個工具都由獨立作者編寫,我希望這種趨勢能夠繼續下去,所以我希望讓未來的作者能夠輕鬆地在我們已經決定用於事物的第三方庫上保持「標準化」像DI,單元測試,ORM等

我們的包命名目前看起來是這樣的:

  • com.ourcompany.tools.framework
  • com.ourcompany.tools.apps.app1name
  • com.ourcompany.tools.apps.app2name

...等等。

所以這裏是我的問題:應該將這些應用程序(和框架)中的每一個作爲Maven安裝程序,Eclipse等目的的單獨項目處理?

隨着時間的推移,我們可能會出現很多應用程序,所以看起來分離會讓依賴關係更加清潔,並讓其他人更輕鬆地使用單個工具。另一方面,(1)也許「分裂」一個包裝結構的較深部分在多個項目中是一種代碼異味,(2)將它們組合在一起會使工具編寫者更傾向於使用已經存在的第三方庫工具。

FWIW,我最初的直覺是將它們分開。

什麼說你,Java大師?

回答

3

我把我的項目分離出來,但是使用父pom來包含所有的依賴和其他公共屬性。各個工具/項目都有一個名稱和一個對父項目的引用,以及任何項目特定的依賴關係(如果有的話)。這有助於保持常見的庫和依賴關係,因爲常見的庫已經全部配置好了,但允許我專注於需要使用的代碼庫的特定部分。

+0

直到你提到它之前,我還沒有意識到依賴關係處理的父pom概念。我真的很喜歡這個想法來加強整個應用程序的標準化。其他答案也很棒,但是父母給了這個優勢。謝謝! –

7

我絕對將它們分開。爲了Maven的目的,確保每個應用程序/項目對框架/應用程序都有適當的依賴關係,因此當您只想構建單個應用程序時,您不必構建所有應用程序。

1

如果某個項目的某個部分可能在多個項目中使用,則有必要將其解決。如果您需要更新其中一個常用項目中的代碼,它會使它更簡潔一些。

2

我肯定會把這些東西分成單獨的項目。

你應該使用Maven來處理依賴/自動生成過程(無論是自己內部的共享庫和第三方的依賴)。多個應用程序引用相同的共享庫不會有任何問題 - 如果需要,甚至可以保留多個版本。

夫婦從這種做法獎金:

  • 這將迫使你仔細想一下你的API設計,爲共享項目,這將是從長遠來看是好事。
  • 這可能也給你有關源代碼控制權的粒度 - 即你的開發人員可以檢查出並在特定應用程序或後端模塊單獨工作
0

如果你把它們放在一起,你將有更少的障礙開發,構建和部署您的工具。

我們有相反的情況,有許多單獨的項目。將它們合併成一個項目樹後,我們的工作效率會更高,這對我們來說比任何慣例發生的趨勢都重要。