今天有人问maven增量编译的事情, 思考了一下, 有下面心得:
1. Maven缺省的就是增量编译.
2. Java的项目通常正式的build不能用增量编译, 原因很简单, maven和ant都不支持"减量编译": 如果删除.java文件, 编译结果.class文件将不会被删除, 而java支持运行期动态加载, 这样被删除的文件的class也可能在运行时被使用, 结果可能是灾难性的. 所以我们的build都是用"mvn clean install", 先清除再编译. 不过如果确定没有删除文件或者被删除文件的.class文件不会被使用, 我个人觉得可以用增量编译(mvn install).
3. 如果想加快编译, 可以考虑这几个方面:
1) 忽略maven生命周期中的某些阶段。比如:mvn install -Dmaven.test.skip=true 跳过TestCase检验,否则在install时会运行TestCase测试;
2) 修改pom文件来删减maven plugin的执行。 比如从pom中去掉打source jar的plugin, 这样最后build的结果不包含源代码。
3) 冒险用增量编译。 过去一年里我们项目影响增量编译的删掉的文件大概10多个,主要源于需求变化和代码重构。和一年365天相比,这个概率还是比较低的。
分享到:
相关推荐
之前用maven开发,每修改一次代码都需要重新编译发布一次,于是后面我用了jrebel实现热编译,这样开发就方便了很多,后面开发都只需要编译一次,有代码或者页面改动,都会自动去编译,不用maven再重新编译发布一次,...
Maven的增量构建 如果未检测到更改,此Maven扩展可以跳过模块的整个执行。 重要限制和假设 需要Maven 3.1.2+ incr-build并不关心Maven生命周期阶段。 它在mvn clean和mvn validate之间没有区别。 这使得incr-build...
增量 Maven 编译 样本输出 [INFO] --- takari-lifecycle-plugin:1.10.2:compile (default-compile) @ maven-incremental-compilation --- [INFO] Performing incremental build [INFO] Compiling 2 sources to /...
增量编译 svnkit接口(svn操作web接口) 全流程使用案例 [toc] 说在最前面的话 本人只是一枚从事运维6年的老兵,从今年年初一直在构建自动化运维平台,从持续交互着手,流程最开始的就是代码的抽包编译(这里说的java)...
增量编译器 支持增量构建的Java代码编译器
Libsass Maven插件使用编译sass文件。 使用与C库进行接口。 变更日志: 0.2.10-将libsass升级到3.5.3 0.2.9-将libsass升级到3.4.7 刷新输出文件以进行Eclipse 带有失败文件的增强的错误输出-感谢@...
Scalor Maven插件 为Java,Scala,Scala.macro,Scala.js,Scala.native,Eclipse和Maven构建集成器。 安装 生产发布 开发发布 适用于Scala IDE 4.7的Scalor插件1.X 相似的插件 入门 设置 建立并研究 插件功能 ...
2、反向移植Scala增量编译修复 3、反向移植j组更新以解决CVE问题-2022-36033 4、反向移植JUnit5动态测试日志错误修复 5、依赖图解析:等价排除会导致不必要的图突变[backport 7.x] 6、将“失败后使用编译器API数据...
Gradle团队很兴奋地宣布Gradle 7.6.4。 此版本解决了安全漏洞: Apache Ant不安全临时文件漏洞...2、当类路径包含带有Java 21类的多版本jar时,Gradle 7.6.3无法进行增量编译 并包含Jackson和Maven依赖项的版本更新。
增量编译a-la-sbt-保存Java / scala文件将重新触发测试。 去做: 添加用于Scala的测试框架(ScalaTest,Specs2,ScalaCheck) 用法: 首先运行Maven目标以解决插件: mvn clean install 要连续运行Surefire和/...
Gradle 7.3.2 现已发布。Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具,支持依赖管理和多项目,类似 Maven,但比之简单轻便。...#19257 使用 $ 字符重命名类名时增量 java 编译失败
根据代码提交路径列表自动生成补丁包文件,支持普通WEB项目和maven项目的代码提交路径等。
将incap库添加到您的编译时依赖项中,并将incap-processor到您的注释处理器路径中: 与Gradle dependencies { compileOnly( " net.ltgt.gradle.incap:incap: ${ incap.version } " ) annotationProcessor( " ...
Kotlin语言服务器 一种,为提供智能代码完成,诊断,悬停,文档符号,定义查找,方法签名帮助等。 支持任何符合LSP的编辑器,包括和 。 入门 有关构建说明,请参见 ... 在表达式级别获取增量编译会更加复杂: