天天看點

Maven多層級架構打包

分享知識 傳遞快樂

環境:

  • Java
  • IDEA
  • Maven 多層級架構
  • Jenkins

描述:

由于架構是 Maven 多層級架構,采用 Jenkins 打包釋出的方式對服務部署,與傳統的單層架構不同。傳統的單層架構直接在 pom.xml 檔案層通過 mvn 指令就可以實作對服務打包部署。在多層架構中如果在外層打包每次都要對所有服務打包,這樣的方式雖然簡單但打包和部署非常耗時;如果在使用者接口層或web層打包,pom.xml 中引入的本地子產品則不能打包到使用者接口層或web層中,進而導緻打包失敗或啟動時缺包等問題。為了節省打包時間,又要提升打包成功的機率,需要在父級 pom.xml 檔案層對需要打包的子產品進行打包,具體打包方式參考一下内容。

多子產品工程的打包指令參考:

-am --also-make 建構所列子產品的所有依賴子產品;

-amd -also-make-dependents 建構依賴于所列子產品的子產品;

-pl --projects <arg> 建構制定的子產品,子產品間用逗号分隔;

-rf -resume-from <arg> 從指定的子產品恢複反應堆。

指定 settings.xml 打包

mvn clean package --settings C:\Users\Admini\.m2\settings.xml

如果需要根據指定的 settings.xml 檔案打包子產品依賴在 --settings 後面跟上 maven settings.xml 檔案位址就可以。

指定子產品打包

mvn clean package -pl demo-web -am --settings C:\Users\Admini\.m2\settings.xml

打包指定子產品,如果是多子產品用逗号分割。

多層級子產品打包

mvn clean package -pl business-center\demo-business\demo-web -am --settings C:\Users\Admini\.m2\settings.xml

多層級子產品打包需要在最頂層的 pom.xml 檔案中執行 mvn package <需要打包的子產品路徑> 指令,就可以解決不能打包父級或引用自定義的 jar 。

多層子產品與單層子產品打包差別:

多層子產品可能會涉及多層依賴關系,如果打包可能會找不到父級引用;單層子產品則不會出現此問題。

多層級多子產品打包自動建構依賴關系