假設我有一個包含2個模塊的重用項目:API和服務。重用api模塊定義了其他應用程序項目可以使用的接口,類型和註釋。重用服務模塊包含真正的實現。重複使用項目如下所示:Maven Java接口和實現多模塊問題
pom.xml: id=reuse, group=com.test.project, version=1.0.0
|__api-module
|__pom.xml: parent={id=reuse, group=com.test.project, version=1.0.0}, id=reuse-api
|__service-module
|__pom.xml: parent={id=reuse, group=com.test.project, version=1.0.0}, id=reuse-srv
而且我們的某個應用程序對重新使用模塊有一定的影響。
pom.xml: id=application, group=com.test.project, version=2.0.0
dependency={scope=compile, id=reuse-api, group=com.test.project, version=1.0.0}
dependency={scope=runtime, id=reuse-srv, group=com.test.project, version=1.0.0}
的事情是,如果現在我們再使用服務模塊中改變一些東西,這意味着我們改變再利用模塊的執行力度,整個再利用模塊(API和服務)已經成爲編譯和新版本將被髮布,因爲api和服務模塊的版本從父模塊繼承。新的POM結構如下所示:
pom.xml: id=reuse, group=com.test.project, version=1.0.1
|__api-module
|__pom.xml: parent={id=reuse, group=com.test.project, version=1.0.1}, id=reuse-api
|__service-module
|__pom.xml: parent={id=reuse, group=com.test.project, version=1.0.1}, id=reuse-srv
之後,應用程序必須改變與再利用的新版本的依賴:
pom.xml: id=application, group=com.test.project, version=2.0.1
dependency={scope=compile, id=reuse-api, group=com.test.project, version=1.0.1}
dependency={scope=runtime, id=reuse-srv, group=com.test.project, version=1.0.1}
有沒有一種方式的修改重新使用服務模塊也不會導致應用程序發生變化?應用程序並不需要受到重用實現更改的影響,或者?
您有任何意見/建議嗎?謝謝。
如果不更改,爲什麼要更改API的版本? –
無需更改api的版本。如果您還使用類似於Spring的框架,請配置您的bean並使用服務定位器將bean的實例獲取到需要的地方。 – alainlompo