• 作者:老汪软件技巧
  • 发表时间:2024-09-08 00:03
  • 浏览量:

这是增量构建导致的。

参考资料:maven-compiler-plugin

如何关闭增量构建

//命令行参数
-Dmaven.compiler.useIncrementalCompilation=false
// 插件配置

        <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <configuration>
                  <useIncrementalCompilation>falseuseIncrementalCompilation>
                configuration>
            plugin>
        plugins>
    

to enable/disable incremental compilation feature.

This leads to two different modes depending on the underlying compiler. The default javac compiler does the following:

“启用 / 禁用增量编译功能。这会根据底层编译器产生两种不同的模式。默认的 javac 编译器会进行以下操作:

true(默认值):在这种模式下,编译器插件会确定当前模块所依赖的任何 JAR 文件在当前构建运行中是否发生了变化;或者自上次编译以来是否有任何源文件被添加、删除或更改。如果是这种情况,编译器插件会重新编译所有源文件。

false(不推荐):这种模式下只会编译比其对应的类文件更新的源文件,即自上次编译以来发生了变化的源文件。这不会重新编译使用了已更改类的其他类,可能会导致这些类中保留对不再存在的方法的引用,从而在运行时产生错误。”

总结api被其他项目依赖,service不被其他项目依赖。添加-pl参数删除-U命令关闭增量构建 。添加 piler.useIncrementalCompilation=false

现在统一取消-U命令,并且关闭增量构建

mvn  clean  package install deploy -T4C -Dmaven.test.skip=true -Dmaven.compiler.useIncrementalCompilation=false -pl api
mvn  clean  package  -T4C -Dmaven.test.skip=true -Dmaven.compiler.useIncrementalCompilation=false -pl service 

构建现在只需要2分钟

观察日志,阅读文档,调整参数。

参考资料

maven-fast-build