如果你想在openshift上使用多模塊maven項目,那麼你必須告訴openshift如何構建它們。您可以通過定義構建環境變量或編寫可由Openshift解釋的自定義構建腳本來實現此任務。
對於這兩種方法,你可以按照this教程:
如果你想用第一種方法來工作,你可以告訴openshift而通過定義「MAVEN_ARGS_APPEND」變量構建配置構建過程中使用額外的Maven命令。
因此,當構建操作在openshift上啓動時,它會告訴Maven使用這些附加參數構建應用程序。
定義,下列獨立戰爭部署額外的模塊構建環境變量:
MAVEN_ARGS_APPEND:-pl MODULENAME - 兼 - 讓
ARTIFACT_DIR:MODULENAME /目標/
MODULE_DIR:MODULENAME
在這裏「-pl」命令提供了構建「xyz-data-services」及其所有依賴關係。因此,如果你的「xyz-data-services」模塊依賴於「xyz-common」,那麼maven將構建「xyz-common」,爲「xyz-data-services」創建相關的工件,將它們打包在一起並部署「xyz-數據服務「,如同戰爭中的戰爭一樣。
對於你的情況,假設你想打包「xyz-data-services」模塊和「xyz-front-end」模塊並將其部署。
案例1:
如果你想使這些模塊自部署,那麼你必須創建一個將在不同的吊艙運行兩個應用程序。
首先應用程序將這些構建環境變量:
MAVEN_ARGS_APPEND: -pl xyz-data-services --also-make
ARTIFACT_DIR: xyz-data-services/target/
MODULE_DIR: xyz-data-services
,第二個會有這些傢伙:
MAVEN_ARGS_APPEND: -pl xyz-front-end --also-make
ARTIFACT_DIR: xyz-front-end/target/
MODULE_DIR: xyz-front-end
案例2:
如果要部署這些模塊然後你可以添加一個額外的模塊到你的項目中,將兩個戰爭打包成一個耳朵併爲這個耳朵定義變量。
因此,讓這個耳朵是「webapp」,你的父母看起來像;
...
<modules>
<module>xyz-common</module>
<module>xyz-data-services</module>
<module>xyz-batch-importer</module>
<module>xyz-frontend</module>
<module>xyz-webapp</module>
</modules>
...
和xyz-webapp pom的樣子;
....
<artifactId>xyz-webapp-</artifactId>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>xyz-common</artifactId>
<version>${project.version}</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>xyz-data-services</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>xyz-frontend</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
</dependencies>
....
所以你的構建環境變量會是;
MAVEN_ARGS_APPEND: -pl xyz-webapp --also-make
ARTIFACT_DIR: xyz-webapp/target/
MODULE_DIR: xyz-webapp
如果你只想用單一的戰爭和單一的pod工作;
案例3:
你可以只打包前端應用程序作爲戰爭和聲明依賴於所有包裝成「.jar文件」
你可以去上這種情況下,你想其他模塊。這很重要,它取決於你的「微服務」實現。由於「微服務」術語和實現沒有明確定義,並且可能因體系結構或某些業務需求而異,所以您決定將前端,api,後端打包在一起或獨立管理它們。
這是微服務架構的主要目標之一:獨立部署每個應用程序! –
那麼我該怎麼做?爲每個模塊創建不同的項目? –