2015-06-09 56 views
0

神器提供了一些API,爲客戶有了它,這些都是其在INTERAL代碼庫實現只有幾Java接口交互...建築API只考慮到我們的行家謨行家

現在,如果我們只是建立了罐子,發佈它任何人都可以看到我們用於實現的內部類,但是我們只需要發佈幾個Java接口(以及幾個DTO類可能)...

是否可以精確選擇我們想要的java文件建立jar並創建兩個工件,如(product.jar/war和product-api.jar)

prupose是爲了限制被其他球隊的代碼可能被濫用......

+0

您可以拆分項目進入多個模塊,如: 項目的API,項目-JAR,項目的EJB,項目戰爭等 – novy1234

+0

是的,但是,吸,想象我」將只有幾個接口和dto類aproject ...我會這樣做,如果沒有其他選擇是可能的... 我希望有一個解決方案只是pom.xml或與gradle也許? – vach

+0

爲什麼它很爛?這是maven應該做的。除了創建項目API將有助於解耦您的項目。未來,與第三方共享API也將變得更加容易。 – plastique

回答

2

最好是使Maven的單獨的模塊代表喜歡你的模塊:

project-api 

其中只包含了接口,可以由他人單獨使用。

project-impl 

一個實施等 以上使測試更容易等都是不錯的選擇與問候的關注點分離。

+0

謝謝,這對於大型項目來說很常見嗎?我的項目變得太大了,許多小團隊創建了愚蠢的依賴關係,現在很難擺脫......因此我想消除他們將使用他們不應該使用的源代碼的可能性。 – vach

+1

我正在從事320個模塊/ 120開發人員的項目,是的,我們完全按照您所描述的方式來防止耦合。 – khmarbaise

+0

@vach我不知道這是如何幫助你防止其他團隊濫用代碼,因爲你需要爲這兩個模塊提供罐子。我遇到了類似的情況,我必須爲包含接口的API構建一個單獨的模塊。但是我沒有完全理解這個概念,以及它在與多個團隊合作時的幫助。 –

1

你的問題是關於保護代碼而不是一般的maven。你可以有多模塊maven項目,但任何人都可以下載並解壓縮它。 一些想法作爲Java並有內置的機制來支持這一點,但也有變通辦法......一些想法..

  1. 在打包項目的罐子,不要在罐子put.java類/建造。 那麼代碼可以反編譯回到java,但至少你不要給給.java類開始。
  2. 您可以使用 各種可用選項來模糊您的代碼。讀取位here ...
  3. 在外部, 將您的api公開爲Web服務,您在其中定義了 請求/響應的合同。沒有人能看到你的代碼...
+0

我知道你可以用罐做什麼,只有那裏有類文件,我知道混淆... 我問的是我可以建立另一個工件client-api.jar將只包含幾個接口和它們所具有的任何依賴關係(dto類)...該jar不應包含任何其他接口... – vach

+0

我不想隱藏我的代碼,想象一下雙g項目很多團隊正在開發它,並開始在他們的項目中添加大量的依賴項(有時會循環)......並開始使用他們永遠不會使用的類,但複製或重新實現它們自己... – vach