Maven編譯指定(跳過)Module


今天在項目里新添加了一個Module, 但是在jenkins編譯的時候會將這個Module也編譯, 問題是這個Module根本不需要編譯而且巨慢。

因此我只想編譯指定模塊 ModuleA以及它依賴的必須模塊, 以下是相關的命令

-am --also-make 同時構建所列模塊的依賴模塊;
-amd -also-make-dependents 同時構建依賴於所列模塊的模塊;
-pl --projects <arg> 構建制定的模塊,模塊間用逗號分隔;
-rf -resume-from <arg> 從指定的模塊恢復反應堆。

我本來的模塊是

<modules>
        <module>ModuleA</module>
        <module>ModuleB</module>
        <module>ModuleC</module>
        <module>ModuleD</module>
        <module>ModuleE</module>
    </modules>

首先查看一下依賴關系

mvn dependency:tree

當不然不是上面這句, 所有的依賴關系太復雜了, 會列出依賴的所有的包

自己打開各個module的pom看一下互相之間的依賴就行

假如只想編譯ModuleB及其依賴的模塊, 那么在編譯的時候

mvn clean install -pl ModuleB -am 

假設Module依賴了A和C, 那么在編譯的時候就只會編譯A B C三個模塊~

如果ModuleD依賴了B, 然后在編譯的時候使用了-amd的話, 那么ModuleD也會被編譯, 這個意思就是編譯依賴了所列模塊的模塊

mvn clean install -pl ModuleB -am -amd

使用上面的命令會同時編譯 A B C D ~

-rf 選項用於選擇起始位置(發現結合-rf的時候, -am和-amd是需要后置的)

假設ModuleA和ModuleC都依賴ModuleB, 那么如果在ModuleB截斷, 整個流程不會變, 如果在ModuleA截斷, 那么只會從ModuleA開始執行后面的構建流程。

mvn install -pl ModuleB -am -amd -rf ModuleA

上面的命令是從ModuleA開始截斷的

總結

一般來說經常用到的命令, 你想編譯的Module: ModuleX

mvn clean install ModuleX -am

這行就夠了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM