簡體   English   中英

使用Maven構建api唯一的工件

[英]building api only artifact with maven

鑒於我們的maven projet為客戶端提供了一些與之交互的api,這些只是在內部代碼庫中實現的少數Java接口...

現在,如果我們只是構建jar並將其發布,那么任何人都可以看到我們用於實現的內部類,但是我們只需要發布少量java接口(也許還有一些DTO類)...

是否有可能精確地選擇我們要為其構建jar的Java文件並創建兩個工件(例如product.jar / war和product-api.jar)

這樣做的目的是限制其他團隊可能濫用該代碼。

最好的辦法是在Maven中創建單獨的模塊,這些模塊代表您的模塊,例如:

project-api

其中僅包含接口,並且可以由其他人單獨使用。

project-impl

就關注點分離而言,以上使測試更容易等是一個不錯的選擇。

您的問題是關於保護代碼,而不是一般的Maven。 您可以擁有多模塊Maven項目,但是仍然任何人都可以下載該項目並對其進行反編譯。 很少有人像Java那樣有內置的機制來支持這一點,但是有一些解決方法。

  1. 當您將項目打包為jar時,請勿在jar / build中放入.java類。 可以將代碼反編譯回Java,但至少不要給出以.java類開頭的代碼。
  2. 您可以使用各種可用選項來混淆代碼。 在這里閱讀位...
  3. 在極端情況下,將您的api公開為Web服務,您可以在其中定義請求/響應的合同。 沒有人可以看到您的代碼...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM