今天有人问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再重新编译发布一次,...
如果你使用的是IDE,如IntelliJ IDEA或Eclipse,它们通常有内置的Maven支持,可以配置成使用IDE的构建优化功能,比如增量编译。 通过以上这些策略,可以显著提升Maven多模块项目的编译速度,使开发流程更加流畅...
Maven的增量构建 如果未检测到更改,此Maven扩展可以跳过模块的整个执行。 重要限制和假设 需要Maven 3.1.2+ incr-build并不关心Maven生命周期阶段。 它在mvn clean和mvn validate之间没有区别。 这使得incr-build...
Java的增量编译通常与构建工具如Maven、Gradle或IntelliJ IDEA等集成。这些工具通过识别源代码的改动,确定需要重新编译的部分,然后仅执行必要的编译任务。这样,开发人员可以更快地获得反馈,提高工作效率。 ...
【自动打包】:自动打包是指通过脚本或工具自动化执行构建过程,将源代码编译、测试并通过打包工具(如Maven的`mvn package`命令)生成可部署的文件(如JAR、WAR)。这大大减少了手动操作的时间,降低了错误率,尤其...
增量 Maven 编译 样本输出 [INFO] --- takari-lifecycle-plugin:1.10.2:compile (default-compile) @ maven-incremental-compilation --- [INFO] Performing incremental build [INFO] Compiling 2 sources to /...
此外,Eclipse还可以自动根据POM.xml配置进行增量编译。 **5. 依赖管理** Maven的依赖管理功能在Eclipse中得到体现,开发人员可以通过Maven仓库自动下载项目所需的库文件。Eclipse的“Dependency Hierarchy”视图...
本文将详细探讨如何通过Shell脚本和Git实现基于Maven的Java项目的增量部署。 首先,让我们理解核心组件的作用: 1. **Git**:这是一个分布式版本控制系统,用于跟踪对代码库的修改。在增量部署过程中,Git帮助我们...
maven-shared-incremental-javadoc-1.1-6.el7.x64-86.rpm.tar.gz压缩包为用户提供了Maven增量编译特性的javadoc生成工具,通过rpm格式的软件包和readme文件说明来帮助用户安装和使用该工具。该工具能够提升大型Java...
3. **构建与清理**:通过右键菜单,开发者可以执行`mvn install`、`mvn clean`等命令,实现编译、测试、打包、部署等构建流程,同时支持增量构建,提高开发效率。 4. **生命周期与构建阶段**:Maven定义了一套标准...
Maven插件则是Maven生态系统中的一个重要组成部分,它们提供了各种功能,例如编译、测试、打包、部署等。在本场景中,我们关注的是"Maven代码生成"插件,特别是"MyBatis Generator"。 MyBatis Generator(MBG)是一...
- **增量编译**:通过智能地识别修改过的源文件,2.3.2版本可以实现增量编译,提高构建效率。 3. 使用示例 在pom.xml文件中,我们可以这样配置Maven Compiler Plugin 2.3.2: ```xml <groupId>org.apache....
增量编译 svnkit接口(svn操作web接口) 全流程使用案例 [toc] 说在最前面的话 本人只是一枚从事运维6年的老兵,从今年年初一直在构建自动化运维平台,从持续交互着手,流程最开始的就是代码的抽包编译(这里说的java)...
使用时用于增量构建多模块项目的Maven扩展。 与Git中的参考分支(例如Origin / develop)及其所有从属相比,构建或测试仅更改了Maven模块。 由。 此扩展不限于Git Flow设置! 为许多其他分支机构设置和/或用例提供...
- **构建过程**:执行编译、测试等操作,确保只有变动的文件被处理。 - **打包**:根据找出的改动,生成一个包含这些改动的增量包。这可能需要自定义脚本或者利用构建工具(如 Maven 或 Gradle)的特定功能。 5. ...
在编写代码时,Maven 会实时增量编译。 四、添加依赖 Jar 包 要添加依赖 Jar 包,需要按照以下步骤进行: 1. 右键点击“pom.xml”,然后选择“Maven”>“添加依赖”。 2. 在“添加依赖”对话框中,输入要导入的 ...
Libsass Maven插件使用编译sass文件。 使用与C库进行接口。 变更日志: 0.2.10-将libsass升级到3.5.3 0.2.9-将libsass升级到3.4.7 刷新输出文件以进行Eclipse 带有失败文件的增强的错误输出-感谢@...
- **生命周期管理**: Maven具有声明式的项目对象模型和可扩展的插件机制,可以方便地管理项目的构建生命周期,包括编译、测试、打包、部署等。 #### 配置Tomcat6服务器 - **服务器配置**: 文档中提到需要配置Tomcat...
- **版本管理**:Maven有自己的版本定义规则,包括主版本号、次版本号和增量版本号等。 - **构建支持**:Maven支持多种应用程序类型的构建,如JAR、WAR等,为每种类型提供了一套构建规则和工具集。 - **输出物管理**...
为了优化性能,可以考虑以下策略:只在保存文件时触发编译,或者启用增量编译,让MyEclipse仅编译修改过的部分,而非整个项目。 6. **与其他工具的集成** MyEclipse还可以与持续集成工具如Jenkins、Git等配合使用...