簡體   English   中英

Maven 是否支持增量構建?

[英]Does Maven support incremental builds?

如何使用 Maven 來支持增量構建? 某處有指南嗎? (谷歌搜索結果令人失望)

我無法弄清楚驅動Maven社區的動態,但對於對構建過程進行細粒度控制並不友好。

無論如何,在挖掘之后我找到了一個對我有用的答案: http//www.codesenior.com/en/tutorial/Java-Maven-Compile-Only-Changed-Files

請注意,首先將值設置為false會使我感到困惑,但此處給出了解釋: https//stackoverflow.com/a/19653164/409638

為方便起見,這里轉載:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <useIncrementalCompilation>false</useIncrementalCompilation>
    </configuration>
</plugin>

這是useIncrementalCompilation設置為false ,這是關鍵。

我可以確認,當我運行我的構建時,我已經離開:

[INFO] Changes detected - recompiling the module!
[INFO] Compiling 114 source files to /home/vagrant/workspace/splat/target/classes

[INFO] Compiling 1 source file to /home/vagrant/workspace/splat/target/classes

這削減了我的增量構建的幾秒鍾。 現在我所要做的就是弄清楚如何禁用所有其他不必要的錯誤,這會減慢我的編輯/評估周期......

默認情況下,Maven逐步構建,但事實證明編譯器插件(即javac的核心)是如此之快以至於每次構建新鮮都不是代碼庫大小合理的瓶頸,而不是與構建大型程序集或運行大型測試相比套房。 (與大多數語言一樣,Java的編譯速度比C ++快得多。)

如果您的項目有數百個模塊,則可以使用maven-incremental構建插件 它節省了大量時間。

Takari Maven生命周期

是的,現在可以感謝takari-lifecycle-plugin了 看一下這個示例項目: maven-incremental-compilation

樣本輸出

[INFO] --- takari-lifecycle-plugin:1.10.2:compile (default-compile) @ maven-incremental-compilation ---
[INFO] Performing incremental build
[INFO] Compiling 2 sources to /home/mariuszs/maven-incremental-compilation/target/classes
[INFO] Compiled 1 out of 2 sources (670 ms)

更多信息

Maven支持使用命令行參數-pl-am-amd構建多模塊項目的子集,以指定要構建的模塊,還分別構建依賴項和構建依賴項。 它也只會在任何給定模塊中編譯已更改的源文件(實際上不是maven功能,而是javac功能)。

更新:真正的增量構建支持——類似於 Gradle 中的支持——已經在 Maven 代碼庫中實現。 介紹視頻在這里: https : //youtu.be/DEQG4CNFMFE

雖然到目前為止 maven 核心不支持緩存,但您可以查看這個 PR - 它是一個真正的增量構建,支持遠程緩存。 它還支持所有插件 - https://github.com/apache/maven/pull/526

您可以從分支構建和嘗試 maven 並享受。 我們正在努力將緩存以核心擴展的形式引入 Maven

親切的問候亞歷克斯

暫無
暫無

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

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